 combinators combinators.short-circuit combinators.smart fry
 generalizations generic.parser kernel kernel.private lexer
 libc macros make math math.order parser quotations sequences
-slots slots.private struct-arrays vectors words ;
+slots slots.private struct-arrays vectors words
+compiler.tree.propagation.transforms ;
 FROM: slots => reader-word writer-word ;
 IN: classes.struct
 

    } 2&& ;

: memory>struct ( ptr class -- struct )
    over c-ptr? [ swap \ c-ptr bad-slot-value ] unless
    tuple-layout <tuple> [ 2 set-slot ] keep ; inline

: malloc-struct ( class -- struct )
    [ heap-size malloc ] keep memory>struct ; inline

    c-type ;

PREDICATE: struct-class < tuple-class
    { [ \ struct subclass-of? ] [ all-slots length 1 = ] } 1&& ;

: struct-slots ( struct -- slots )
    "struct-slots" word-prop ;
