]> gitweb.factorcode.org Git - factor.git/commitdiff
alien.parser, alien.syntax: send ENUM: body to parse-enum
authorJoe Groff <arcata@gmail.com>
Tue, 13 Apr 2010 04:58:08 +0000 (21:58 -0700)
committerErik Charlebois <erikcharlebois@gmail.com>
Tue, 20 Apr 2010 03:07:17 +0000 (20:07 -0700)
basis/alien/parser/parser.factor
basis/alien/syntax/syntax.factor

index 952f7b64d99391966828e861c8b295f3a2bae90a..731cc4d6b559e8e39c30557a78989275d02f8fcf 100755 (executable)
@@ -78,14 +78,6 @@ M: pointer return-type-name to>> return-type-name CHAR: * suffix ;
 : next-enum-member ( members name value -- members value' )
     [ 2array suffix! ] [ 1 + ] bi ;
 
-PRIVATE>
-
-: define-enum-member ( name value -- )
-    [ create-in ] [ define-constant ] bi* ;
-
-: define-enum-members ( members -- )
-    [ first2 define-enum-member ] each ;
-
 : parse-enum-member ( members name value -- members value' )
     over "{" =
     [ 2drop scan scan-object next-enum-member "}" expect ]
@@ -95,8 +87,22 @@ PRIVATE>
     scan dup ";" = not
     [ swap parse-enum-member parse-enum-members ] [ 2drop ] if ;
 
+: define-enum-member ( name value -- )
+    [ create-in ] [ define-constant ] bi* ;
+
+: define-enum-members ( members -- )
+    [ first2 define-enum-member ] each ;
+
+PRIVATE>
+
+: parse-enum ( -- name members )
+    scan dup "f" =
+    [ drop f ]
+    [ (CREATE-C-TYPE) dup save-location ] if
+    V{ } clone 0 parse-enum-members ;
+
 : define-enum ( word members -- )
-    [ [ int swap typedef ] when ] [ define-enum-members ] bi* ;
+    [ [ int swap typedef ] when* ] [ define-enum-members ] bi* ;
 
 : scan-function-name ( -- return function )
     scan-c-type scan parse-pointers ;
index c69a9b8ebe4611e9b7982ff454830db0b8a40c2f..be137b1da8144c53285b63357e176caa67f412cd 100755 (executable)
@@ -29,10 +29,7 @@ SYNTAX: TYPEDEF:
     scan-c-type CREATE-C-TYPE dup save-location typedef ;
 
 SYNTAX: ENUM:
-    scan dup "f" =
-    [ drop f ]
-    [ (CREATE-C-TYPE) dup save-location ] if
-    V{ } clone 0 parse-enum-members define-enum ;
+    parse-enum define-enum ;
 
 SYNTAX: C-TYPE:
     void CREATE-C-TYPE typedef ;