alien.marshall.structs: generate struct constructors

db4
Jeremy Hughes 2009-07-09 10:35:18 +12:00
parent ac6c207de8
commit c4aabe2fb4
1 changed files with 9 additions and 0 deletions
basis/alien/marshall/structs

View File

@ -26,9 +26,18 @@ M: struct-wrapper dispose* underlying>> free ;
[ drop swap define-struct-getter ]
[ nip swap define-struct-setter ] 5 nbi ;
: define-struct-constructor ( class -- )
{
[ name>> "<" prepend ">" append create-in ]
[ '[ _ new ] ]
[ name>> '[ _ malloc-object >>underlying ] append ]
[ name>> 1array ]
} cleave { } swap <effect> define-declared ;
:: define-struct-tuple ( name -- )
name create-in :> class
class struct-wrapper { } define-tuple-class
class define-struct-constructor
name c-type fields>> [
class swap
{