]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/alien/syntax/syntax.factor
Change C-ENUM: to always take a type. Use f for anonymous enums. Update all uses.
[factor.git] / basis / alien / syntax / syntax.factor
index f7cff225c5a870caf24618ccbaf16ef3500e924d..00148a82d4db3e1b60e16486560480e1714ff712 100644 (file)
@@ -24,19 +24,11 @@ SYNTAX: CALLBACK:
 SYNTAX: TYPEDEF:
     scan-c-type CREATE-C-TYPE dup save-location typedef ;
 
-: define-enum-members ( counter -- )
-    scan dup ";" = not [
-        dup "{" =
-        [ 2drop scan create-in scan-word [ define-constant ] keep "}" expect ]
-        [ create-in swap [ define-constant ] keep ]
-        if 1 + define-enum-members
-    ] [ 2drop ] if ;
-
-SYNTAX: C-ENUM: 0 define-enum-members ;
-
-SYNTAX: C-TYPED-ENUM:
-    int CREATE-C-TYPE dup save-location typedef
-    0 define-enum-members ;
+SYNTAX: C-ENUM:
+    scan dup "f" =
+    [ drop ]
+    [ (CREATE-C-TYPE) dup save-location int swap typedef ] if
+    0 parse-enum-members ;
 
 SYNTAX: C-TYPE:
     void CREATE-C-TYPE typedef ;