don't use setter words from classes.struct boa>object, otherwise struct literals of classes in the current compilation unit won't compile

db4
Joe Groff 2009-08-18 10:26:45 -05:00
parent 4ea2820f2f
commit 600bf6bcdc
1 changed files with 7 additions and 7 deletions

View File

@ -44,13 +44,17 @@ MACRO: <struct-boa> ( class -- quot: ( ... -- struct ) )
] bi
] [ ] output>sequence ;
: pad-struct-slots ( slots class -- slots' class )
: pad-struct-slots ( values class -- values' class )
[ class-slots [ initial>> ] map over length tail append ] keep ;
: (writer-quot) ( slot -- quot )
[ class>> c-setter ]
[ offset>> [ >c-ptr ] swap suffix ] bi prepend ;
M: struct-class boa>object
swap pad-struct-slots
[ (struct) swap ] [ "struct-slots" word-prop ] bi
[ name>> setter-word execute( struct value -- struct ) ] 2each ;
[ (struct) ] [ "struct-slots" word-prop ] bi
[ [ (writer-quot) call( value struct -- ) ] with 2each ] curry keep ;
! Struct slot accessors
@ -59,10 +63,6 @@ M: struct-class reader-quot
[ class>> c-type-getter-boxer ]
[ offset>> [ >c-ptr ] swap suffix ] bi prepend ;
: (writer-quot) ( slot -- quot )
[ class>> c-setter ]
[ offset>> [ >c-ptr ] swap suffix ] bi prepend ;
M: struct-class writer-quot
nip (writer-quot) ;