 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

    [ unknown-gl-platform ]
} cond use-vocab >>

SYMBOL: +gl-function-number-counter+
SYMBOL: +gl-function-pointers+

: reset-gl-function-number-counter ( -- )
    0 +gl-function-number-counter+ set-global ;
: reset-gl-function-pointers ( -- )
    100 <hashtable> +gl-function-pointers+ set-global ;
    

: indirect-quot ( function-ptr-quot return types abi -- quot )
    '[ @  _ _ _ alien-indirect ] ;

:: define-indirect ( abi return function-name function-ptr-quot types names -- )
    function-name create-in dup reset-generic
    function-ptr-quot return types abi indirect-quot
    names return function-effect
    define-declared ;

SYNTAX: GL-FUNCTION:
    gl-function-calling-convention
    scan-function-name
    "{" expect "}" parse-tokens over prefix
    gl-function-counter '[ _ _ gl-function-pointer ]
    ";" scan-c-args define-indirect ;
