use word-props instead of singletons for enum>number conversion so there's not a big fat generic making the image buy another plane ticket
parent
4c7ab0e9a3
commit
e5c65b2204
|
@ -1,6 +1,6 @@
|
||||||
! (c)2010 Joe Groff, Erik Charlebois bsd license
|
! (c)2010 Joe Groff, Erik Charlebois bsd license
|
||||||
USING: accessors alien.c-types arrays classes.singleton combinators
|
USING: accessors alien.c-types arrays combinators delegate fry
|
||||||
delegate fry generic.parser kernel macros math parser sequences words ;
|
generic.parser kernel macros math parser sequences words words.symbol ;
|
||||||
IN: alien.enums
|
IN: alien.enums
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
@ -12,6 +12,7 @@ PRIVATE>
|
||||||
|
|
||||||
GENERIC: enum>number ( enum -- number ) foldable
|
GENERIC: enum>number ( enum -- number ) foldable
|
||||||
M: integer enum>number ;
|
M: integer enum>number ;
|
||||||
|
M: symbol enum>number "enum-value" word-prop ;
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
: enum-boxer ( members -- quot )
|
: enum-boxer ( members -- quot )
|
||||||
|
@ -30,14 +31,13 @@ M: enum-c-type c-type-setter
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
|
||||||
: define-enum>number ( class value -- )
|
: define-enum-value ( class value -- )
|
||||||
[ \ enum>number create-method-in ]
|
"enum-value" set-word-prop ;
|
||||||
[ '[ drop _ ] ] bi* define ;
|
|
||||||
|
|
||||||
: define-enum-members ( member-names -- )
|
: define-enum-members ( member-names -- )
|
||||||
[
|
[
|
||||||
[ first define-singleton-class ]
|
[ first define-symbol ]
|
||||||
[ first2 define-enum>number ] bi
|
[ first2 define-enum-value ] bi
|
||||||
] each ;
|
] each ;
|
||||||
|
|
||||||
: define-enum-constructor ( word -- )
|
: define-enum-constructor ( word -- )
|
||||||
|
|
Loading…
Reference in New Issue