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

db4
Joe Groff 2010-04-21 22:22:06 -07:00
parent 4c7ab0e9a3
commit e5c65b2204
1 changed files with 7 additions and 7 deletions

View File

@ -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 -- )