update old slot accessors to new accessors
parent
c231faf6d8
commit
9760f3dc58
|
@ -1,13 +1,13 @@
|
|||
IN: alien.structs
|
||||
USING: alien.c-types strings help.markup help.syntax
|
||||
alien.syntax sequences io arrays slots.deprecated
|
||||
kernel words slots assocs namespaces ;
|
||||
kernel words slots assocs namespaces accessors ;
|
||||
|
||||
! Deprecated code
|
||||
: ($spec-reader-values) ( slot-spec class -- element )
|
||||
dup ?word-name swap 2array
|
||||
over slot-spec-name
|
||||
rot slot-spec-class 2array 2array
|
||||
over name>>
|
||||
rot class>> 2array 2array
|
||||
[ { $instance } swap suffix ] assoc-map ;
|
||||
|
||||
: $spec-reader-values ( slot-spec class -- )
|
||||
|
@ -16,14 +16,14 @@ kernel words slots assocs namespaces ;
|
|||
: $spec-reader-description ( slot-spec class -- )
|
||||
[
|
||||
"Outputs the value stored in the " ,
|
||||
{ $snippet } rot slot-spec-name suffix ,
|
||||
{ $snippet } rot name>> suffix ,
|
||||
" slot of " ,
|
||||
{ $instance } swap suffix ,
|
||||
" instance." ,
|
||||
] { } make $description ;
|
||||
|
||||
: slot-of-reader ( reader specs -- spec/f )
|
||||
[ slot-spec-reader eq? ] with find nip ;
|
||||
[ reader>> eq? ] with find nip ;
|
||||
|
||||
: $spec-reader ( reader slot-specs class -- )
|
||||
>r slot-of-reader r>
|
||||
|
@ -46,14 +46,14 @@ M: word slot-specs "slots" word-prop ;
|
|||
: $spec-writer-description ( slot-spec class -- )
|
||||
[
|
||||
"Stores a new value to the " ,
|
||||
{ $snippet } rot slot-spec-name suffix ,
|
||||
{ $snippet } rot name>> suffix ,
|
||||
" slot of " ,
|
||||
{ $instance } swap suffix ,
|
||||
" instance." ,
|
||||
] { } make $description ;
|
||||
|
||||
: slot-of-writer ( writer specs -- spec/f )
|
||||
[ slot-spec-writer eq? ] with find nip ;
|
||||
[ writer>> eq? ] with find nip ;
|
||||
|
||||
: $spec-writer ( writer slot-specs class -- )
|
||||
>r slot-of-writer r>
|
||||
|
|
|
@ -11,17 +11,17 @@ IN: alien.structs
|
|||
: struct-offsets ( specs -- size )
|
||||
0 [
|
||||
[ class>> align-offset ] keep
|
||||
[ set-slot-spec-offset ] 2keep
|
||||
[ (>>offset) ] 2keep
|
||||
class>> heap-size +
|
||||
] reduce ;
|
||||
|
||||
: define-struct-slot-word ( spec word quot -- )
|
||||
rot slot-spec-offset prefix define-inline ;
|
||||
rot offset>> prefix define-inline ;
|
||||
|
||||
: define-getter ( type spec -- )
|
||||
[ set-reader-props ] keep
|
||||
[ ]
|
||||
[ slot-spec-reader ]
|
||||
[ reader>> ]
|
||||
[
|
||||
class>>
|
||||
[ c-getter ] [ c-type c-type-boxer-quot ] bi append
|
||||
|
@ -31,7 +31,7 @@ IN: alien.structs
|
|||
: define-setter ( type spec -- )
|
||||
[ set-writer-props ] keep
|
||||
[ ]
|
||||
[ slot-spec-writer ]
|
||||
[ writer>> ]
|
||||
[ class>> c-setter ] tri
|
||||
define-struct-slot-word ;
|
||||
|
||||
|
|
|
@ -6,15 +6,15 @@ classes slots.private combinators slots ;
|
|||
IN: slots.deprecated
|
||||
|
||||
: reader-effect ( class spec -- effect )
|
||||
>r ?word-name 1array r> slot-spec-name 1array <effect> ;
|
||||
>r ?word-name 1array r> name>> 1array <effect> ;
|
||||
|
||||
PREDICATE: slot-reader < word "reading" word-prop >boolean ;
|
||||
|
||||
: set-reader-props ( class spec -- )
|
||||
2dup reader-effect
|
||||
over slot-spec-reader
|
||||
over reader>>
|
||||
swap "declared-effect" set-word-prop
|
||||
slot-spec-reader swap "reading" set-word-prop ;
|
||||
reader>> swap "reading" set-word-prop ;
|
||||
|
||||
: define-slot-word ( class word quot -- )
|
||||
[
|
||||
|
@ -23,9 +23,9 @@ PREDICATE: slot-reader < word "reading" word-prop >boolean ;
|
|||
] dip define ;
|
||||
|
||||
: define-reader ( class spec -- )
|
||||
dup slot-spec-reader [
|
||||
dup reader>> [
|
||||
[ set-reader-props ] 2keep
|
||||
dup slot-spec-reader
|
||||
dup reader>>
|
||||
swap reader-quot
|
||||
define-slot-word
|
||||
] [
|
||||
|
@ -33,20 +33,20 @@ PREDICATE: slot-reader < word "reading" word-prop >boolean ;
|
|||
] if ;
|
||||
|
||||
: writer-effect ( class spec -- effect )
|
||||
slot-spec-name swap ?word-name 2array 0 <effect> ;
|
||||
name>> swap ?word-name 2array 0 <effect> ;
|
||||
|
||||
PREDICATE: slot-writer < word "writing" word-prop >boolean ;
|
||||
|
||||
: set-writer-props ( class spec -- )
|
||||
2dup writer-effect
|
||||
over slot-spec-writer
|
||||
over writer>>
|
||||
swap "declared-effect" set-word-prop
|
||||
slot-spec-writer swap "writing" set-word-prop ;
|
||||
writer>> swap "writing" set-word-prop ;
|
||||
|
||||
: define-writer ( class spec -- )
|
||||
dup slot-spec-writer [
|
||||
dup writer>> [
|
||||
[ set-writer-props ] 2keep
|
||||
dup slot-spec-writer
|
||||
dup writer>>
|
||||
swap writer-quot
|
||||
define-slot-word
|
||||
] [
|
||||
|
|
Loading…
Reference in New Issue