[ drop \ STRUCT: ] if ;
: struct>assoc ( struct -- assoc )
- [ class struct-slots ] [ struct-slot-values ] bi zip filter-tuple-assoc ;
+ [ class struct-slots ] [ struct-slot-values ] bi zip ;
: pprint-struct-slot ( slot -- )
<flow \ { pprint-word
PREDICATE: struct-class < tuple-class
{ [ \ struct subclass-of? ] [ all-slots length 1 = ] } 1&& ;
-: struct-slots ( struct -- slots )
+: struct-slots ( struct-class -- slots )
"struct-slots" word-prop ;
! struct allocation
! Copyright (C) 2007, 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: assocs hashtables kernel sequences generic words
-arrays classes slots slots.private classes.tuple
-classes.tuple.private math vectors quotations accessors
-combinators ;
+USING: accessors arrays assocs classes classes.struct
+classes.struct.prettyprint.private classes.tuple
+classes.tuple.private combinators generic hashtables kernel
+math quotations sequences slots slots.private vectors words ;
IN: mirrors
TUPLE: mirror { object read-only } ;
M: vector make-mirror <enum> ;
M: quotation make-mirror <enum> ;
M: object make-mirror <mirror> ;
+M: struct make-mirror struct>assoc [ [ class>> ] dip ] assoc-map ;