     c-type ;
 
 PREDICATE: struct-class < tuple-class
-    \ struct subclass-of? ;
+    { [ \ struct subclass-of? ] [ all-slots length 1 = ] } 1&& ;
 
 : struct-slots ( struct -- slots )
     "struct-slots" word-prop ;

    } 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

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
compiler.tree.propagation.transforms ;
FROM: slots => reader-word writer-word ;
IN: classes.struct

