]> gitweb.factorcode.org Git - factor.git/commitdiff
Revert "Revert "alien: better resetting and forgetting.""
authorJohn Benediktsson <mrjbq7@gmail.com>
Wed, 12 Jan 2022 04:41:52 +0000 (20:41 -0800)
committerJohn Benediktsson <mrjbq7@gmail.com>
Wed, 12 Jan 2022 04:41:52 +0000 (20:41 -0800)
This reverts commit fad89ad3832bc08e06a648ca73911bb010067770.

basis/alien/c-types/c-types.factor
basis/alien/enums/enums.factor

index 4c919cd525f3f63271b77abfd1ae1d7f0d082d3d..905dfbe0de3cb2d0ca790630f0b5ef6dc542566f 100644 (file)
@@ -47,6 +47,9 @@ GENERIC: lookup-c-type ( name -- c-type ) foldable
 PREDICATE: c-type-word < word
     "c-type" word-prop >boolean ;
 
+M: c-type-word reset-word
+    [ call-next-method ] [ "c-type" remove-word-prop ] bi ;
+
 TUPLE: pointer { to initial: void read-only } ;
 C: <pointer> pointer
 
index 7a7bbb0d43996561941c289695b71029937a0669..b797ac8f000e7ce0b1a0e149cb6cf66211783738 100644 (file)
@@ -33,6 +33,11 @@ M: enum-c-type c-type-setter
 : define-enum-value ( class value -- )
     enum>number "enum-value" set-word-prop ;
 
+PREDICATE: enum-value < word "enum-value" word-prop >boolean ;
+
+M: enum-value reset-word
+    [ call-next-method ] [ "enum-value" remove-word-prop ] bi ;
+
 <PRIVATE
 
 : define-enum-members ( members -- )
@@ -56,8 +61,11 @@ PRIVATE>
 PREDICATE: enum-c-type-word < c-type-word
     "c-type" word-prop enum-c-type? ;
 
+M: enum-c-type-word subwords
+    lookup-c-type members>> keys ;
+
 : enum>values ( enum -- seq )
-    "c-type" word-prop members>> values ;
+    lookup-c-type members>> values ;
 
 : enum>keys ( enum -- seq )
-    "c-type" word-prop members>> keys [ name>> ] map ;
+    lookup-c-type members>> keys [ name>> ] map ;