]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/alien/parser/parser.factor
Create a setter for C-GLOBAL words
[factor.git] / basis / alien / parser / parser.factor
index 32caee214ffd69a252cd978c3c2e845f6ae2b824..6d0cbb79cc7f23d099939e500f3b5fcc638fcfa1 100755 (executable)
@@ -179,5 +179,16 @@ PREDICATE: alien-callback-type-word < typedef-word
     swap [ name>> current-library get ] dip
     '[ _ _ address-of 0 _ alien-value ] ;
 
-: define-global ( type word -- )
+: set-global-quot ( type word -- quot )
+    swap [ name>> current-library get ] dip
+    '[ _ _ address-of 0 _ set-alien-value ] ;
+
+: define-global-getter ( type word -- )
     [ nip ] [ global-quot ] 2bi (( -- value )) define-declared ;
+
+: define-global-setter ( type word -- )
+    [ nip name>> "set-" prepend create-in ]
+    [ set-global-quot ] 2bi (( obj -- )) define-declared ;
+
+: define-global ( type word -- )
+    [ define-global-getter ] [ define-global-setter ] 2bi ;