]> gitweb.factorcode.org Git - factor.git/commitdiff
use word-props instead of singletons for enum>number conversion so there's not a...
authorJoe Groff <arcata@gmail.com>
Thu, 22 Apr 2010 05:22:06 +0000 (22:22 -0700)
committerJoe Groff <arcata@gmail.com>
Thu, 22 Apr 2010 05:22:06 +0000 (22:22 -0700)
basis/alien/enums/enums.factor

index d8c1a02c69b5cfc9a155911b411f895ba5151c13..18000105e7d0107a1bc7e750e9ed321a23b89d26 100644 (file)
@@ -1,6 +1,6 @@
 ! (c)2010 Joe Groff, Erik Charlebois bsd license
-USING: accessors alien.c-types arrays classes.singleton combinators
-delegate fry generic.parser kernel macros math parser sequences words ;
+USING: accessors alien.c-types arrays combinators delegate fry
+generic.parser kernel macros math parser sequences words words.symbol ;
 IN: alien.enums
 
 <PRIVATE
@@ -12,6 +12,7 @@ PRIVATE>
 
 GENERIC: enum>number ( enum -- number ) foldable
 M: integer enum>number ;
+M: symbol enum>number "enum-value" word-prop ;
 
 <PRIVATE
 : enum-boxer ( members -- quot )
@@ -30,14 +31,13 @@ M: enum-c-type c-type-setter
 
 <PRIVATE
 
-: define-enum>number ( class value -- )
-    [ \ enum>number create-method-in ]
-    [ '[ drop _ ] ] bi* define ;
+: define-enum-value ( class value -- )
+    "enum-value" set-word-prop ;
 
 : define-enum-members ( member-names -- )
     [
-        [ first define-singleton-class ]
-        [ first2 define-enum>number ] bi
+        [ first define-symbol ]
+        [ first2 define-enum-value ] bi
     ] each ;
 
 : define-enum-constructor ( word -- )