]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/alien/enums/enums.factor
factor: add newlines to .factor files
[factor.git] / basis / alien / enums / enums.factor
index 10ca2ba07008a0a209590b8a46609aa12d036880..e9f9d44ec645648a0afa140db5090494874390b8 100644 (file)
@@ -1,7 +1,7 @@
-! (c)2010 Joe Groff, Erik Charlebois bsd license
+! Copyright (C) 2010 Joe Groff, Erik Charlebois.
+! See http://factorcode.org/license.txt for BSD license.
 USING: accessors alien.c-types arrays assocs classes.singleton
-combinators delegate fry kernel macros math parser sequences
-words ;
+combinators delegate kernel math parser sequences words ;
 IN: alien.enums
 
 <PRIVATE
@@ -40,7 +40,7 @@ M: enum-c-type c-type-setter
 
 : define-enum-constructor ( word -- )
     [ name>> "<" ">" surround create-word-in ] keep
-    [ number>enum ] curry ( number -- enum ) define-inline ;
+    [ number>enum ] curry ( number -- enum ) define-declared ;
 
 PRIVATE>
 
@@ -55,3 +55,13 @@ PRIVATE>
 
 PREDICATE: enum-c-type-word < c-type-word
     "c-type" word-prop enum-c-type? ;
+
+: enum>values ( enum -- seq )
+    "c-type" word-prop members>> values ;
+
+: enum>keys ( enum -- seq )
+    "c-type" word-prop members>> keys [ name>> ] map ;
+
+: values>enum ( values enum -- seq )
+    '[ _ number>enum ] map ; inline
+