Related to #358.
GML: materialF ( e material -- ) material-f ;
GML: setcurrentmaterial ( material -- ) drop ;
-GML: getcurrentmaterial ( -- material ) "none" name ;
+GML: getcurrentmaterial ( -- material ) "none" >gml-name ;
GML: pushcurrentmaterial ( material -- ) drop ;
-GML: popcurrentmaterial ( -- material ) "none" name ;
+GML: popcurrentmaterial ( -- material ) "none" >gml-name ;
GML: getmaterialnames ( -- [material] ) { } ;
GML: setfacematerial ( e material -- ) material-f ;
-GML: getfacematerial ( e -- material ) drop "none" name ;
+GML: getfacematerial ( e -- material ) drop "none" >gml-name ;
GML: setsharpness ( sharp -- ) c-bool> set-sharpness ;
GML: getsharpness ( -- sharp ) get-sharpness >c-bool ;
ERROR: not-a-name object ;
-: check-name ( obj -- obj' ) dup name? [ not-a-name ] unless ; inline
+: check-name ( obj -- obj' ) dup gml-name? [ not-a-name ] unless ; inline
GML: def ( name value -- ) swap check-name pick current-dict set-at ;
GML: edef ( value name -- ) check-name pick current-dict set-at ;
ExecArray = '{' Token*:ts Spaces '}' => [[ ts parse-proc ]]
-LiteralName = '/' Name:n => [[ n name ]]
+LiteralName = '/' Name:n => [[ n >gml-name ]]
UseReg = "usereg" !(NameChar) => [[ <use-registers> ]]
ExecReg = ":" Name:n => [[ n <exec-register> ]]
WriteReg = "!" Name:n => [[ n <write-register> ]]
-ExecName = Name:n => [[ n exec-name ]]
+ExecName = Name:n => [[ n >gml-exec-name ]]
-PathNameComponent = "." Name:n => [[ n name ]]
+PathNameComponent = "." Name:n => [[ n >gml-name ]]
PathName = PathNameComponent+ => [[ <pathname> ]]
Token = Spaces
M: integer write-gml number>string write ;
M: float write-gml number>string write ;
M: string write-gml "\"" write write "\"" write ;
-M: name write-gml "/" write string>> write ;
-M: exec-name write-gml name>> string>> write ;
+M: gml-name write-gml "/" write string>> write ;
+M: gml-exec-name write-gml name>> string>> write ;
M: pathname write-gml names>> [ "." write string>> write ] each ;
M: use-registers write-gml drop "usereg" write ;
M: read-register write-gml ";" write name>> write ;
effects.parser gml.types ;
IN: gml.runtime
-TUPLE: name < identity-tuple { string read-only } ;
+TUPLE: gml-name < identity-tuple { string read-only } ;
-SYMBOL: names
+SYMBOL: gml-names
-names [ H{ } clone ] initialize
+gml-names [ H{ } clone ] initialize
-: name ( string -- name ) names get-global [ \ name boa ] cache ;
+: >gml-name ( string -- name ) gml-names get-global [ \ gml-name boa ] cache ;
TUPLE: gml { operand-stack vector } { dictionary-stack vector } ;
EXEC: proc array>> pick <proc> over push-operand ;
! Executable names
-TUPLE: exec-name < identity-tuple name ;
+TUPLE: gml-exec-name < identity-tuple name ;
-MEMO: exec-name ( string -- name ) name \ exec-name boa ;
+MEMO: >gml-exec-name ( string -- name ) >gml-name \ gml-exec-name boa ;
-SYNTAX: exec" lexer get skip-blank parse-string exec-name suffix! ;
+SYNTAX: exec" lexer get skip-blank parse-string >gml-exec-name suffix! ;
-ERROR: unbound-name { name name } ;
+ERROR: unbound-name { name gml-name } ;
: lookup-name ( name gml -- value )
dupd dictionary-stack>> assoc-stack
M: object exec-proc (exec) ;
-EXEC: exec-name name>> over lookup-name exec-proc ;
+EXEC: gml-exec-name name>> over lookup-name exec-proc ;
! Registers
ERROR: unbound-register name ;
registers gml ;
! List building and stuff
-TUPLE: marker < identity-tuple ;
-CONSTANT: marker T{ marker }
+TUPLE: gml-marker < identity-tuple ;
+CONSTANT: marker T{ gml-marker }
ERROR: no-marker-found ;
ERROR: gml-stack-underflow ;
global-dictionary [ H{ } clone ] initialize
: add-primitive ( word name -- )
- name global-dictionary get-global set-at ;
+ >gml-name global-dictionary get-global set-at ;
: define-gml-primitive ( word name effect def -- )
[ '[ _ add-primitive ] keep ]