update GL-FUNCTION: to use new FUNCTION: factors
							parent
							
								
									078ca0fa58
								
							
						
					
					
						commit
						9412fe8297
					
				| 
						 | 
				
			
			@ -11,11 +11,11 @@ ERROR: unknown-gl-platform ;
 | 
			
		|||
    [ unknown-gl-platform ]
 | 
			
		||||
} cond use-vocab >>
 | 
			
		||||
 | 
			
		||||
SYMBOL: +gl-function-number-counter+
 | 
			
		||||
SYMBOL: +gl-function-counter+
 | 
			
		||||
SYMBOL: +gl-function-pointers+
 | 
			
		||||
 | 
			
		||||
: reset-gl-function-number-counter ( -- )
 | 
			
		||||
    0 +gl-function-number-counter+ set-global ;
 | 
			
		||||
    0 +gl-function-counter+ set-global ;
 | 
			
		||||
: reset-gl-function-pointers ( -- )
 | 
			
		||||
    100 <hashtable> +gl-function-pointers+ set-global ;
 | 
			
		||||
    
 | 
			
		||||
| 
						 | 
				
			
			@ -23,9 +23,9 @@ SYMBOL: +gl-function-pointers+
 | 
			
		|||
reset-gl-function-pointers
 | 
			
		||||
reset-gl-function-number-counter
 | 
			
		||||
 | 
			
		||||
: gl-function-number ( -- n )
 | 
			
		||||
    +gl-function-number-counter+ get-global
 | 
			
		||||
    dup 1 + +gl-function-number-counter+ set-global ;
 | 
			
		||||
: gl-function-counter ( -- n )
 | 
			
		||||
    +gl-function-counter+ get-global
 | 
			
		||||
    dup 1 + +gl-function-counter+ set-global ;
 | 
			
		||||
 | 
			
		||||
: gl-function-pointer ( names n -- funptr )
 | 
			
		||||
    gl-function-context 2array dup +gl-function-pointers+ get-global at
 | 
			
		||||
| 
						 | 
				
			
			@ -41,18 +41,15 @@ reset-gl-function-number-counter
 | 
			
		|||
: indirect-quot ( function-ptr-quot return types abi -- quot )
 | 
			
		||||
    '[ @  _ _ _ alien-indirect ] ;
 | 
			
		||||
 | 
			
		||||
:: define-indirect ( abi return function-ptr-quot function-name parameters -- )
 | 
			
		||||
:: define-indirect ( abi return function-name function-ptr-quot types names -- )
 | 
			
		||||
    function-name create-in dup reset-generic
 | 
			
		||||
    function-ptr-quot return
 | 
			
		||||
    parameters return parse-arglist [ abi indirect-quot ] dip
 | 
			
		||||
    function-ptr-quot return types abi indirect-quot
 | 
			
		||||
    names return function-effect
 | 
			
		||||
    define-declared ;
 | 
			
		||||
 | 
			
		||||
SYNTAX: GL-FUNCTION:
 | 
			
		||||
    gl-function-calling-convention
 | 
			
		||||
    scan-c-type
 | 
			
		||||
    scan dup
 | 
			
		||||
    scan drop "}" parse-tokens swap prefix
 | 
			
		||||
    gl-function-number
 | 
			
		||||
    [ gl-function-pointer ] 2curry swap
 | 
			
		||||
    ";" parse-tokens [ "()" subseq? not ] filter
 | 
			
		||||
    define-indirect ;
 | 
			
		||||
    scan-function-name
 | 
			
		||||
    "{" expect "}" parse-tokens over prefix
 | 
			
		||||
    gl-function-counter '[ _ _ gl-function-pointer ]
 | 
			
		||||
    ";" scan-c-args define-indirect ;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue