fix up struct parsing/printing
parent
d99a126ca4
commit
4d95e5ef2e
|
@ -1,6 +1,7 @@
|
||||||
! (c)Joe Groff bsd license
|
! (c)Joe Groff bsd license
|
||||||
USING: classes.struct kernel prettyprint.backend prettyprint.custom
|
USING: accessors assocs classes classes.struct kernel math
|
||||||
prettyprint.sections see.private sequences words ;
|
prettyprint.backend prettyprint.custom prettyprint.sections
|
||||||
|
see.private sequences words ;
|
||||||
IN: classes.struct.prettyprint
|
IN: classes.struct.prettyprint
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
! (c)Joe Groff bsd license
|
! (c)Joe Groff bsd license
|
||||||
USING: accessors alien.c-types classes.c-types classes.struct
|
USING: accessors alien.c-types classes.c-types classes.struct
|
||||||
combinators kernel libc math tools.test ;
|
combinators io.streams.string kernel libc math namespaces
|
||||||
|
prettyprint prettyprint.config tools.test ;
|
||||||
IN: classes.struct.tests
|
IN: classes.struct.tests
|
||||||
|
|
||||||
STRUCT: foo
|
STRUCT: foo
|
||||||
|
@ -38,3 +39,10 @@ UNION-STRUCT: float-and-bits
|
||||||
[ 4 ] [ float-and-bits heap-size ] unit-test
|
[ 4 ] [ float-and-bits heap-size ] unit-test
|
||||||
|
|
||||||
[ ] [ foo malloc-struct free ] unit-test
|
[ ] [ foo malloc-struct free ] unit-test
|
||||||
|
|
||||||
|
[ "S{ foo { y 7654 } }" ]
|
||||||
|
[ f boa-tuples? [ foo <struct> 7654 >>y [ pprint ] with-string-writer ] with-variable ] unit-test
|
||||||
|
|
||||||
|
[ "S{ foo f 0 7654 f }" ]
|
||||||
|
[ t boa-tuples? [ foo <struct> 7654 >>y [ pprint ] with-string-writer ] with-variable ] unit-test
|
||||||
|
|
||||||
|
|
|
@ -3,8 +3,8 @@ USING: accessors alien alien.c-types byte-arrays classes
|
||||||
classes.c-types classes.parser classes.tuple
|
classes.c-types classes.parser classes.tuple
|
||||||
classes.tuple.parser classes.tuple.private combinators
|
classes.tuple.parser classes.tuple.private combinators
|
||||||
combinators.smart fry generalizations generic.parser kernel
|
combinators.smart fry generalizations generic.parser kernel
|
||||||
kernel.private libc macros make math math.order quotations
|
kernel.private libc macros make math math.order parser
|
||||||
sequences slots slots.private struct-arrays words ;
|
quotations sequences slots slots.private struct-arrays words ;
|
||||||
IN: classes.struct
|
IN: classes.struct
|
||||||
|
|
||||||
! struct class
|
! struct class
|
||||||
|
@ -15,7 +15,7 @@ TUPLE: struct
|
||||||
PREDICATE: struct-class < tuple-class
|
PREDICATE: struct-class < tuple-class
|
||||||
\ struct subclass-of? ;
|
\ struct subclass-of? ;
|
||||||
|
|
||||||
M: struct-class struct-slots
|
: struct-slots ( struct -- slots )
|
||||||
"struct-slots" word-prop ;
|
"struct-slots" word-prop ;
|
||||||
|
|
||||||
! struct allocation
|
! struct allocation
|
||||||
|
@ -48,7 +48,7 @@ MACRO: <struct-boa> ( class -- quot: ( ... -- struct ) )
|
||||||
] [ ] output>sequence ;
|
] [ ] output>sequence ;
|
||||||
|
|
||||||
: pad-struct-slots ( values class -- values' class )
|
: pad-struct-slots ( values class -- values' class )
|
||||||
[ class-slots [ initial>> ] map over length tail append ] keep ;
|
[ struct-slots [ initial>> ] map over length tail append ] keep ;
|
||||||
|
|
||||||
: (writer-quot) ( slot -- quot )
|
: (writer-quot) ( slot -- quot )
|
||||||
[ class>> c-setter ]
|
[ class>> c-setter ]
|
||||||
|
@ -136,7 +136,7 @@ M: struct-class direct-array-of
|
||||||
|
|
||||||
: (struct-word-props) ( class slots size align -- )
|
: (struct-word-props) ( class slots size align -- )
|
||||||
[
|
[
|
||||||
[ struct-slots ]
|
[ "struct-slots" set-word-prop ]
|
||||||
[ define-accessors ] 2bi
|
[ define-accessors ] 2bi
|
||||||
]
|
]
|
||||||
[ "struct-size" set-word-prop ]
|
[ "struct-size" set-word-prop ]
|
||||||
|
@ -174,4 +174,4 @@ USING: vocabs vocabs.loader ;
|
||||||
"prettyprint" vocab [ "classes.struct.prettyprint" require ] when
|
"prettyprint" vocab [ "classes.struct.prettyprint" require ] when
|
||||||
|
|
||||||
SYNTAX: S{
|
SYNTAX: S{
|
||||||
scan-word dup struct-slots parse-tuple-literal-slots ;
|
scan-word dup struct-slots parse-tuple-literal-slots parsed ;
|
||||||
|
|
Loading…
Reference in New Issue