summary refs log tree commit diff stats
path: root/lib/oldwrappers/opengl/glext.nim
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2011-05-02 00:01:50 +0200
committerAraq <rumpf_a@web.de>2011-05-02 00:01:50 +0200
commit4d5c3ebd468fa17a02a9abb9814c04e18baef309 (patch)
treec9e3aaac91fbc6c3d78315434f9438d3c0245d7c /lib/oldwrappers/opengl/glext.nim
parentfcabc0f9f46cbec1b9755110f29312c81d3a451a (diff)
downloadNim-4d5c3ebd468fa17a02a9abb9814c04e18baef309.tar.gz
little repo cleanup
Diffstat (limited to 'lib/oldwrappers/opengl/glext.nim')
-rwxr-xr-xlib/oldwrappers/opengl/glext.nim4175
1 files changed, 0 insertions, 4175 deletions
diff --git a/lib/oldwrappers/opengl/glext.nim b/lib/oldwrappers/opengl/glext.nim
deleted file mode 100755
index 0a2138584..000000000
--- a/lib/oldwrappers/opengl/glext.nim
+++ /dev/null
@@ -1,4175 +0,0 @@
-#
-#
-#  Adaption of the delphi3d.net OpenGL units to FreePascal
-#  Sebastian Guenther (sg@freepascal.org) in 2002
-#  These units are free to use
-#
-#
-
-#*************************************************
-# *        OpenGL extension loading library        *
-# * Generated by MetaGLext, written by Tom Nuydens *
-# *  (tom@delphi3d.net -- http://www.delphi3d.net  *
-# *************************************************
-#*** Generated on 10/11/2002
-
-when defined(windows):
-  {.push callconv: stdcall.}
-else:
-  {.push callconv: cdecl.}
-
-import
-  gl
-
-type 
-  GLcharARB* = Char
-  TGLcharARB* = GLcharARB
-  PGLcharARB* = ptr GLcharARB
-  GLhandleARB* = int
-  TGLhandleARB* = GLhandleARB
-  PGLhandleARB* = ptr GLhandleARB
-  GLintptr* = int
-  TGLintptr* = GLintptr
-  PGLintptr* = ptr GLintptr
-  GLsizeiptr* = int
-  TGLsizeiptr* = GLsizeiptr
-  PGLsizeiptr* = ptr GLsizeiptr
-  GLchar* = Char
-  TGLchar* = GLchar
-  PGLchar* = cstring          #***** GL_version_1_2 *****//
-
-const 
-  GL_UNSIGNED_BYTE_3_3_2* = 0x00008032
-  GL_UNSIGNED_SHORT_4_4_4_4* = 0x00008033
-  GL_UNSIGNED_SHORT_5_5_5_1* = 0x00008034
-  GL_UNSIGNED_INT_8_8_8_8* = 0x00008035
-  GL_UNSIGNED_INT_10_10_10_2* = 0x00008036
-  GL_RESCALE_NORMAL* = 0x0000803A
-  GL_UNSIGNED_BYTE_2_3_3_REV* = 0x00008362
-  GL_UNSIGNED_SHORT_5_6_5* = 0x00008363
-  GL_UNSIGNED_SHORT_5_6_5_REV* = 0x00008364
-  GL_UNSIGNED_SHORT_4_4_4_4_REV* = 0x00008365
-  GL_UNSIGNED_SHORT_1_5_5_5_REV* = 0x00008366
-  GL_UNSIGNED_INT_8_8_8_8_REV* = 0x00008367
-  GL_UNSIGNED_INT_2_10_10_10_REV* = 0x00008368
-  GL_BGR* = 0x000080E0
-  GL_BGRA* = 0x000080E1
-  GL_MAX_ELEMENTS_VERTICES* = 0x000080E8
-  GL_MAX_ELEMENTS_INDICES* = 0x000080E9
-  GL_CLAMP_TO_EDGE* = 0x0000812F
-  GL_TEXTURE_MIN_LOD* = 0x0000813A
-  GL_TEXTURE_MAX_LOD* = 0x0000813B
-  GL_TEXTURE_BASE_LEVEL* = 0x0000813C
-  GL_TEXTURE_MAX_LEVEL* = 0x0000813D
-  GL_LIGHT_MODEL_COLOR_CONTROL* = 0x000081F8
-  GL_SINGLE_COLOR* = 0x000081F9
-  GL_SEPARATE_SPECULAR_COLOR* = 0x000081FA
-  GL_SMOOTH_POINT_SIZE_RANGE* = 0x00000B12
-  GL_SMOOTH_POINT_SIZE_GRANULARITY* = 0x00000B13
-  GL_SMOOTH_LINE_WIDTH_RANGE* = 0x00000B22
-  GL_SMOOTH_LINE_WIDTH_GRANULARITY* = 0x00000B23
-  GL_ALIASED_POINT_SIZE_RANGE* = 0x0000846D
-  GL_ALIASED_LINE_WIDTH_RANGE* = 0x0000846E
-  GL_PACK_SKIP_IMAGES* = 0x0000806B
-  GL_PACK_IMAGE_HEIGHT* = 0x0000806C
-  GL_UNPACK_SKIP_IMAGES* = 0x0000806D
-  GL_UNPACK_IMAGE_HEIGHT* = 0x0000806E
-  GL_TEXTURE_3D* = 0x0000806F
-  GL_PROXY_TEXTURE_3D* = 0x00008070
-  GL_TEXTURE_DEPTH* = 0x00008071
-  GL_TEXTURE_WRAP_R* = 0x00008072
-  GL_MAX_3D_TEXTURE_SIZE* = 0x00008073
-
-proc glBlendColor*(red: TGLclampf, green: TGLclampf, blue: TGLclampf, 
-                   alpha: TGLclampf){.dynlib: dllname, importc.}
-proc glBlendEquation*(mode: TGLenum){.dynlib: dllname, importc.}
-proc glDrawRangeElements*(mode: TGLenum, start: TGLuint, theend: TGLuint, 
-                          count: TGLsizei, thetype: TGLenum, indices: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glColorTable*(target: TGLenum, internalformat: TGLenum, width: TGLsizei, 
-                   format: TGLenum, thetype: TGLenum, table: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glColorTableParameterfv*(target: TGLenum, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glColorTableParameteriv*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glCopyColorTable*(target: TGLenum, internalformat: TGLenum, x: TGLint, 
-                       y: TGLint, width: TGLsizei){.dynlib: dllname, importc.}
-proc glGetColorTable*(target: TGLenum, format: TGLenum, thetype: TGLenum, 
-                      table: PGLvoid){.dynlib: dllname, importc.}
-proc glGetColorTableParameterfv*(target: TGLenum, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetColorTableParameteriv*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glColorSubTable*(target: TGLenum, start: TGLsizei, count: TGLsizei, 
-                      format: TGLenum, thetype: TGLenum, data: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glCopyColorSubTable*(target: TGLenum, start: TGLsizei, x: TGLint, y: TGLint, 
-                          width: TGLsizei){.dynlib: dllname, importc.}
-proc glConvolutionFilter1D*(target: TGLenum, internalformat: TGLenum, 
-                            width: TGLsizei, format: TGLenum, thetype: TGLenum, 
-                            image: PGLvoid){.dynlib: dllname, importc.}
-proc glConvolutionFilter2D*(target: TGLenum, internalformat: TGLenum, 
-                            width: TGLsizei, height: TGLsizei, format: TGLenum, 
-                            thetype: TGLenum, image: PGLvoid){.dynlib: dllname, 
-    importc.}
-proc glConvolutionParameterf*(target: TGLenum, pname: TGLenum, params: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glConvolutionParameterfv*(target: TGLenum, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glConvolutionParameteri*(target: TGLenum, pname: TGLenum, params: TGLint){.
-    dynlib: dllname, importc.}
-proc glConvolutionParameteriv*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glCopyConvolutionFilter1D*(target: TGLenum, internalformat: TGLenum, 
-                                x: TGLint, y: TGLint, width: TGLsizei){.
-    dynlib: dllname, importc.}
-proc glCopyConvolutionFilter2D*(target: TGLenum, internalformat: TGLenum, 
-                                x: TGLint, y: TGLint, width: TGLsizei, 
-                                height: TGLsizei){.dynlib: dllname, importc.}
-proc glGetConvolutionFilter*(target: TGLenum, format: TGLenum, thetype: TGLenum, 
-                             image: PGLvoid){.dynlib: dllname, importc.}
-proc glGetConvolutionParameterfv*(target: TGLenum, pname: TGLenum, 
-                                  params: PGLfloat){.dynlib: dllname, importc.}
-proc glGetConvolutionParameteriv*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetSeparableFilter*(target: TGLenum, format: TGLenum, thetype: TGLenum, 
-                           row: PGLvoid, column: PGLvoid, span: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glSeparableFilter2D*(target: TGLenum, internalformat: TGLenum, 
-                          width: TGLsizei, height: TGLsizei, format: TGLenum, 
-                          thetype: TGLenum, row: PGLvoid, column: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glGetHistogram*(target: TGLenum, reset: TGLboolean, format: TGLenum, 
-                     thetype: TGLenum, values: PGLvoid){.dynlib: dllname, importc.}
-proc glGetHistogramParameterfv*(target: TGLenum, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetHistogramParameteriv*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetMinmax*(target: TGLenum, reset: TGLboolean, format: TGLenum, 
-                  thetype: TGLenum, values: PGLvoid){.dynlib: dllname, importc.}
-proc glGetMinmaxParameterfv*(target: TGLenum, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetMinmaxParameteriv*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glHistogram*(target: TGLenum, width: TGLsizei, internalformat: TGLenum, 
-                  sink: TGLboolean){.dynlib: dllname, importc.}
-proc glMinmax*(target: TGLenum, internalformat: TGLenum, sink: TGLboolean){.
-    dynlib: dllname, importc.}
-proc glResetHistogram*(target: TGLenum){.dynlib: dllname, importc.}
-proc glResetMinmax*(target: TGLenum){.dynlib: dllname, importc.}
-proc glTexImage3D*(target: TGLenum, level: TGLint, internalformat: TGLint, 
-                   width: TGLsizei, height: TGLsizei, depth: TGLsizei, 
-                   border: TGLint, format: TGLenum, thetype: TGLenum, 
-                   pixels: PGLvoid){.dynlib: dllname, importc.}
-proc glTexSubImage3D*(target: TGLenum, level: TGLint, xoffset: TGLint, 
-                      yoffset: TGLint, zoffset: TGLint, width: TGLsizei, 
-                      height: TGLsizei, depth: TGLsizei, format: TGLenum, 
-                      thetype: TGLenum, pixels: PGLvoid){.dynlib: dllname, 
-    importc.}
-proc glCopyTexSubImage3D*(target: TGLenum, level: TGLint, xoffset: TGLint, 
-                          yoffset: TGLint, zoffset: TGLint, x: TGLint, y: TGLint, 
-                          width: TGLsizei, height: TGLsizei){.dynlib: dllname, 
-    importc.}
-
-
-proc glActiveTextureARB*(texture: TGLenum){.dynlib: dllname, importc.}
-proc glClientActiveTextureARB*(texture: TGLenum){.dynlib: dllname, importc.}
-proc glMultiTexCoord1dARB*(target: TGLenum, s: TGLdouble){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord1dvARB*(target: TGLenum, v: PGLdouble){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord1fARB*(target: TGLenum, s: TGLfloat){.dynlib: dllname, importc.}
-proc glMultiTexCoord1fvARB*(target: TGLenum, v: PGLfloat){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord1iARB*(target: TGLenum, s: TGLint){.dynlib: dllname, importc.}
-proc glMultiTexCoord1ivARB*(target: TGLenum, v: PGLint){.dynlib: dllname, importc.}
-proc glMultiTexCoord1sARB*(target: TGLenum, s: TGLshort){.dynlib: dllname, importc.}
-proc glMultiTexCoord1svARB*(target: TGLenum, v: PGLshort){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord2dARB*(target: TGLenum, s: TGLdouble, t: TGLdouble){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord2dvARB*(target: TGLenum, v: PGLdouble){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord2fARB*(target: TGLenum, s: TGLfloat, t: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord2fvARB*(target: TGLenum, v: PGLfloat){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord2iARB*(target: TGLenum, s: TGLint, t: TGLint){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord2ivARB*(target: TGLenum, v: PGLint){.dynlib: dllname, importc.}
-proc glMultiTexCoord2sARB*(target: TGLenum, s: TGLshort, t: TGLshort){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord2svARB*(target: TGLenum, v: PGLshort){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord3dARB*(target: TGLenum, s: TGLdouble, t: TGLdouble, r: TGLdouble){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord3dvARB*(target: TGLenum, v: PGLdouble){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord3fARB*(target: TGLenum, s: TGLfloat, t: TGLfloat, r: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord3fvARB*(target: TGLenum, v: PGLfloat){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord3iARB*(target: TGLenum, s: TGLint, t: TGLint, r: TGLint){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord3ivARB*(target: TGLenum, v: PGLint){.dynlib: dllname, importc.}
-proc glMultiTexCoord3sARB*(target: TGLenum, s: TGLshort, t: TGLshort, r: TGLshort){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord3svARB*(target: TGLenum, v: PGLshort){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord4dARB*(target: TGLenum, s: TGLdouble, t: TGLdouble, 
-                           r: TGLdouble, q: TGLdouble){.dynlib: dllname, importc.}
-proc glMultiTexCoord4dvARB*(target: TGLenum, v: PGLdouble){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord4fARB*(target: TGLenum, s: TGLfloat, t: TGLfloat, r: TGLfloat, 
-                           q: TGLfloat){.dynlib: dllname, importc.}
-proc glMultiTexCoord4fvARB*(target: TGLenum, v: PGLfloat){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord4iARB*(target: TGLenum, s: TGLint, t: TGLint, r: TGLint, 
-                           q: TGLint){.dynlib: dllname, importc.}
-proc glMultiTexCoord4ivARB*(target: TGLenum, v: PGLint){.dynlib: dllname, importc.}
-proc glMultiTexCoord4sARB*(target: TGLenum, s: TGLshort, t: TGLshort, r: TGLshort, 
-                           q: TGLshort){.dynlib: dllname, importc.}
-proc glMultiTexCoord4svARB*(target: TGLenum, v: PGLshort){.dynlib: dllname, 
-    importc.}
-
-proc glSampleCoverageARB*(value: TGLclampf, invert: TGLboolean){.dynlib: dllname, 
-    importc.}
-  #***** GL_ARB_texture_env_add *****//
-
-
-proc glWeightbvARB*(size: TGLint, weights: PGLbyte){.dynlib: dllname, importc.}
-proc glWeightsvARB*(size: TGLint, weights: PGLshort){.dynlib: dllname, importc.}
-proc glWeightivARB*(size: TGLint, weights: PGLint){.dynlib: dllname, importc.}
-proc glWeightfvARB*(size: TGLint, weights: PGLfloat){.dynlib: dllname, importc.}
-proc glWeightdvARB*(size: TGLint, weights: PGLdouble){.dynlib: dllname, importc.}
-proc glWeightvARB*(size: TGLint, weights: PGLdouble){.dynlib: dllname, importc.}
-proc glWeightubvARB*(size: TGLint, weights: PGLubyte){.dynlib: dllname, importc.}
-proc glWeightusvARB*(size: TGLint, weights: PGLushort){.dynlib: dllname, importc.}
-proc glWeightuivARB*(size: TGLint, weights: PGLuint){.dynlib: dllname, importc.}
-proc glWeightPointerARB*(size: TGLint, thetype: TGLenum, stride: TGLsizei, 
-                         pointer: PGLvoid){.dynlib: dllname, importc.}
-proc glVertexBlendARB*(count: TGLint){.dynlib: dllname, importc.}
-
-
-
-proc glVertexAttrib1sARB*(index: TGLuint, x: TGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib1fARB*(index: TGLuint, x: TGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib1dARB*(index: TGLuint, x: TGLdouble){.dynlib: dllname, importc.}
-proc glVertexAttrib2sARB*(index: TGLuint, x: TGLshort, y: TGLshort){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib2fARB*(index: TGLuint, x: TGLfloat, y: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib2dARB*(index: TGLuint, x: TGLdouble, y: TGLdouble){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib3sARB*(index: TGLuint, x: TGLshort, y: TGLshort, z: TGLshort){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib3fARB*(index: TGLuint, x: TGLfloat, y: TGLfloat, z: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib3dARB*(index: TGLuint, x: TGLdouble, y: TGLdouble, z: TGLdouble){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib4sARB*(index: TGLuint, x: TGLshort, y: TGLshort, z: TGLshort, 
-                          w: TGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib4fARB*(index: TGLuint, x: TGLfloat, y: TGLfloat, z: TGLfloat, 
-                          w: TGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib4dARB*(index: TGLuint, x: TGLdouble, y: TGLdouble, z: TGLdouble, 
-                          w: TGLdouble){.dynlib: dllname, importc.}
-proc glVertexAttrib4NubARB*(index: TGLuint, x: TGLubyte, y: TGLubyte, z: TGLubyte, 
-                            w: TGLubyte){.dynlib: dllname, importc.}
-proc glVertexAttrib1svARB*(index: TGLuint, v: PGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib1fvARB*(index: TGLuint, v: PGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib1dvARB*(index: TGLuint, v: PGLdouble){.dynlib: dllname, 
-    importc.}
-proc glVertexAttrib2svARB*(index: TGLuint, v: PGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib2fvARB*(index: TGLuint, v: PGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib2dvARB*(index: TGLuint, v: PGLdouble){.dynlib: dllname, 
-    importc.}
-proc glVertexAttrib3svARB*(index: TGLuint, v: PGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib3fvARB*(index: TGLuint, v: PGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib3dvARB*(index: TGLuint, v: PGLdouble){.dynlib: dllname, 
-    importc.}
-proc glVertexAttrib4bvARB*(index: TGLuint, v: PGLbyte){.dynlib: dllname, importc.}
-proc glVertexAttrib4svARB*(index: TGLuint, v: PGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib4ivARB*(index: TGLuint, v: PGLint){.dynlib: dllname, importc.}
-proc glVertexAttrib4ubvARB*(index: TGLuint, v: PGLubyte){.dynlib: dllname, 
-    importc.}
-proc glVertexAttrib4usvARB*(index: TGLuint, v: PGLushort){.dynlib: dllname, 
-    importc.}
-proc glVertexAttrib4uivARB*(index: TGLuint, v: PGLuint){.dynlib: dllname, importc.}
-proc glVertexAttrib4fvARB*(index: TGLuint, v: PGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib4dvARB*(index: TGLuint, v: PGLdouble){.dynlib: dllname, 
-    importc.}
-proc glVertexAttrib4NbvARB*(index: TGLuint, v: PGLbyte){.dynlib: dllname, importc.}
-proc glVertexAttrib4NsvARB*(index: TGLuint, v: PGLshort){.dynlib: dllname, 
-    importc.}
-proc glVertexAttrib4NivARB*(index: TGLuint, v: PGLint){.dynlib: dllname, importc.}
-proc glVertexAttrib4NubvARB*(index: TGLuint, v: PGLubyte){.dynlib: dllname, 
-    importc.}
-proc glVertexAttrib4NusvARB*(index: TGLuint, v: PGLushort){.dynlib: dllname, 
-    importc.}
-proc glVertexAttrib4NuivARB*(index: TGLuint, v: PGLuint){.dynlib: dllname, 
-    importc.}
-proc glVertexAttribPointerARB*(index: TGLuint, size: TGLint, thetype: TGLenum, 
-                               normalized: TGLboolean, stride: TGLsizei, 
-                               pointer: PGLvoid){.dynlib: dllname, importc.}
-proc glEnableVertexAttribArrayARB*(index: TGLuint){.dynlib: dllname, importc.}
-proc glDisableVertexAttribArrayARB*(index: TGLuint){.dynlib: dllname, importc.}
-proc glProgramStringARB*(target: TGLenum, format: TGLenum, length: TGLsizei, 
-                         str: PGLvoid){.dynlib: dllname, importc.}
-proc glBindProgramARB*(target: TGLenum, theProgram: TGLuint){.dynlib: dllname, 
-    importc.}
-proc glDeleteProgramsARB*(n: TGLsizei, programs: PGLuint){.dynlib: dllname, 
-    importc.}
-proc glGenProgramsARB*(n: TGLsizei, programs: PGLuint){.dynlib: dllname, importc.}
-proc glProgramEnvParameter4dARB*(target: TGLenum, index: TGLuint, x: TGLdouble, 
-                                 y: TGLdouble, z: TGLdouble, w: TGLdouble){.
-    dynlib: dllname, importc.}
-proc glProgramEnvParameter4dvARB*(target: TGLenum, index: TGLuint, 
-                                  params: PGLdouble){.dynlib: dllname, importc.}
-proc glProgramEnvParameter4fARB*(target: TGLenum, index: TGLuint, x: TGLfloat, 
-                                 y: TGLfloat, z: TGLfloat, w: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glProgramEnvParameter4fvARB*(target: TGLenum, index: TGLuint, 
-                                  params: PGLfloat){.dynlib: dllname, importc.}
-proc glProgramLocalParameter4dARB*(target: TGLenum, index: TGLuint, x: TGLdouble, 
-                                   y: TGLdouble, z: TGLdouble, w: TGLdouble){.
-    dynlib: dllname, importc.}
-proc glProgramLocalParameter4dvARB*(target: TGLenum, index: TGLuint, 
-                                    params: PGLdouble){.dynlib: dllname, importc.}
-proc glProgramLocalParameter4fARB*(target: TGLenum, index: TGLuint, x: TGLfloat, 
-                                   y: TGLfloat, z: TGLfloat, w: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glProgramLocalParameter4fvARB*(target: TGLenum, index: TGLuint, 
-                                    params: PGLfloat){.dynlib: dllname, importc.}
-proc glGetProgramEnvParameterdvARB*(target: TGLenum, index: TGLuint, 
-                                    params: PGLdouble){.dynlib: dllname, importc.}
-proc glGetProgramEnvParameterfvARB*(target: TGLenum, index: TGLuint, 
-                                    params: PGLfloat){.dynlib: dllname, importc.}
-proc glGetProgramLocalParameterdvARB*(target: TGLenum, index: TGLuint, 
-                                      params: PGLdouble){.dynlib: dllname, 
-    importc.}
-proc glGetProgramLocalParameterfvARB*(target: TGLenum, index: TGLuint, 
-                                      params: PGLfloat){.dynlib: dllname, 
-    importc.}
-proc glGetProgramivARB*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetProgramStringARB*(target: TGLenum, pname: TGLenum, str: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glGetVertexAttribdvARB*(index: TGLuint, pname: TGLenum, params: PGLdouble){.
-    dynlib: dllname, importc.}
-proc glGetVertexAttribfvARB*(index: TGLuint, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetVertexAttribivARB*(index: TGLuint, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetVertexAttribPointervARB*(index: TGLuint, pname: TGLenum, 
-                                   pointer: PGLvoid){.dynlib: dllname, importc.}
-proc glIsProgramARB*(theProgram: TGLuint): TGLboolean{.dynlib: dllname, importc.}
-  #***** GL_ARB_window_pos *****//
-proc glWindowPos2dARB*(x: TGLdouble, y: TGLdouble){.dynlib: dllname, importc.}
-proc glWindowPos2fARB*(x: TGLfloat, y: TGLfloat){.dynlib: dllname, importc.}
-proc glWindowPos2iARB*(x: TGLint, y: TGLint){.dynlib: dllname, importc.}
-proc glWindowPos2sARB*(x: TGLshort, y: TGLshort){.dynlib: dllname, importc.}
-proc glWindowPos2dvARB*(p: PGLdouble){.dynlib: dllname, importc.}
-proc glWindowPos2fvARB*(p: PGLfloat){.dynlib: dllname, importc.}
-proc glWindowPos2ivARB*(p: PGLint){.dynlib: dllname, importc.}
-proc glWindowPos2svARB*(p: PGLshort){.dynlib: dllname, importc.}
-proc glWindowPos3dARB*(x: TGLdouble, y: TGLdouble, z: TGLdouble){.dynlib: dllname, 
-    importc.}
-proc glWindowPos3fARB*(x: TGLfloat, y: TGLfloat, z: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glWindowPos3iARB*(x: TGLint, y: TGLint, z: TGLint){.dynlib: dllname, importc.}
-proc glWindowPos3sARB*(x: TGLshort, y: TGLshort, z: TGLshort){.dynlib: dllname, 
-    importc.}
-proc glWindowPos3dvARB*(p: PGLdouble){.dynlib: dllname, importc.}
-proc glWindowPos3fvARB*(p: PGLfloat){.dynlib: dllname, importc.}
-proc glWindowPos3ivARB*(p: PGLint){.dynlib: dllname, importc.}
-proc glWindowPos3svARB*(p: PGLshort){.dynlib: dllname, importc.}
-
-
-
-proc glBlendEquationSeparate*(modeRGB: TGLenum, modeAlpha: TGLenum){.
-    dynlib: dllname, importc.}
-proc glDrawBuffers*(n: TGLsizei, bufs: PGLenum){.dynlib: dllname, importc.}
-proc glStencilOpSeparate*(face: TGLenum, sfail: TGLenum, dpfail: TGLenum, 
-                          dppass: TGLenum){.dynlib: dllname, importc.}
-proc glStencilFuncSeparate*(frontfunc: TGLenum, backfunc: TGLenum, theRef: TGLint, 
-                            mask: TGLuint){.dynlib: dllname, importc.}
-proc glStencilMaskSeparate*(face: TGLenum, mask: TGLuint){.dynlib: dllname, 
-    importc.}
-proc glAttachShader*(theProgram: TGLuint, shader: TGLuint){.dynlib: dllname, 
-    importc.}
-proc glBindAttribLocation*(theProgram: TGLuint, index: TGLuint, name: PGLchar){.
-    dynlib: dllname, importc.}
-proc glCompileShader*(shader: TGLuint){.dynlib: dllname, importc.}
-proc glCreateProgram*(): TGLuint{.dynlib: dllname, importc.}
-proc glCreateShader*(thetype: TGLenum): TGLuint{.dynlib: dllname, importc.}
-proc glDeleteProgram*(theProgram: TGLuint){.dynlib: dllname, importc.}
-proc glDeleteShader*(shader: TGLuint){.dynlib: dllname, importc.}
-proc glDetachShader*(theProgram: TGLuint, shader: TGLuint){.dynlib: dllname, 
-    importc.}
-proc glDisableVertexAttribArray*(index: TGLuint){.dynlib: dllname, importc.}
-proc glEnableVertexAttribArray*(index: TGLuint){.dynlib: dllname, importc.}
-proc glGetActiveAttrib*(theProgram: TGLuint, index: TGLuint, bufSize: TGLsizei, 
-                        len: PGLsizei, size: PGLint, thetype: PGLenum, 
-                        name: PGLchar){.dynlib: dllname, importc.}
-proc glGetActiveUniform*(theProgram: TGLuint, index: TGLuint, bufSize: TGLsizei, 
-                         len: PGLsizei, size: PGLint, thetype: PGLenum, 
-                         name: PGLchar){.dynlib: dllname, importc.}
-proc glGetAttachedShaders*(theProgram: TGLuint, maxCount: TGLsizei, 
-                           count: PGLsizei, obj: PGLuint){.dynlib: dllname, 
-    importc.}
-proc glGetAttribLocation*(theProgram: TGLuint, name: PGLchar): TGLint{.
-    dynlib: dllname, importc.}
-proc glGetProgramiv*(theProgram: TGLuint, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetProgramInfoLog*(theProgram: TGLuint, bufSize: TGLsizei, len: PGLsizei, 
-                          infoLog: PGLchar){.dynlib: dllname, importc.}
-proc glGetShaderiv*(shader: TGLuint, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetShaderInfoLog*(shader: TGLuint, bufSize: TGLsizei, len: PGLsizei, 
-                         infoLog: PGLchar){.dynlib: dllname, importc.}
-proc glGetShaderSource*(shader: TGLuint, bufSize: TGLsizei, len: PGLsizei, 
-                        source: PGLchar){.dynlib: dllname, importc.}
-proc glGetUniformLocation*(theProgram: TGLuint, name: PGLchar): TGLint{.
-    dynlib: dllname, importc.}
-proc glGetUniformfv*(theProgram: TGLuint, location: TGLint, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetUniformiv*(theProgram: TGLuint, location: TGLint, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetVertexAttribdv*(index: TGLuint, pname: TGLenum, params: PGLdouble){.
-    dynlib: dllname, importc.}
-proc glGetVertexAttribfv*(index: TGLuint, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetVertexAttribiv*(index: TGLuint, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetVertexAttribPointerv*(index: TGLuint, pname: TGLenum, pointer: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glIsProgram*(theProgram: TGLuint): TGLboolean{.dynlib: dllname, importc.}
-proc glIsShader*(shader: TGLuint): TGLboolean{.dynlib: dllname, importc.}
-proc glLinkProgram*(theProgram: TGLuint){.dynlib: dllname, importc.}
-proc glShaderSource*(shader: TGLuint, count: TGLsizei, str: PGLchar, len: PGLint){.
-    dynlib: dllname, importc.}
-proc glUseProgram*(theProgram: TGLuint){.dynlib: dllname, importc.}
-proc glUniform1f*(location: TGLint, v0: TGLfloat){.dynlib: dllname, importc.}
-proc glUniform2f*(location: TGLint, v0: TGLfloat, v1: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glUniform3f*(location: TGLint, v0: TGLfloat, v1: TGLfloat, v2: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glUniform4f*(location: TGLint, v0: TGLfloat, v1: TGLfloat, v2: TGLfloat, 
-                  v3: TGLfloat){.dynlib: dllname, importc.}
-proc glUniform1i*(location: TGLint, v0: TGLint){.dynlib: dllname, importc.}
-proc glUniform2i*(location: TGLint, v0: TGLint, v1: TGLint){.dynlib: dllname, 
-    importc.}
-proc glUniform3i*(location: TGLint, v0: TGLint, v1: TGLint, v2: TGLint){.
-    dynlib: dllname, importc.}
-proc glUniform4i*(location: TGLint, v0: TGLint, v1: TGLint, v2: TGLint, v3: TGLint){.
-    dynlib: dllname, importc.}
-proc glUniform1fv*(location: TGLint, count: TGLsizei, value: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glUniform2fv*(location: TGLint, count: TGLsizei, value: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glUniform3fv*(location: TGLint, count: TGLsizei, value: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glUniform4fv*(location: TGLint, count: TGLsizei, value: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glUniform1iv*(location: TGLint, count: TGLsizei, value: PGLint){.
-    dynlib: dllname, importc.}
-proc glUniform2iv*(location: TGLint, count: TGLsizei, value: PGLint){.
-    dynlib: dllname, importc.}
-proc glUniform3iv*(location: TGLint, count: TGLsizei, value: PGLint){.
-    dynlib: dllname, importc.}
-proc glUniform4iv*(location: TGLint, count: TGLsizei, value: PGLint){.
-    dynlib: dllname, importc.}
-proc glUniformMatrix2fv*(location: TGLint, count: TGLsizei, transpose: TGLboolean, 
-                         value: PGLfloat){.dynlib: dllname, importc.}
-proc glUniformMatrix3fv*(location: TGLint, count: TGLsizei, transpose: TGLboolean, 
-                         value: PGLfloat){.dynlib: dllname, importc.}
-proc glUniformMatrix4fv*(location: TGLint, count: TGLsizei, transpose: TGLboolean, 
-                         value: PGLfloat){.dynlib: dllname, importc.}
-proc glValidateProgram*(theProgram: TGLuint){.dynlib: dllname, importc.}
-proc glVertexAttrib1d*(index: TGLuint, x: TGLdouble){.dynlib: dllname, importc.}
-proc glVertexAttrib1dv*(index: TGLuint, v: PGLdouble){.dynlib: dllname, importc.}
-proc glVertexAttrib1f*(index: TGLuint, x: TGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib1fv*(index: TGLuint, v: PGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib1s*(index: TGLuint, x: TGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib1sv*(index: TGLuint, v: PGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib2d*(index: TGLuint, x: TGLdouble, y: TGLdouble){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib2dv*(index: TGLuint, v: PGLdouble){.dynlib: dllname, importc.}
-proc glVertexAttrib2f*(index: TGLuint, x: TGLfloat, y: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glVertexAttrib2fv*(index: TGLuint, v: PGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib2s*(index: TGLuint, x: TGLshort, y: TGLshort){.dynlib: dllname, 
-    importc.}
-proc glVertexAttrib2sv*(index: TGLuint, v: PGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib3d*(index: TGLuint, x: TGLdouble, y: TGLdouble, z: TGLdouble){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib3dv*(index: TGLuint, v: PGLdouble){.dynlib: dllname, importc.}
-proc glVertexAttrib3f*(index: TGLuint, x: TGLfloat, y: TGLfloat, z: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib3fv*(index: TGLuint, v: PGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib3s*(index: TGLuint, x: TGLshort, y: TGLshort, z: TGLshort){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib3sv*(index: TGLuint, v: PGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib4Nbv*(index: TGLuint, v: PGLbyte){.dynlib: dllname, importc.}
-proc glVertexAttrib4Niv*(index: TGLuint, v: PGLint){.dynlib: dllname, importc.}
-proc glVertexAttrib4Nsv*(index: TGLuint, v: PGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib4Nub*(index: TGLuint, x: TGLubyte, y: TGLubyte, z: TGLubyte, 
-                         w: TGLubyte){.dynlib: dllname, importc.}
-proc glVertexAttrib4Nubv*(index: TGLuint, v: PGLubyte){.dynlib: dllname, importc.}
-proc glVertexAttrib4Nuiv*(index: TGLuint, v: PGLuint){.dynlib: dllname, importc.}
-proc glVertexAttrib4Nusv*(index: TGLuint, v: PGLushort){.dynlib: dllname, importc.}
-proc glVertexAttrib4bv*(index: TGLuint, v: PGLbyte){.dynlib: dllname, importc.}
-proc glVertexAttrib4d*(index: TGLuint, x: TGLdouble, y: TGLdouble, z: TGLdouble, 
-                       w: TGLdouble){.dynlib: dllname, importc.}
-proc glVertexAttrib4dv*(index: TGLuint, v: PGLdouble){.dynlib: dllname, importc.}
-proc glVertexAttrib4f*(index: TGLuint, x: TGLfloat, y: TGLfloat, z: TGLfloat, 
-                       w: TGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib4fv*(index: TGLuint, v: PGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib4iv*(index: TGLuint, v: PGLint){.dynlib: dllname, importc.}
-proc glVertexAttrib4s*(index: TGLuint, x: TGLshort, y: TGLshort, z: TGLshort, 
-                       w: TGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib4sv*(index: TGLuint, v: PGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib4ubv*(index: TGLuint, v: PGLubyte){.dynlib: dllname, importc.}
-proc glVertexAttrib4uiv*(index: TGLuint, v: PGLuint){.dynlib: dllname, importc.}
-proc glVertexAttrib4usv*(index: TGLuint, v: PGLushort){.dynlib: dllname, importc.}
-proc glVertexAttribPointer*(index: TGLuint, size: TGLint, thetype: TGLenum, 
-                            normalized: TGLboolean, stride: TGLsizei, 
-                            pointer: PGLvoid){.dynlib: dllname, importc.}
-
-const 
-  GL_CONSTANT_COLOR* = 0x00008001
-  GL_ONE_MINUS_CONSTANT_COLOR* = 0x00008002
-  GL_CONSTANT_ALPHA* = 0x00008003
-  GL_ONE_MINUS_CONSTANT_ALPHA* = 0x00008004
-  constGL_BLEND_COLOR* = 0x00008005
-  GL_FUNC_ADD* = 0x00008006
-  GL_MIN* = 0x00008007
-  GL_MAX* = 0x00008008
-  constGL_BLEND_EQUATION* = 0x00008009
-  GL_FUNC_SUBTRACT* = 0x0000800A
-  GL_FUNC_REVERSE_SUBTRACT* = 0x0000800B
-  GL_CONVOLUTION_1D* = 0x00008010
-  GL_CONVOLUTION_2D* = 0x00008011
-  GL_SEPARABLE_2D* = 0x00008012
-  GL_CONVOLUTION_BORDER_MODE* = 0x00008013
-  GL_CONVOLUTION_FILTER_SCALE* = 0x00008014
-  GL_CONVOLUTION_FILTER_BIAS* = 0x00008015
-  GL_REDUCE* = 0x00008016
-  GL_CONVOLUTION_FORMAT* = 0x00008017
-  GL_CONVOLUTION_WIDTH* = 0x00008018
-  GL_CONVOLUTION_HEIGHT* = 0x00008019
-  GL_MAX_CONVOLUTION_WIDTH* = 0x0000801A
-  GL_MAX_CONVOLUTION_HEIGHT* = 0x0000801B
-  GL_POST_CONVOLUTION_RED_SCALE* = 0x0000801C
-  GL_POST_CONVOLUTION_GREEN_SCALE* = 0x0000801D
-  GL_POST_CONVOLUTION_BLUE_SCALE* = 0x0000801E
-  GL_POST_CONVOLUTION_ALPHA_SCALE* = 0x0000801F
-  GL_POST_CONVOLUTION_RED_BIAS* = 0x00008020
-  GL_POST_CONVOLUTION_GREEN_BIAS* = 0x00008021
-  GL_POST_CONVOLUTION_BLUE_BIAS* = 0x00008022
-  GL_POST_CONVOLUTION_ALPHA_BIAS* = 0x00008023
-  constGL_HISTOGRAM* = 0x00008024
-  GL_PROXY_HISTOGRAM* = 0x00008025
-  GL_HISTOGRAM_WIDTH* = 0x00008026
-  GL_HISTOGRAM_FORMAT* = 0x00008027
-  GL_HISTOGRAM_RED_SIZE* = 0x00008028
-  GL_HISTOGRAM_GREEN_SIZE* = 0x00008029
-  GL_HISTOGRAM_BLUE_SIZE* = 0x0000802A
-  GL_HISTOGRAM_ALPHA_SIZE* = 0x0000802B
-  GL_HISTOGRAM_LUMINANCE_SIZE* = 0x0000802C
-  GL_HISTOGRAM_SINK* = 0x0000802D
-  constGL_MINMAX* = 0x0000802E
-  GL_MINMAX_FORMAT* = 0x0000802F
-  GL_MINMAX_SINK* = 0x00008030
-  GL_TABLE_TOO_LARGE* = 0x00008031
-  GL_COLOR_MATRIX* = 0x000080B1
-  GL_COLOR_MATRIX_STACK_DEPTH* = 0x000080B2
-  GL_MAX_COLOR_MATRIX_STACK_DEPTH* = 0x000080B3
-  GL_POST_COLOR_MATRIX_RED_SCALE* = 0x000080B4
-  GL_POST_COLOR_MATRIX_GREEN_SCALE* = 0x000080B5
-  GL_POST_COLOR_MATRIX_BLUE_SCALE* = 0x000080B6
-  GL_POST_COLOR_MATRIX_ALPHA_SCALE* = 0x000080B7
-  GL_POST_COLOR_MATRIX_RED_BIAS* = 0x000080B8
-  GL_POST_COLOR_MATRIX_GREEN_BIAS* = 0x000080B9
-  GL_POST_COLOR_MATRIX_BLUE_BIAS* = 0x000080BA
-  GL_POST_COLOR_MATIX_ALPHA_BIAS* = 0x000080BB
-  constGL_COLOR_TABLE* = 0x000080D0
-  GL_POST_CONVOLUTION_COLOR_TABLE* = 0x000080D1
-  GL_POST_COLOR_MATRIX_COLOR_TABLE* = 0x000080D2
-  GL_PROXY_COLOR_TABLE* = 0x000080D3
-  GL_PROXY_POST_CONVOLUTION_COLOR_TABLE* = 0x000080D4
-  GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE* = 0x000080D5
-  GL_COLOR_TABLE_SCALE* = 0x000080D6
-  GL_COLOR_TABLE_BIAS* = 0x000080D7
-  GL_COLOR_TABLE_FORMAT* = 0x000080D8
-  GL_COLOR_TABLE_WIDTH* = 0x000080D9
-  GL_COLOR_TABLE_RED_SIZE* = 0x000080DA
-  GL_COLOR_TABLE_GREEN_SIZE* = 0x000080DB
-  GL_COLOR_TABLE_BLUE_SIZE* = 0x000080DC
-  GL_COLOR_TABLE_ALPHA_SIZE* = 0x000080DD
-  GL_COLOR_TABLE_LUMINANCE_SIZE* = 0x000080DE
-  GL_COLOR_TABLE_INTENSITY_SIZE* = 0x000080DF
-  GL_IGNORE_BORDER* = 0x00008150
-  GL_CONSTANT_BORDER* = 0x00008151
-  GL_WRAP_BORDER* = 0x00008152
-  GL_REPLICATE_BORDER* = 0x00008153
-  GL_CONVOLUTION_BORDER_COLOR* = 0x00008154
-
-proc glActiveTexture*(texture: TGLenum){.dynlib: dllname, importc.}
-proc glClientActiveTexture*(texture: TGLenum){.dynlib: dllname, importc.}
-proc glMultiTexCoord1d*(target: TGLenum, s: TGLdouble){.dynlib: dllname, importc.}
-proc glMultiTexCoord1dv*(target: TGLenum, v: PGLdouble){.dynlib: dllname, importc.}
-proc glMultiTexCoord1f*(target: TGLenum, s: TGLfloat){.dynlib: dllname, importc.}
-proc glMultiTexCoord1fv*(target: TGLenum, v: PGLfloat){.dynlib: dllname, importc.}
-proc glMultiTexCoord1i*(target: TGLenum, s: TGLint){.dynlib: dllname, importc.}
-proc glMultiTexCoord1iv*(target: TGLenum, v: PGLint){.dynlib: dllname, importc.}
-proc glMultiTexCoord1s*(target: TGLenum, s: TGLshort){.dynlib: dllname, importc.}
-proc glMultiTexCoord1sv*(target: TGLenum, v: PGLshort){.dynlib: dllname, importc.}
-proc glMultiTexCoord2d*(target: TGLenum, s: TGLdouble, t: TGLdouble){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord2dv*(target: TGLenum, v: PGLdouble){.dynlib: dllname, importc.}
-proc glMultiTexCoord2f*(target: TGLenum, s: TGLfloat, t: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord2fv*(target: TGLenum, v: PGLfloat){.dynlib: dllname, importc.}
-proc glMultiTexCoord2i*(target: TGLenum, s: TGLint, t: TGLint){.dynlib: dllname, 
-    importc.}
-proc glMultiTexCoord2iv*(target: TGLenum, v: PGLint){.dynlib: dllname, importc.}
-proc glMultiTexCoord2s*(target: TGLenum, s: TGLshort, t: TGLshort){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord2sv*(target: TGLenum, v: PGLshort){.dynlib: dllname, importc.}
-proc glMultiTexCoord3d*(target: TGLenum, s: TGLdouble, t: TGLdouble, r: TGLdouble){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord3dv*(target: TGLenum, v: PGLdouble){.dynlib: dllname, importc.}
-proc glMultiTexCoord3f*(target: TGLenum, s: TGLfloat, t: TGLfloat, r: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord3fv*(target: TGLenum, v: PGLfloat){.dynlib: dllname, importc.}
-proc glMultiTexCoord3i*(target: TGLenum, s: TGLint, t: TGLint, r: TGLint){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord3iv*(target: TGLenum, v: PGLint){.dynlib: dllname, importc.}
-proc glMultiTexCoord3s*(target: TGLenum, s: TGLshort, t: TGLshort, r: TGLshort){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord3sv*(target: TGLenum, v: PGLshort){.dynlib: dllname, importc.}
-proc glMultiTexCoord4d*(target: TGLenum, s: TGLdouble, t: TGLdouble, r: TGLdouble, 
-                        q: TGLdouble){.dynlib: dllname, importc.}
-proc glMultiTexCoord4dv*(target: TGLenum, v: PGLdouble){.dynlib: dllname, importc.}
-proc glMultiTexCoord4f*(target: TGLenum, s: TGLfloat, t: TGLfloat, r: TGLfloat, 
-                        q: TGLfloat){.dynlib: dllname, importc.}
-proc glMultiTexCoord4fv*(target: TGLenum, v: PGLfloat){.dynlib: dllname, importc.}
-proc glMultiTexCoord4i*(target: TGLenum, s: TGLint, t: TGLint, r: TGLint, q: TGLint){.
-    dynlib: dllname, importc.}
-proc glMultiTexCoord4iv*(target: TGLenum, v: PGLint){.dynlib: dllname, importc.}
-proc glMultiTexCoord4s*(target: TGLenum, s: TGLshort, t: TGLshort, r: TGLshort, 
-                        q: TGLshort){.dynlib: dllname, importc.}
-proc glMultiTexCoord4sv*(target: TGLenum, v: PGLshort){.dynlib: dllname, importc.}
-proc glLoadTransposeMatrixf*(m: PGLfloat){.dynlib: dllname, importc.}
-proc glLoadTransposeMatrixd*(m: PGLdouble){.dynlib: dllname, importc.}
-proc glMultTransposeMatrixf*(m: PGLfloat){.dynlib: dllname, importc.}
-proc glMultTransposeMatrixd*(m: PGLdouble){.dynlib: dllname, importc.}
-proc glSampleCoverage*(value: TGLclampf, invert: TGLboolean){.dynlib: dllname, 
-    importc.}
-proc glCompressedTexImage3D*(target: TGLenum, level: TGLint, 
-                             internalformat: TGLenum, width: TGLsizei, 
-                             height: TGLsizei, depth: TGLsizei, border: TGLint, 
-                             imageSize: TGLsizei, data: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glCompressedTexImage2D*(target: TGLenum, level: TGLint, 
-                             internalformat: TGLenum, width: TGLsizei, 
-                             height: TGLsizei, border: TGLint, imageSize: TGLsizei, 
-                             data: PGLvoid){.dynlib: dllname, importc.}
-proc glCompressedTexImage1D*(target: TGLenum, level: TGLint, 
-                             internalformat: TGLenum, width: TGLsizei, 
-                             border: TGLint, imageSize: TGLsizei, data: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glCompressedTexSubImage3D*(target: TGLenum, level: TGLint, xoffset: TGLint, 
-                                yoffset: TGLint, zoffset: TGLint, width: TGLsizei, 
-                                height: TGLsizei, depth: TGLsizei, format: TGLenum, 
-                                imageSize: TGLsizei, data: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glCompressedTexSubImage2D*(target: TGLenum, level: TGLint, xoffset: TGLint, 
-                                yoffset: TGLint, width: TGLsizei, height: TGLsizei, 
-                                format: TGLenum, imageSize: TGLsizei, 
-                                data: PGLvoid){.dynlib: dllname, importc.}
-proc glCompressedTexSubImage1D*(target: TGLenum, level: TGLint, xoffset: TGLint, 
-                                width: TGLsizei, format: TGLenum, 
-                                imageSize: TGLsizei, data: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glGetCompressedTexImage*(target: TGLenum, level: TGLint, img: PGLvoid){.
-    dynlib: dllname, importc.}
-
-  #***** GL_version_1_3 *****//
-const 
-  GL_TEXTURE0* = 0x000084C0
-  GL_TEXTURE1* = 0x000084C1
-  GL_TEXTURE2* = 0x000084C2
-  GL_TEXTURE3* = 0x000084C3
-  GL_TEXTURE4* = 0x000084C4
-  GL_TEXTURE5* = 0x000084C5
-  GL_TEXTURE6* = 0x000084C6
-  GL_TEXTURE7* = 0x000084C7
-  GL_TEXTURE8* = 0x000084C8
-  GL_TEXTURE9* = 0x000084C9
-  GL_TEXTURE10* = 0x000084CA
-  GL_TEXTURE11* = 0x000084CB
-  GL_TEXTURE12* = 0x000084CC
-  GL_TEXTURE13* = 0x000084CD
-  GL_TEXTURE14* = 0x000084CE
-  GL_TEXTURE15* = 0x000084CF
-  GL_TEXTURE16* = 0x000084D0
-  GL_TEXTURE17* = 0x000084D1
-  GL_TEXTURE18* = 0x000084D2
-  GL_TEXTURE19* = 0x000084D3
-  GL_TEXTURE20* = 0x000084D4
-  GL_TEXTURE21* = 0x000084D5
-  GL_TEXTURE22* = 0x000084D6
-  GL_TEXTURE23* = 0x000084D7
-  GL_TEXTURE24* = 0x000084D8
-  GL_TEXTURE25* = 0x000084D9
-  GL_TEXTURE26* = 0x000084DA
-  GL_TEXTURE27* = 0x000084DB
-  GL_TEXTURE28* = 0x000084DC
-  GL_TEXTURE29* = 0x000084DD
-  GL_TEXTURE30* = 0x000084DE
-  GL_TEXTURE31* = 0x000084DF
-  constGL_ACTIVE_TEXTURE* = 0x000084E0
-  constGL_CLIENT_ACTIVE_TEXTURE* = 0x000084E1
-  GL_MAX_TEXTURE_UNITS* = 0x000084E2
-  GL_TRANSPOSE_MODELVIEW_MATRIX* = 0x000084E3
-  GL_TRANSPOSE_PROJECTION_MATRIX* = 0x000084E4
-  GL_TRANSPOSE_TEXTURE_MATRIX* = 0x000084E5
-  GL_TRANSPOSE_COLOR_MATRIX* = 0x000084E6
-  GL_MULTISAMPLE* = 0x0000809D
-  GL_SAMPLE_ALPHA_TO_COVERAGE* = 0x0000809E
-  GL_SAMPLE_ALPHA_TO_ONE* = 0x0000809F
-  constGL_SAMPLE_COVERAGE* = 0x000080A0
-  GL_SAMPLE_BUFFERS* = 0x000080A8
-  GL_SAMPLES* = 0x000080A9
-  GL_SAMPLE_COVERAGE_VALUE* = 0x000080AA
-  GL_SAMPLE_COVERAGE_INVERT* = 0x000080AB
-  GL_MULTISAMPLE_BIT* = 0x20000000
-  GL_NORMAL_MAP* = 0x00008511
-  GL_REFLECTION_MAP* = 0x00008512
-  GL_TEXTURE_CUBE_MAP* = 0x00008513
-  GL_TEXTURE_BINDING_CUBE_MAP* = 0x00008514
-  GL_TEXTURE_CUBE_MAP_POSITIVE_X* = 0x00008515
-  GL_TEXTURE_CUBE_MAP_NEGATIVE_X* = 0x00008516
-  GL_TEXTURE_CUBE_MAP_POSITIVE_Y* = 0x00008517
-  GL_TEXTURE_CUBE_MAP_NEGATIVE_Y* = 0x00008518
-  GL_TEXTURE_CUBE_MAP_POSITIVE_Z* = 0x00008519
-  GL_TEXTURE_CUBE_MAP_NEGATIVE_Z* = 0x0000851A
-  GL_PROXY_TEXTURE_CUBE_MAP* = 0x0000851B
-  GL_MAX_CUBE_MAP_TEXTURE_SIZE* = 0x0000851C
-  GL_COMPRESSED_ALPHA* = 0x000084E9
-  GL_COMPRESSED_LUMINANCE* = 0x000084EA
-  GL_COMPRESSED_LUMINANCE_ALPHA* = 0x000084EB
-  GL_COMPRESSED_INTENSITY* = 0x000084EC
-  GL_COMPRESSED_RGB* = 0x000084ED
-  GL_COMPRESSED_RGBA* = 0x000084EE
-  GL_TEXTURE_COMPRESSION_HINT* = 0x000084EF
-  GL_TEXTURE_COMPRESSED_IMAGE_SIZE* = 0x000086A0
-  GL_TEXTURE_COMPRESSED* = 0x000086A1
-  GL_NUM_COMPRESSED_TEXTURE_FORMATS* = 0x000086A2
-  GL_COMPRESSED_TEXTURE_FORMATS* = 0x000086A3
-  GL_CLAMP_TO_BORDER* = 0x0000812D
-  GL_CLAMP_TO_BORDER_SGIS* = 0x0000812D
-  GL_COMBINE* = 0x00008570
-  GL_COMBINE_RGB* = 0x00008571
-  GL_COMBINE_ALPHA* = 0x00008572
-  GL_SOURCE0_RGB* = 0x00008580
-  GL_SOURCE1_RGB* = 0x00008581
-  GL_SOURCE2_RGB* = 0x00008582
-  GL_SOURCE0_ALPHA* = 0x00008588
-  GL_SOURCE1_ALPHA* = 0x00008589
-  GL_SOURCE2_ALPHA* = 0x0000858A
-  GL_OPERAND0_RGB* = 0x00008590
-  GL_OPERAND1_RGB* = 0x00008591
-  GL_OPERAND2_RGB* = 0x00008592
-  GL_OPERAND0_ALPHA* = 0x00008598
-  GL_OPERAND1_ALPHA* = 0x00008599
-  GL_OPERAND2_ALPHA* = 0x0000859A
-  GL_RGB_SCALE* = 0x00008573
-  GL_ADD_SIGNED* = 0x00008574
-  GL_INTERPOLATE* = 0x00008575
-  GL_SUBTRACT* = 0x000084E7
-  GL_CONSTANT* = 0x00008576
-  GL_PRIMARY_COLOR* = 0x00008577
-  GL_PREVIOUS* = 0x00008578
-  GL_DOT3_RGB* = 0x000086AE
-  GL_DOT3_RGBA* = 0x000086AF
-
-const 
-  GL_TEXTURE0_ARB* = 0x000084C0
-  GL_TEXTURE1_ARB* = 0x000084C1
-  GL_TEXTURE2_ARB* = 0x000084C2
-  GL_TEXTURE3_ARB* = 0x000084C3
-  GL_TEXTURE4_ARB* = 0x000084C4
-  GL_TEXTURE5_ARB* = 0x000084C5
-  GL_TEXTURE6_ARB* = 0x000084C6
-  GL_TEXTURE7_ARB* = 0x000084C7
-  GL_TEXTURE8_ARB* = 0x000084C8
-  GL_TEXTURE9_ARB* = 0x000084C9
-  GL_TEXTURE10_ARB* = 0x000084CA
-  GL_TEXTURE11_ARB* = 0x000084CB
-  GL_TEXTURE12_ARB* = 0x000084CC
-  GL_TEXTURE13_ARB* = 0x000084CD
-  GL_TEXTURE14_ARB* = 0x000084CE
-  GL_TEXTURE15_ARB* = 0x000084CF
-  GL_TEXTURE16_ARB* = 0x000084D0
-  GL_TEXTURE17_ARB* = 0x000084D1
-  GL_TEXTURE18_ARB* = 0x000084D2
-  GL_TEXTURE19_ARB* = 0x000084D3
-  GL_TEXTURE20_ARB* = 0x000084D4
-  GL_TEXTURE21_ARB* = 0x000084D5
-  GL_TEXTURE22_ARB* = 0x000084D6
-  GL_TEXTURE23_ARB* = 0x000084D7
-  GL_TEXTURE24_ARB* = 0x000084D8
-  GL_TEXTURE25_ARB* = 0x000084D9
-  GL_TEXTURE26_ARB* = 0x000084DA
-  GL_TEXTURE27_ARB* = 0x000084DB
-  GL_TEXTURE28_ARB* = 0x000084DC
-  GL_TEXTURE29_ARB* = 0x000084DD
-  GL_TEXTURE30_ARB* = 0x000084DE
-  GL_TEXTURE31_ARB* = 0x000084DF
-  constGL_ACTIVE_TEXTURE_ARB* = 0x000084E0
-  constGL_CLIENT_ACTIVE_TEXTURE_ARB* = 0x000084E1
-  GL_MAX_TEXTURE_UNITS_ARB* = 0x000084E2
-
-  #***** GL_ARB_transpose_matrix *****//
-const 
-  GL_TRANSPOSE_MODELVIEW_MATRIX_ARB* = 0x000084E3
-  GL_TRANSPOSE_PROJECTION_MATRIX_ARB* = 0x000084E4
-  GL_TRANSPOSE_TEXTURE_MATRIX_ARB* = 0x000084E5
-  GL_TRANSPOSE_COLOR_MATRIX_ARB* = 0x000084E6
-
-proc glLoadTransposeMatrixfARB*(m: PGLfloat){.dynlib: dllname, importc.}
-proc glLoadTransposeMatrixdARB*(m: PGLdouble){.dynlib: dllname, importc.}
-proc glMultTransposeMatrixfARB*(m: PGLfloat){.dynlib: dllname, importc.}
-proc glMultTransposeMatrixdARB*(m: PGLdouble){.dynlib: dllname, importc.}
-
-const 
-  WGL_SAMPLE_BUFFERS_ARB* = 0x00002041
-  WGL_SAMPLES_ARB* = 0x00002042
-  GL_MULTISAMPLE_ARB* = 0x0000809D
-  GL_SAMPLE_ALPHA_TO_COVERAGE_ARB* = 0x0000809E
-  GL_SAMPLE_ALPHA_TO_ONE_ARB* = 0x0000809F
-  constGL_SAMPLE_COVERAGE_ARB* = 0x000080A0
-  GL_MULTISAMPLE_BIT_ARB* = 0x20000000
-  GL_SAMPLE_BUFFERS_ARB* = 0x000080A8
-  GL_SAMPLES_ARB* = 0x000080A9
-  GL_SAMPLE_COVERAGE_VALUE_ARB* = 0x000080AA
-  GL_SAMPLE_COVERAGE_INVERT_ARB* = 0x000080AB
-
-const 
-  GL_NORMAL_MAP_ARB* = 0x00008511
-  GL_REFLECTION_MAP_ARB* = 0x00008512
-  GL_TEXTURE_CUBE_MAP_ARB* = 0x00008513
-  GL_TEXTURE_BINDING_CUBE_MAP_ARB* = 0x00008514
-  GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB* = 0x00008515
-  GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB* = 0x00008516
-  GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB* = 0x00008517
-  GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB* = 0x00008518
-  GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB* = 0x00008519
-  GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB* = 0x0000851A
-  GL_PROXY_TEXTURE_CUBE_MAP_ARB* = 0x0000851B
-  GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB* = 0x0000851C
-
-const 
-  GL_DEPTH_COMPONENT16_ARB* = 0x000081A5
-  GL_DEPTH_COMPONENT24_ARB* = 0x000081A6
-  GL_DEPTH_COMPONENT32_ARB* = 0x000081A7
-  GL_TEXTURE_DEPTH_SIZE_ARB* = 0x0000884A
-  GL_DEPTH_TEXTURE_MODE_ARB* = 0x0000884B
-
-  #***** GL_ARB_point_parameters *****//
-const 
-  GL_POINT_SIZE_MIN_ARB* = 0x00008126
-  GL_POINT_SIZE_MAX_ARB* = 0x00008127
-  GL_POINT_FADE_THRESHOLD_SIZE_ARB* = 0x00008128
-  GL_POINT_DISTANCE_ATTENUATION_ARB* = 0x00008129
-
-proc glPointParameterfARB*(pname: TGLenum, param: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glPointParameterfvARB*(pname: TGLenum, params: PGLfloat){.dynlib: dllname, 
-    importc.}
-const 
-  GL_TEXTURE_COMPARE_MODE_ARB* = 0x0000884C
-  GL_TEXTURE_COMPARE_FUNC_ARB* = 0x0000884D
-  GL_COMPARE_R_TO_TEXTURE_ARB* = 0x0000884E
-
-const 
-  GL_TEXTURE_COMPARE_FAIL_VALUE_ARB* = 0x000080BF
-  GL_CLAMP_TO_BORDER_ARB* = 0x0000812D
-
-const 
-  GL_COMPRESSED_ALPHA_ARB* = 0x000084E9
-  GL_COMPRESSED_LUMINANCE_ARB* = 0x000084EA
-  GL_COMPRESSED_LUMINANCE_ALPHA_ARB* = 0x000084EB
-  GL_COMPRESSED_INTENSITY_ARB* = 0x000084EC
-  GL_COMPRESSED_RGB_ARB* = 0x000084ED
-  GL_COMPRESSED_RGBA_ARB* = 0x000084EE
-  GL_TEXTURE_COMPRESSION_HINT_ARB* = 0x000084EF
-  GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB* = 0x000086A0
-  GL_TEXTURE_COMPRESSED_ARB* = 0x000086A1
-  GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB* = 0x000086A2
-  GL_COMPRESSED_TEXTURE_FORMATS_ARB* = 0x000086A3
-
-proc glCompressedTexImage3DARB*(target: TGLenum, level: TGLint, 
-                                internalformat: TGLenum, width: TGLsizei, 
-                                height: TGLsizei, depth: TGLsizei, border: TGLint, 
-                                imageSize: TGLsizei, data: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glCompressedTexImage2DARB*(target: TGLenum, level: TGLint, 
-                                internalformat: TGLenum, width: TGLsizei, 
-                                height: TGLsizei, border: TGLint, 
-                                imageSize: TGLsizei, data: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glCompressedTexImage1DARB*(target: TGLenum, level: TGLint, 
-                                internalformat: TGLenum, width: TGLsizei, 
-                                border: TGLint, imageSize: TGLsizei, data: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glCompressedTexSubImage3DARB*(target: TGLenum, level: TGLint, xoffset: TGLint, 
-                                   yoffset: TGLint, zoffset: TGLint, 
-                                   width: TGLsizei, height: TGLsizei, 
-                                   depth: TGLsizei, format: TGLenum, 
-                                   imageSize: TGLsizei, data: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glCompressedTexSubImage2DARB*(target: TGLenum, level: TGLint, xoffset: TGLint, 
-                                   yoffset: TGLint, width: TGLsizei, 
-                                   height: TGLsizei, format: TGLenum, 
-                                   imageSize: TGLsizei, data: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glCompressedTexSubImage1DARB*(target: TGLenum, level: TGLint, xoffset: TGLint, 
-                                   width: TGLsizei, format: TGLenum, 
-                                   imageSize: TGLsizei, data: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glGetCompressedTexImageARB*(target: TGLenum, lod: TGLint, img: PGLvoid){.
-    dynlib: dllname, importc.}
-  #***** GL_ARB_texture_env_combine *****//
-const 
-  GL_COMBINE_ARB* = 0x00008570
-  GL_COMBINE_RGB_ARB* = 0x00008571
-  GL_COMBINE_ALPHA_ARB* = 0x00008572
-  GL_SOURCE0_RGB_ARB* = 0x00008580
-  GL_SOURCE1_RGB_ARB* = 0x00008581
-  GL_SOURCE2_RGB_ARB* = 0x00008582
-  GL_SOURCE0_ALPHA_ARB* = 0x00008588
-  GL_SOURCE1_ALPHA_ARB* = 0x00008589
-  GL_SOURCE2_ALPHA_ARB* = 0x0000858A
-  GL_OPERAND0_RGB_ARB* = 0x00008590
-  GL_OPERAND1_RGB_ARB* = 0x00008591
-  GL_OPERAND2_RGB_ARB* = 0x00008592
-  GL_OPERAND0_ALPHA_ARB* = 0x00008598
-  GL_OPERAND1_ALPHA_ARB* = 0x00008599
-  GL_OPERAND2_ALPHA_ARB* = 0x0000859A
-  GL_RGB_SCALE_ARB* = 0x00008573
-  GL_ADD_SIGNED_ARB* = 0x00008574
-  GL_INTERPOLATE_ARB* = 0x00008575
-  GL_SUBTRACT_ARB* = 0x000084E7
-  GL_CONSTANT_ARB* = 0x00008576
-  GL_PRIMARY_COLOR_ARB* = 0x00008577
-  GL_PREVIOUS_ARB* = 0x00008578
-
-  #***** GL_ARB_texture_env_crossbar *****//
-  #***** GL_ARB_texture_env_dot3 *****//
-const 
-  GL_DOT3_RGB_ARB* = 0x000086AE
-  GL_DOT3_RGBA_ARB* = 0x000086AF
-
-  #***** GL_ARB_texture_mirrored_repeat *****//
-const 
-  GL_MIRRORED_REPEAT_ARB* = 0x00008370
-
-  #***** GL_ARB_vertex_blend *****//
-const 
-  GL_MAX_VERTEX_UNITS_ARB* = 0x000086A4
-  GL_ACTIVE_VERTEX_UNITS_ARB* = 0x000086A5
-  GL_WEIGHT_SUM_UNITY_ARB* = 0x000086A6
-  constGL_VERTEX_BLEND_ARB* = 0x000086A7
-  GL_MODELVIEW0_ARB* = 0x00001700
-  GL_MODELVIEW1_ARB* = 0x0000850A
-  GL_MODELVIEW2_ARB* = 0x00008722
-  GL_MODELVIEW3_ARB* = 0x00008723
-  GL_MODELVIEW4_ARB* = 0x00008724
-  GL_MODELVIEW5_ARB* = 0x00008725
-  GL_MODELVIEW6_ARB* = 0x00008726
-  GL_MODELVIEW7_ARB* = 0x00008727
-  GL_MODELVIEW8_ARB* = 0x00008728
-  GL_MODELVIEW9_ARB* = 0x00008729
-  GL_MODELVIEW10_ARB* = 0x0000872A
-  GL_MODELVIEW11_ARB* = 0x0000872B
-  GL_MODELVIEW12_ARB* = 0x0000872C
-  GL_MODELVIEW13_ARB* = 0x0000872D
-  GL_MODELVIEW14_ARB* = 0x0000872E
-  GL_MODELVIEW15_ARB* = 0x0000872F
-  GL_MODELVIEW16_ARB* = 0x00008730
-  GL_MODELVIEW17_ARB* = 0x00008731
-  GL_MODELVIEW18_ARB* = 0x00008732
-  GL_MODELVIEW19_ARB* = 0x00008733
-  GL_MODELVIEW20_ARB* = 0x00008734
-  GL_MODELVIEW21_ARB* = 0x00008735
-  GL_MODELVIEW22_ARB* = 0x00008736
-  GL_MODELVIEW23_ARB* = 0x00008737
-  GL_MODELVIEW24_ARB* = 0x00008738
-  GL_MODELVIEW25_ARB* = 0x00008739
-  GL_MODELVIEW26_ARB* = 0x0000873A
-  GL_MODELVIEW27_ARB* = 0x0000873B
-  GL_MODELVIEW28_ARB* = 0x0000873C
-  GL_MODELVIEW29_ARB* = 0x0000873D
-  GL_MODELVIEW30_ARB* = 0x0000873E
-  GL_MODELVIEW31_ARB* = 0x0000873F
-  GL_CURRENT_WEIGHT_ARB* = 0x000086A8
-  GL_WEIGHT_ARRAY_TYPE_ARB* = 0x000086A9
-  GL_WEIGHT_ARRAY_STRIDE_ARB* = 0x000086AA
-  GL_WEIGHT_ARRAY_SIZE_ARB* = 0x000086AB
-  GL_WEIGHT_ARRAY_POINTER_ARB* = 0x000086AC
-  GL_WEIGHT_ARRAY_ARB* = 0x000086AD
-
-const 
-  GL_VERTEX_PROGRAM_ARB* = 0x00008620
-  GL_VERTEX_PROGRAM_POINT_SIZE_ARB* = 0x00008642
-  GL_VERTEX_PROGRAM_TWO_SIDE_ARB* = 0x00008643
-  GL_COLOR_SUM_ARB* = 0x00008458
-  GL_PROGRAM_FORMAT_ASCII_ARB* = 0x00008875
-  GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB* = 0x00008622
-  GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB* = 0x00008623
-  GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB* = 0x00008624
-  GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB* = 0x00008625
-  GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB* = 0x0000886A
-  GL_CURRENT_VERTEX_ATTRIB_ARB* = 0x00008626
-  GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB* = 0x00008645
-  GL_PROGRAM_LENGTH_ARB* = 0x00008627
-  GL_PROGRAM_FORMAT_ARB* = 0x00008876
-  GL_PROGRAM_BINDING_ARB* = 0x00008677
-  GL_PROGRAM_INSTRUCTIONS_ARB* = 0x000088A0
-  GL_MAX_PROGRAM_INSTRUCTIONS_ARB* = 0x000088A1
-  GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB* = 0x000088A2
-  GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB* = 0x000088A3
-  GL_PROGRAM_TEMPORARIES_ARB* = 0x000088A4
-  GL_MAX_PROGRAM_TEMPORARIES_ARB* = 0x000088A5
-  GL_PROGRAM_NATIVE_TEMPORARIES_ARB* = 0x000088A6
-  GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB* = 0x000088A7
-  GL_PROGRAM_PARAMETERS_ARB* = 0x000088A8
-  GL_MAX_PROGRAM_PARAMETERS_ARB* = 0x000088A9
-  GL_PROGRAM_NATIVE_PARAMETERS_ARB* = 0x000088AA
-  GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB* = 0x000088AB
-  GL_PROGRAM_ATTRIBS_ARB* = 0x000088AC
-  GL_MAX_PROGRAM_ATTRIBS_ARB* = 0x000088AD
-  GL_PROGRAM_NATIVE_ATTRIBS_ARB* = 0x000088AE
-  GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB* = 0x000088AF
-  GL_PROGRAM_ADDRESS_REGISTERS_ARB* = 0x000088B0
-  GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB* = 0x000088B1
-  GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB* = 0x000088B2
-  GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB* = 0x000088B3
-  GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB* = 0x000088B4
-  GL_MAX_PROGRAM_ENV_PARAMETERS_ARB* = 0x000088B5
-  GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB* = 0x000088B6
-  constGL_PROGRAM_STRING_ARB* = 0x00008628
-  GL_PROGRAM_ERROR_POSITION_ARB* = 0x0000864B
-  GL_CURRENT_MATRIX_ARB* = 0x00008641
-  GL_TRANSPOSE_CURRENT_MATRIX_ARB* = 0x000088B7
-  GL_CURRENT_MATRIX_STACK_DEPTH_ARB* = 0x00008640
-  GL_MAX_VERTEX_ATTRIBS_ARB* = 0x00008869
-  GL_MAX_PROGRAM_MATRICES_ARB* = 0x0000862F
-  GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB* = 0x0000862E
-  GL_PROGRAM_ERROR_STRING_ARB* = 0x00008874
-  GL_MATRIX0_ARB* = 0x000088C0
-  GL_MATRIX1_ARB* = 0x000088C1
-  GL_MATRIX2_ARB* = 0x000088C2
-  GL_MATRIX3_ARB* = 0x000088C3
-  GL_MATRIX4_ARB* = 0x000088C4
-  GL_MATRIX5_ARB* = 0x000088C5
-  GL_MATRIX6_ARB* = 0x000088C6
-  GL_MATRIX7_ARB* = 0x000088C7
-  GL_MATRIX8_ARB* = 0x000088C8
-  GL_MATRIX9_ARB* = 0x000088C9
-  GL_MATRIX10_ARB* = 0x000088CA
-  GL_MATRIX11_ARB* = 0x000088CB
-  GL_MATRIX12_ARB* = 0x000088CC
-  GL_MATRIX13_ARB* = 0x000088CD
-  GL_MATRIX14_ARB* = 0x000088CE
-  GL_MATRIX15_ARB* = 0x000088CF
-  GL_MATRIX16_ARB* = 0x000088D0
-  GL_MATRIX17_ARB* = 0x000088D1
-  GL_MATRIX18_ARB* = 0x000088D2
-  GL_MATRIX19_ARB* = 0x000088D3
-  GL_MATRIX20_ARB* = 0x000088D4
-  GL_MATRIX21_ARB* = 0x000088D5
-  GL_MATRIX22_ARB* = 0x000088D6
-  GL_MATRIX23_ARB* = 0x000088D7
-  GL_MATRIX24_ARB* = 0x000088D8
-  GL_MATRIX25_ARB* = 0x000088D9
-  GL_MATRIX26_ARB* = 0x000088DA
-  GL_MATRIX27_ARB* = 0x000088DB
-  GL_MATRIX28_ARB* = 0x000088DC
-  GL_MATRIX29_ARB* = 0x000088DD
-  GL_MATRIX30_ARB* = 0x000088DE
-  GL_MATRIX31_ARB* = 0x000088DF
-
-const 
-  GL_422_EXT* = 0x000080CC
-  GL_422_REV_EXT* = 0x000080CD
-  GL_422_AVERAGE_EXT* = 0x000080CE
-  GL_422_REV_AVERAGE_EXT* = 0x000080CF
-
-  #***** GL_EXT_abgr *****//
-const 
-  GL_ABGR_EXT* = 0x00008000
-
-  #***** GL_EXT_bgra *****//
-const 
-  GL_BGR_EXT* = 0x000080E0
-  GL_BGRA_EXT* = 0x000080E1
-
-  #***** GL_EXT_blend_color *****//
-const 
-  GL_CONSTANT_COLOR_EXT* = 0x00008001
-  GL_ONE_MINUS_CONSTANT_COLOR_EXT* = 0x00008002
-  GL_CONSTANT_ALPHA_EXT* = 0x00008003
-  GL_ONE_MINUS_CONSTANT_ALPHA_EXT* = 0x00008004
-  constGL_BLEND_COLOR_EXT* = 0x00008005
-
-proc glBlendColorEXT*(red: TGLclampf, green: TGLclampf, blue: TGLclampf, 
-                      alpha: TGLclampf){.dynlib: dllname, importc.}
-  #***** GL_EXT_blend_func_separate *****//
-const 
-  GL_BLEND_DST_RGB_EXT* = 0x000080C8
-  GL_BLEND_SRC_RGB_EXT* = 0x000080C9
-  GL_BLEND_DST_ALPHA_EXT* = 0x000080CA
-  GL_BLEND_SRC_ALPHA_EXT* = 0x000080CB
-
-proc glBlendFuncSeparateEXT*(sfactorRGB: TGLenum, dfactorRGB: TGLenum, 
-                             sfactorAlpha: TGLenum, dfactorAlpha: TGLenum){.
-    dynlib: dllname, importc.}
-  #***** GL_EXT_blend_logic_op *****//
-  #***** GL_EXT_blend_minmax *****//
-const 
-  GL_FUNC_ADD_EXT* = 0x00008006
-  GL_MIN_EXT* = 0x00008007
-  GL_MAX_EXT* = 0x00008008
-  constGL_BLEND_EQUATION_EXT* = 0x00008009
-
-proc glBlendEquationEXT*(mode: TGLenum){.dynlib: dllname, importc.}
-  #***** GL_EXT_blend_subtract *****//
-const 
-  GL_FUNC_SUBTRACT_EXT* = 0x0000800A
-  GL_FUNC_REVERSE_SUBTRACT_EXT* = 0x0000800B
-
-  #***** GL_EXT_clip_volume_hint *****//
-const 
-  GL_CLIP_VOLUME_CLIPPING_HINT_EXT* = 0x000080F0
-
-  #***** GL_EXT_color_subtable *****//
-proc glColorSubTableEXT*(target: TGLenum, start: TGLsizei, count: TGLsizei, 
-                         format: TGLenum, thetype: TGLenum, data: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glCopyColorSubTableEXT*(target: TGLenum, start: TGLsizei, x: TGLint, y: TGLint, 
-                             width: TGLsizei){.dynlib: dllname, importc.}
-  #***** GL_EXT_compiled_vertex_array *****//
-const 
-  GL_ARRAY_ELEMENT_LOCK_FIRST_EXT* = 0x000081A8
-  GL_ARRAY_ELEMENT_LOCK_COUNT_EXT* = 0x000081A9
-
-proc glLockArraysEXT*(first: TGLint, count: TGLsizei){.dynlib: dllname, importc.}
-proc glUnlockArraysEXT*(){.dynlib: dllname, importc.}
-  #***** GL_EXT_convolution *****//
-const 
-  GL_CONVOLUTION_1D_EXT* = 0x00008010
-  GL_CONVOLUTION_2D_EXT* = 0x00008011
-  GL_SEPARABLE_2D_EXT* = 0x00008012
-  GL_CONVOLUTION_BORDER_MODE_EXT* = 0x00008013
-  GL_CONVOLUTION_FILTER_SCALE_EXT* = 0x00008014
-  GL_CONVOLUTION_FILTER_BIAS_EXT* = 0x00008015
-  GL_REDUCE_EXT* = 0x00008016
-  GL_CONVOLUTION_FORMAT_EXT* = 0x00008017
-  GL_CONVOLUTION_WIDTH_EXT* = 0x00008018
-  GL_CONVOLUTION_HEIGHT_EXT* = 0x00008019
-  GL_MAX_CONVOLUTION_WIDTH_EXT* = 0x0000801A
-  GL_MAX_CONVOLUTION_HEIGHT_EXT* = 0x0000801B
-  GL_POST_CONVOLUTION_RED_SCALE_EXT* = 0x0000801C
-  GL_POST_CONVOLUTION_GREEN_SCALE_EXT* = 0x0000801D
-  GL_POST_CONVOLUTION_BLUE_SCALE_EXT* = 0x0000801E
-  GL_POST_CONVOLUTION_ALPHA_SCALE_EXT* = 0x0000801F
-  GL_POST_CONVOLUTION_RED_BIAS_EXT* = 0x00008020
-  GL_POST_CONVOLUTION_GREEN_BIAS_EXT* = 0x00008021
-  GL_POST_CONVOLUTION_BLUE_BIAS_EXT* = 0x00008022
-  GL_POST_CONVOLUTION_ALPHA_BIAS_EXT* = 0x00008023
-
-proc glConvolutionFilter1DEXT*(target: TGLenum, internalformat: TGLenum, 
-                               width: TGLsizei, format: TGLenum, thetype: TGLenum, 
-                               image: PGLvoid){.dynlib: dllname, importc.}
-proc glConvolutionFilter2DEXT*(target: TGLenum, internalformat: TGLenum, 
-                               width: TGLsizei, height: TGLsizei, format: TGLenum, 
-                               thetype: TGLenum, image: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glCopyConvolutionFilter1DEXT*(target: TGLenum, internalformat: TGLenum, 
-                                   x: TGLint, y: TGLint, width: TGLsizei){.
-    dynlib: dllname, importc.}
-proc glCopyConvolutionFilter2DEXT*(target: TGLenum, internalformat: TGLenum, 
-                                   x: TGLint, y: TGLint, width: TGLsizei, 
-                                   height: TGLsizei){.dynlib: dllname, importc.}
-proc glGetConvolutionFilterEXT*(target: TGLenum, format: TGLenum, thetype: TGLenum, 
-                                image: PGLvoid){.dynlib: dllname, importc.}
-proc glSeparableFilter2DEXT*(target: TGLenum, internalformat: TGLenum, 
-                             width: TGLsizei, height: TGLsizei, format: TGLenum, 
-                             thetype: TGLenum, row: PGLvoid, column: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glGetSeparableFilterEXT*(target: TGLenum, format: TGLenum, thetype: TGLenum, 
-                              row: PGLvoid, column: PGLvoid, span: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glConvolutionParameteriEXT*(target: TGLenum, pname: TGLenum, param: TGLint){.
-    dynlib: dllname, importc.}
-proc glConvolutionParameterivEXT*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glConvolutionParameterfEXT*(target: TGLenum, pname: TGLenum, param: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glConvolutionParameterfvEXT*(target: TGLenum, pname: TGLenum, 
-                                  params: PGLfloat){.dynlib: dllname, importc.}
-proc glGetConvolutionParameterivEXT*(target: TGLenum, pname: TGLenum, 
-                                     params: PGLint){.dynlib: dllname, importc.}
-proc glGetConvolutionParameterfvEXT*(target: TGLenum, pname: TGLenum, 
-                                     params: PGLfloat){.dynlib: dllname, importc.}
-  #***** GL_EXT_fog_coord *****//
-const 
-  GL_FOG_COORDINATE_SOURCE_EXT* = 0x00008450
-  GL_FOG_COORDINATE_EXT* = 0x00008451
-  GL_FRAGMENT_DEPTH_EXT* = 0x00008452
-  GL_CURRENT_FOG_COORDINATE_EXT* = 0x00008453
-  GL_FOG_COORDINATE_ARRAY_TYPE_EXT* = 0x00008454
-  GL_FOG_COORDINATE_ARRAY_STRIDE_EXT* = 0x00008455
-  GL_FOG_COORDINATE_ARRAY_POINTER_EXT* = 0x00008456
-  GL_FOG_COORDINATE_ARRAY_EXT* = 0x00008457
-
-proc glFogCoordfEXfloat*(coord: TGLfloat){.dynlib: dllname, importc.}
-proc glFogCoorddEXdouble*(coord: TGLdouble){.dynlib: dllname, importc.}
-proc glFogCoordfvEXfloat*(coord: TGLfloat){.dynlib: dllname, importc.}
-proc glFogCoorddvEXdouble*(coord: TGLdouble){.dynlib: dllname, importc.}
-proc glFogCoordPointerEXT*(thetype: TGLenum, stride: TGLsizei, pointer: PGLvoid){.
-    dynlib: dllname, importc.}
-  #***** GL_EXT_histogram *****//
-const 
-  constGL_HISTOGRAM_EXT* = 0x00008024
-  GL_PROXY_HISTOGRAM_EXT* = 0x00008025
-  GL_HISTOGRAM_WIDTH_EXT* = 0x00008026
-  GL_HISTOGRAM_FORMAT_EXT* = 0x00008027
-  GL_HISTOGRAM_RED_SIZE_EXT* = 0x00008028
-  GL_HISTOGRAM_GREEN_SIZE_EXT* = 0x00008029
-  GL_HISTOGRAM_BLUE_SIZE_EXT* = 0x0000802A
-  GL_HISTOGRAM_ALPHA_SIZE_EXT* = 0x0000802B
-  GL_HISTOGRAM_LUMINANCE_SIZE_EXT* = 0x0000802C
-  GL_HISTOGRAM_SINK_EXT* = 0x0000802D
-  constGL_MINMAX_EXT* = 0x0000802E
-  GL_MINMAX_FORMAT_EXT* = 0x0000802F
-  GL_MINMAX_SINK_EXT* = 0x00008030
-
-proc glHistogramEXT*(target: TGLenum, width: TGLsizei, internalformat: TGLenum, 
-                     sink: TGLboolean){.dynlib: dllname, importc.}
-proc glResetHistogramEXT*(target: TGLenum){.dynlib: dllname, importc.}
-proc glGetHistogramEXT*(target: TGLenum, reset: TGLboolean, format: TGLenum, 
-                        thetype: TGLenum, values: PGLvoid){.dynlib: dllname, 
-    importc.}
-proc glGetHistogramParameterivEXT*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetHistogramParameterfvEXT*(target: TGLenum, pname: TGLenum, 
-                                   params: PGLfloat){.dynlib: dllname, importc.}
-proc glMinmaxEXT*(target: TGLenum, internalformat: TGLenum, sink: TGLboolean){.
-    dynlib: dllname, importc.}
-proc glResetMinmaxEXT*(target: TGLenum){.dynlib: dllname, importc.}
-proc glGetMinmaxEXT*(target: TGLenum, reset: TGLboolean, format: TGLenum, 
-                     thetype: TGLenum, values: PGLvoid){.dynlib: dllname, importc.}
-proc glGetMinmaxParameterivEXT*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetMinmaxParameterfvEXT*(target: TGLenum, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-  #***** GL_EXT_multi_draw_arrays *****//
-proc glMultiDrawArraysEXT*(mode: TGLenum, first: PGLint, count: PGLsizei, 
-                           primcount: TGLsizei){.dynlib: dllname, importc.}
-proc glMultiDrawElementsEXT*(mode: TGLenum, count: PGLsizei, thetype: TGLenum, 
-                             indices: PGLvoid, primcount: TGLsizei){.
-    dynlib: dllname, importc.}
-  #***** GL_EXT_packed_pixels *****//
-const 
-  GL_UNSIGNED_BYTE_3_3_2_EXT* = 0x00008032
-  GL_UNSIGNED_SHORT_4_4_4_4_EXT* = 0x00008033
-  GL_UNSIGNED_SHORT_5_5_5_1_EXT* = 0x00008034
-  GL_UNSIGNED_INT_8_8_8_8_EXT* = 0x00008035
-  GL_UNSIGNED_INT_10_10_10_2_EXT* = 0x00008036
-
-  #***** GL_EXT_paletted_texture *****//
-const 
-  GL_COLOR_INDEX1_EXT* = 0x000080E2
-  GL_COLOR_INDEX2_EXT* = 0x000080E3
-  GL_COLOR_INDEX4_EXT* = 0x000080E4
-  GL_COLOR_INDEX8_EXT* = 0x000080E5
-  GL_COLOR_INDEX12_EXT* = 0x000080E6
-  GL_COLOR_INDEX16_EXT* = 0x000080E7
-  GL_COLOR_TABLE_FORMAT_EXT* = 0x000080D8
-  GL_COLOR_TABLE_WIDTH_EXT* = 0x000080D9
-  GL_COLOR_TABLE_RED_SIZE_EXT* = 0x000080DA
-  GL_COLOR_TABLE_GREEN_SIZE_EXT* = 0x000080DB
-  GL_COLOR_TABLE_BLUE_SIZE_EXT* = 0x000080DC
-  GL_COLOR_TABLE_ALPHA_SIZE_EXT* = 0x000080DD
-  GL_COLOR_TABLE_LUMINANCE_SIZE_EXT* = 0x000080DE
-  GL_COLOR_TABLE_INTENSITY_SIZE_EXT* = 0x000080DF
-  GL_TEXTURE_INDEX_SIZE_EXT* = 0x000080ED
-  GL_TEXTURE_1D* = 0x00000DE0
-  GL_TEXTURE_2D* = 0x00000DE1
-  GL_TEXTURE_3D_EXT* = 0x0000806F # GL_TEXTURE_CUBE_MAP_ARB  { already defined }
-  GL_PROXY_TEXTURE_1D* = 0x00008063
-  GL_PROXY_TEXTURE_2D* = 0x00008064
-  GL_PROXY_TEXTURE_3D_EXT* = 0x00008070 # GL_PROXY_TEXTURE_CUBE_MAP_ARB  { already defined }
-                                        # GL_TEXTURE_1D  { already defined }
-                                        # GL_TEXTURE_2D  { already defined }
-                                        # GL_TEXTURE_3D_EXT  { already defined }
-                                        # GL_TEXTURE_CUBE_MAP_ARB  { already defined }
-
-proc glColorTableEXT*(target: TGLenum, internalFormat: TGLenum, width: TGLsizei, 
-                      format: TGLenum, thetype: TGLenum, data: PGLvoid){.
-    dynlib: dllname, importc.}
-  # glColorSubTableEXT  { already defined }
-proc glGetColorTableEXT*(target: TGLenum, format: TGLenum, thetype: TGLenum, 
-                         data: PGLvoid){.dynlib: dllname, importc.}
-proc glGetColorTableParameterivEXT*(target: TGLenum, pname: TGLenum, 
-                                    params: PGLint){.dynlib: dllname, importc.}
-proc glGetColorTableParameterfvEXT*(target: TGLenum, pname: TGLenum, 
-                                    params: PGLfloat){.dynlib: dllname, importc.}
-  #***** GL_EXT_point_parameters *****//
-const 
-  GL_POINT_SIZE_MIN_EXT* = 0x00008126
-  GL_POINT_SIZE_MAX_EXT* = 0x00008127
-  GL_POINT_FADE_THRESHOLD_SIZE_EXT* = 0x00008128
-  GL_DISTANCE_ATTENUATION_EXT* = 0x00008129
-
-proc glPointParameterfEXT*(pname: TGLenum, param: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glPointParameterfvEXT*(pname: TGLenum, params: PGLfloat){.dynlib: dllname, 
-    importc.}
-  #***** GL_EXT_polygon_offset *****//
-const 
-  constGL_POLYGON_OFFSET_EXT* = 0x00008037
-  GL_POLYGON_OFFSET_FACTOR_EXT* = 0x00008038
-  GL_POLYGON_OFFSET_BIAS_EXT* = 0x00008039
-
-proc glPolygonOffsetEXT*(factor: TGLfloat, bias: TGLfloat){.dynlib: dllname, 
-    importc.}
-  #***** GL_EXT_secondary_color *****//
-const 
-  GL_COLOR_SUM_EXT* = 0x00008458
-  GL_CURRENT_SECONDARY_COLOR_EXT* = 0x00008459
-  GL_SECONDARY_COLOR_ARRAY_SIZE_EXT* = 0x0000845A
-  GL_SECONDARY_COLOR_ARRAY_TYPE_EXT* = 0x0000845B
-  GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT* = 0x0000845C
-  GL_SECONDARY_COLOR_ARRAY_POINTER_EXT* = 0x0000845D
-  GL_SECONDARY_COLOR_ARRAY_EXT* = 0x0000845E
-
-proc glSecondaryColor3bEXT*(components: TGLbyte){.dynlib: dllname, importc.}
-proc glSecondaryColor3sEXT*(components: TGLshort){.dynlib: dllname, importc.}
-proc glSecondaryColor3iEXT*(components: TGLint){.dynlib: dllname, importc.}
-proc glSecondaryColor3fEXT*(components: TGLfloat){.dynlib: dllname, importc.}
-proc glSecondaryColor3dEXT*(components: TGLdouble){.dynlib: dllname, importc.}
-proc glSecondaryColor3ubEXT*(components: TGLubyte){.dynlib: dllname, importc.}
-proc glSecondaryColor3usEXT*(components: TGLushort){.dynlib: dllname, importc.}
-proc glSecondaryColor3uiEXT*(components: TGLuint){.dynlib: dllname, importc.}
-proc glSecondaryColor3bvEXT*(components: TGLbyte){.dynlib: dllname, importc.}
-proc glSecondaryColor3svEXT*(components: TGLshort){.dynlib: dllname, importc.}
-proc glSecondaryColor3ivEXT*(components: TGLint){.dynlib: dllname, importc.}
-proc glSecondaryColor3fvEXT*(components: TGLfloat){.dynlib: dllname, importc.}
-proc glSecondaryColor3dvEXT*(components: TGLdouble){.dynlib: dllname, importc.}
-proc glSecondaryColor3ubvEXT*(components: TGLubyte){.dynlib: dllname, importc.}
-proc glSecondaryColor3usvEXT*(components: TGLushort){.dynlib: dllname, importc.}
-proc glSecondaryColor3uivEXT*(components: TGLuint){.dynlib: dllname, importc.}
-proc glSecondaryColorPointerEXT*(size: TGLint, thetype: TGLenum, stride: TGLsizei, 
-                                 pointer: PGLvoid){.dynlib: dllname, importc.}
-  #***** GL_EXT_separate_specular_color *****//
-const 
-  GL_LIGHT_MODEL_COLOR_CONTROL_EXT* = 0x000081F8
-  GL_SINGLE_COLOR_EXT* = 0x000081F9
-  GL_SEPARATE_SPECULAR_COLOR_EXT* = 0x000081FA
-
-  #***** GL_EXT_shadow_funcs *****//
-  #***** GL_EXT_shared_texture_palette *****//
-const 
-  GL_SHARED_TEXTURE_PALETTE_EXT* = 0x000081FB
-
-  #***** GL_EXT_stencil_two_side *****//
-const 
-  GL_STENCIL_TEST_TWO_SIDE_EXT* = 0x00008910
-  constGL_ACTIVE_STENCIL_FACE_EXT* = 0x00008911
-
-proc glActiveStencilFaceEXT*(face: TGLenum){.dynlib: dllname, importc.}
-  #***** GL_EXT_stencil_wrap *****//
-const 
-  GL_INCR_WRAP_EXT* = 0x00008507
-  GL_DECR_WRAP_EXT* = 0x00008508
-
-  #***** GL_EXT_subtexture *****//
-proc glTexSubImage1DEXT*(target: TGLenum, level: TGLint, xoffset: TGLint, 
-                         width: TGLsizei, format: TGLenum, thetype: TGLenum, 
-                         pixels: PGLvoid){.dynlib: dllname, importc.}
-proc glTexSubImage2DEXT*(target: TGLenum, level: TGLint, xoffset: TGLint, 
-                         yoffset: TGLint, width: TGLsizei, height: TGLsizei, 
-                         format: TGLenum, thetype: TGLenum, pixels: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glTexSubImage3DEXT*(target: TGLenum, level: TGLint, xoffset: TGLint, 
-                         yoffset: TGLint, zoffset: TGLint, width: TGLsizei, 
-                         height: TGLsizei, depth: TGLsizei, format: TGLenum, 
-                         thetype: TGLenum, pixels: PGLvoid){.dynlib: dllname, 
-    importc.}
-  #***** GL_EXT_texture3D *****//
-const 
-  GL_PACK_SKIP_IMAGES_EXT* = 0x0000806B
-  GL_PACK_IMAGE_HEIGHT_EXT* = 0x0000806C
-  GL_UNPACK_SKIP_IMAGES_EXT* = 0x0000806D
-  GL_UNPACK_IMAGE_HEIGHT_EXT* = 0x0000806E # GL_TEXTURE_3D_EXT  { already defined }
-                                           # GL_PROXY_TEXTURE_3D_EXT  { already defined }
-  GL_TEXTURE_DEPTH_EXT* = 0x00008071
-  GL_TEXTURE_WRAP_R_EXT* = 0x00008072
-  GL_MAX_3D_TEXTURE_SIZE_EXT* = 0x00008073
-
-proc glTexImage3DEXT*(target: TGLenum, level: TGLint, internalformat: TGLenum, 
-                      width: TGLsizei, height: TGLsizei, depth: TGLsizei, 
-                      border: TGLint, format: TGLenum, thetype: TGLenum, 
-                      pixels: PGLvoid){.dynlib: dllname, importc.}
-  #***** GL_EXT_texture_compression_s3tc *****//
-const 
-  GL_COMPRESSED_RGB_S3TC_DXT1_EXT* = 0x000083F0
-  GL_COMPRESSED_RGBA_S3TC_DXT1_EXT* = 0x000083F1
-  GL_COMPRESSED_RGBA_S3TC_DXT3_EXT* = 0x000083F2
-  GL_COMPRESSED_RGBA_S3TC_DXT5_EXT* = 0x000083F3
-
-  #***** GL_EXT_texture_env_add *****//
-  #***** GL_EXT_texture_env_combine *****//
-const 
-  GL_COMBINE_EXT* = 0x00008570
-  GL_COMBINE_RGB_EXT* = 0x00008571
-  GL_COMBINE_ALPHA_EXT* = 0x00008572
-  GL_SOURCE0_RGB_EXT* = 0x00008580
-  GL_SOURCE1_RGB_EXT* = 0x00008581
-  GL_SOURCE2_RGB_EXT* = 0x00008582
-  GL_SOURCE0_ALPHA_EXT* = 0x00008588
-  GL_SOURCE1_ALPHA_EXT* = 0x00008589
-  GL_SOURCE2_ALPHA_EXT* = 0x0000858A
-  GL_OPERAND0_RGB_EXT* = 0x00008590
-  GL_OPERAND1_RGB_EXT* = 0x00008591
-  GL_OPERAND2_RGB_EXT* = 0x00008592
-  GL_OPERAND0_ALPHA_EXT* = 0x00008598
-  GL_OPERAND1_ALPHA_EXT* = 0x00008599
-  GL_OPERAND2_ALPHA_EXT* = 0x0000859A
-  GL_RGB_SCALE_EXT* = 0x00008573
-  GL_ADD_SIGNED_EXT* = 0x00008574
-  GL_INTERPOLATE_EXT* = 0x00008575
-  GL_CONSTANT_EXT* = 0x00008576
-  GL_PRIMARY_COLOR_EXT* = 0x00008577
-  GL_PREVIOUS_EXT* = 0x00008578
-
-  #***** GL_EXT_texture_env_dot3 *****//
-const 
-  GL_DOT3_RGB_EXT* = 0x00008740
-  GL_DOT3_RGBA_EXT* = 0x00008741
-
-  #***** GL_EXT_texture_filter_anisotropic *****//
-const 
-  GL_TEXTURE_MAX_ANISOTROPY_EXT* = 0x000084FE
-  GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT* = 0x000084FF
-
-  #***** GL_EXT_texture_lod_bias *****//
-const 
-  GL_TEXTURE_FILTER_CONTROL_EXT* = 0x00008500
-  GL_TEXTURE_LOD_BIAS_EXT* = 0x00008501
-  GL_MAX_TEXTURE_LOD_BIAS_EXT* = 0x000084FD
-
-  #***** GL_EXT_texture_object *****//
-const 
-  GL_TEXTURE_PRIORITY_EXT* = 0x00008066
-  GL_TEXTURE_RESIDENT_EXT* = 0x00008067
-  GL_TEXTURE_1D_BINDING_EXT* = 0x00008068
-  GL_TEXTURE_2D_BINDING_EXT* = 0x00008069
-  GL_TEXTURE_3D_BINDING_EXT* = 0x0000806A
-
-proc glGenTexturesEXT*(n: TGLsizei, textures: PGLuint){.dynlib: dllname, importc.}
-proc glDeleteTexturesEXT*(n: TGLsizei, textures: PGLuint){.dynlib: dllname, 
-    importc.}
-proc glBindTextureEXT*(target: TGLenum, texture: TGLuint){.dynlib: dllname, 
-    importc.}
-proc glPrioritizeTexturesEXT*(n: TGLsizei, textures: PGLuint, 
-                              priorities: PGLclampf){.dynlib: dllname, importc.}
-proc glAreTexturesResidentEXT*(n: TGLsizei, textures: PGLuint, 
-                               residences: PGLboolean): TGLboolean{.
-    dynlib: dllname, importc.}
-proc glIsTextureEXT*(texture: TGLuint): TGLboolean{.dynlib: dllname, importc.}
-  #***** GL_EXT_vertex_array *****//
-const 
-  GL_VERTEX_ARRAY_EXT* = 0x00008074
-  GL_NORMAL_ARRAY_EXT* = 0x00008075
-  GL_COLOR_ARRAY_EXT* = 0x00008076
-  GL_INDEX_ARRAY_EXT* = 0x00008077
-  GL_TEXTURE_COORD_ARRAY_EXT* = 0x00008078
-  GL_EDGE_FLAG_ARRAY_EXT* = 0x00008079
-  GL_DOUBLE_EXT* = 0x0000140A
-  GL_VERTEX_ARRAY_SIZE_EXT* = 0x0000807A
-  GL_VERTEX_ARRAY_TYPE_EXT* = 0x0000807B
-  GL_VERTEX_ARRAY_STRIDE_EXT* = 0x0000807C
-  GL_VERTEX_ARRAY_COUNT_EXT* = 0x0000807D
-  GL_NORMAL_ARRAY_TYPE_EXT* = 0x0000807E
-  GL_NORMAL_ARRAY_STRIDE_EXT* = 0x0000807F
-  GL_NORMAL_ARRAY_COUNT_EXT* = 0x00008080
-  GL_COLOR_ARRAY_SIZE_EXT* = 0x00008081
-  GL_COLOR_ARRAY_TYPE_EXT* = 0x00008082
-  GL_COLOR_ARRAY_STRIDE_EXT* = 0x00008083
-  GL_COLOR_ARRAY_COUNT_EXT* = 0x00008084
-  GL_INDEX_ARRAY_TYPE_EXT* = 0x00008085
-  GL_INDEX_ARRAY_STRIDE_EXT* = 0x00008086
-  GL_INDEX_ARRAY_COUNT_EXT* = 0x00008087
-  GL_TEXTURE_COORD_ARRAY_SIZE_EXT* = 0x00008088
-  GL_TEXTURE_COORD_ARRAY_TYPE_EXT* = 0x00008089
-  GL_TEXTURE_COORD_ARRAY_STRIDE_EXT* = 0x0000808A
-  GL_TEXTURE_COORD_ARRAY_COUNT_EXT* = 0x0000808B
-  GL_EDGE_FLAG_ARRAY_STRIDE_EXT* = 0x0000808C
-  GL_EDGE_FLAG_ARRAY_COUNT_EXT* = 0x0000808D
-  GL_VERTEX_ARRAY_POINTER_EXT* = 0x0000808E
-  GL_NORMAL_ARRAY_POINTER_EXT* = 0x0000808F
-  GL_COLOR_ARRAY_POINTER_EXT* = 0x00008090
-  GL_INDEX_ARRAY_POINTER_EXT* = 0x00008091
-  GL_TEXTURE_COORD_ARRAY_POINTER_EXT* = 0x00008092
-  GL_EDGE_FLAG_ARRAY_POINTER_EXT* = 0x00008093
-
-proc glArrayElementEXT*(i: TGLint){.dynlib: dllname, importc.}
-proc glDrawArraysEXT*(mode: TGLenum, first: TGLint, count: TGLsizei){.
-    dynlib: dllname, importc.}
-proc glVertexPointerEXT*(size: TGLint, thetype: TGLenum, stride: TGLsizei, 
-                         count: TGLsizei, pointer: PGLvoid){.dynlib: dllname, 
-    importc.}
-proc glNormalPointerEXT*(thetype: TGLenum, stride: TGLsizei, count: TGLsizei, 
-                         pointer: PGLvoid){.dynlib: dllname, importc.}
-proc glColorPointerEXT*(size: TGLint, thetype: TGLenum, stride: TGLsizei, 
-                        count: TGLsizei, pointer: PGLvoid){.dynlib: dllname, 
-    importc.}
-proc glIndexPointerEXT*(thetype: TGLenum, stride: TGLsizei, count: TGLsizei, 
-                        pointer: PGLvoid){.dynlib: dllname, importc.}
-proc glTexCoordPointerEXT*(size: TGLint, thetype: TGLenum, stride: TGLsizei, 
-                           count: TGLsizei, pointer: PGLvoid){.dynlib: dllname, 
-    importc.}
-proc glEdgeFlagPointerEXT*(stride: TGLsizei, count: TGLsizei, pointer: PGLboolean){.
-    dynlib: dllname, importc.}
-proc glGetPointervEXT*(pname: TGLenum, params: PGLvoid){.dynlib: dllname, importc.}
-  #***** GL_EXT_vertex_shader *****//
-const 
-  GL_VERTEX_SHADER_EXT* = 0x00008780
-  GL_VARIANT_VALUE_EXT* = 0x000087E4
-  GL_VARIANT_DATATYPE_EXT* = 0x000087E5
-  GL_VARIANT_ARRAY_STRIDE_EXT* = 0x000087E6
-  GL_VARIANT_ARRAY_TYPE_EXT* = 0x000087E7
-  GL_VARIANT_ARRAY_EXT* = 0x000087E8
-  GL_VARIANT_ARRAY_POINTER_EXT* = 0x000087E9
-  GL_INVARIANT_VALUE_EXT* = 0x000087EA
-  GL_INVARIANT_DATATYPE_EXT* = 0x000087EB
-  GL_LOCAL_CONSTANT_VALUE_EXT* = 0x000087EC
-  GL_LOCAL_CONSTANT_DATATYPE_EXT* = 0x000087ED
-  GL_OP_INDEX_EXT* = 0x00008782
-  GL_OP_NEGATE_EXT* = 0x00008783
-  GL_OP_DOT3_EXT* = 0x00008784
-  GL_OP_DOT4_EXT* = 0x00008785
-  GL_OP_MUL_EXT* = 0x00008786
-  GL_OP_ADD_EXT* = 0x00008787
-  GL_OP_MADD_EXT* = 0x00008788
-  GL_OP_FRAC_EXT* = 0x00008789
-  GL_OP_MAX_EXT* = 0x0000878A
-  GL_OP_MIN_EXT* = 0x0000878B
-  GL_OP_SET_GE_EXT* = 0x0000878C
-  GL_OP_SET_LT_EXT* = 0x0000878D
-  GL_OP_CLAMP_EXT* = 0x0000878E
-  GL_OP_FLOOR_EXT* = 0x0000878F
-  GL_OP_ROUND_EXT* = 0x00008790
-  GL_OP_EXP_BASE_2_EXT* = 0x00008791
-  GL_OP_LOG_BASE_2_EXT* = 0x00008792
-  GL_OP_POWER_EXT* = 0x00008793
-  GL_OP_RECIP_EXT* = 0x00008794
-  GL_OP_RECIP_SQRT_EXT* = 0x00008795
-  GL_OP_SUB_EXT* = 0x00008796
-  GL_OP_CROSS_PRODUCT_EXT* = 0x00008797
-  GL_OP_MULTIPLY_MATRIX_EXT* = 0x00008798
-  GL_OP_MOV_EXT* = 0x00008799
-  GL_OUTPUT_VERTEX_EXT* = 0x0000879A
-  GL_OUTPUT_COLOR0_EXT* = 0x0000879B
-  GL_OUTPUT_COLOR1_EXT* = 0x0000879C
-  GL_OUTPUT_TEXTURE_COORD0_EXT* = 0x0000879D
-  GL_OUTPUT_TEXTURE_COORD1_EXT* = 0x0000879E
-  GL_OUTPUT_TEXTURE_COORD2_EXT* = 0x0000879F
-  GL_OUTPUT_TEXTURE_COORD3_EXT* = 0x000087A0
-  GL_OUTPUT_TEXTURE_COORD4_EXT* = 0x000087A1
-  GL_OUTPUT_TEXTURE_COORD5_EXT* = 0x000087A2
-  GL_OUTPUT_TEXTURE_COORD6_EXT* = 0x000087A3
-  GL_OUTPUT_TEXTURE_COORD7_EXT* = 0x000087A4
-  GL_OUTPUT_TEXTURE_COORD8_EXT* = 0x000087A5
-  GL_OUTPUT_TEXTURE_COORD9_EXT* = 0x000087A6
-  GL_OUTPUT_TEXTURE_COORD10_EXT* = 0x000087A7
-  GL_OUTPUT_TEXTURE_COORD11_EXT* = 0x000087A8
-  GL_OUTPUT_TEXTURE_COORD12_EXT* = 0x000087A9
-  GL_OUTPUT_TEXTURE_COORD13_EXT* = 0x000087AA
-  GL_OUTPUT_TEXTURE_COORD14_EXT* = 0x000087AB
-  GL_OUTPUT_TEXTURE_COORD15_EXT* = 0x000087AC
-  GL_OUTPUT_TEXTURE_COORD16_EXT* = 0x000087AD
-  GL_OUTPUT_TEXTURE_COORD17_EXT* = 0x000087AE
-  GL_OUTPUT_TEXTURE_COORD18_EXT* = 0x000087AF
-  GL_OUTPUT_TEXTURE_COORD19_EXT* = 0x000087B0
-  GL_OUTPUT_TEXTURE_COORD20_EXT* = 0x000087B1
-  GL_OUTPUT_TEXTURE_COORD21_EXT* = 0x000087B2
-  GL_OUTPUT_TEXTURE_COORD22_EXT* = 0x000087B3
-  GL_OUTPUT_TEXTURE_COORD23_EXT* = 0x000087B4
-  GL_OUTPUT_TEXTURE_COORD24_EXT* = 0x000087B5
-  GL_OUTPUT_TEXTURE_COORD25_EXT* = 0x000087B6
-  GL_OUTPUT_TEXTURE_COORD26_EXT* = 0x000087B7
-  GL_OUTPUT_TEXTURE_COORD27_EXT* = 0x000087B8
-  GL_OUTPUT_TEXTURE_COORD28_EXT* = 0x000087B9
-  GL_OUTPUT_TEXTURE_COORD29_EXT* = 0x000087BA
-  GL_OUTPUT_TEXTURE_COORD30_EXT* = 0x000087BB
-  GL_OUTPUT_TEXTURE_COORD31_EXT* = 0x000087BC
-  GL_OUTPUT_FOG_EXT* = 0x000087BD
-  GL_SCALAR_EXT* = 0x000087BE
-  GL_VECTOR_EXT* = 0x000087BF
-  GL_MATRIX_EXT* = 0x000087C0
-  GL_VARIANT_EXT* = 0x000087C1
-  GL_INVARIANT_EXT* = 0x000087C2
-  GL_LOCAL_CONSTANT_EXT* = 0x000087C3
-  GL_LOCAL_EXT* = 0x000087C4
-  GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT* = 0x000087C5
-  GL_MAX_VERTEX_SHADER_VARIANTS_EXT* = 0x000087C6
-  GL_MAX_VERTEX_SHADER_INVARIANTS_EXT* = 0x000087C7
-  GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT* = 0x000087C8
-  GL_MAX_VERTEX_SHADER_LOCALS_EXT* = 0x000087C9
-  GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT* = 0x000087CA
-  GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT* = 0x000087CB
-  GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT* = 0x000087CC
-  GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT* = 0x000087CD
-  GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT* = 0x000087CE
-  GL_VERTEX_SHADER_INSTRUCTIONS_EXT* = 0x000087CF
-  GL_VERTEX_SHADER_VARIANTS_EXT* = 0x000087D0
-  GL_VERTEX_SHADER_INVARIANTS_EXT* = 0x000087D1
-  GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT* = 0x000087D2
-  GL_VERTEX_SHADER_LOCALS_EXT* = 0x000087D3
-  GL_VERTEX_SHADER_BINDING_EXT* = 0x00008781
-  GL_VERTEX_SHADER_OPTIMIZED_EXT* = 0x000087D4
-  GL_X_EXT* = 0x000087D5
-  GL_Y_EXT* = 0x000087D6
-  GL_Z_EXT* = 0x000087D7
-  GL_W_EXT* = 0x000087D8
-  GL_NEGATIVE_X_EXT* = 0x000087D9
-  GL_NEGATIVE_Y_EXT* = 0x000087DA
-  GL_NEGATIVE_Z_EXT* = 0x000087DB
-  GL_NEGATIVE_W_EXT* = 0x000087DC
-  GL_ZERO_EXT* = 0x000087DD
-  GL_ONE_EXT* = 0x000087DE
-  GL_NEGATIVE_ONE_EXT* = 0x000087DF
-  GL_NORMALIZED_RANGE_EXT* = 0x000087E0
-  GL_FULL_RANGE_EXT* = 0x000087E1
-  GL_CURRENT_VERTEX_EXT* = 0x000087E2
-  GL_MVP_MATRIX_EXT* = 0x000087E3
-
-proc glBeginVertexShaderEXT*(){.dynlib: dllname, importc.}
-proc glEndVertexShaderEXT*(){.dynlib: dllname, importc.}
-proc glBindVertexShaderEXT*(id: TGLuint){.dynlib: dllname, importc.}
-proc glGenVertexShadersEXT*(range: TGLuint): TGLuint{.dynlib: dllname, importc.}
-proc glDeleteVertexShaderEXT*(id: TGLuint){.dynlib: dllname, importc.}
-proc glShaderOp1EXT*(op: TGLenum, res: TGLuint, arg1: TGLuint){.dynlib: dllname, 
-    importc.}
-proc glShaderOp2EXT*(op: TGLenum, res: TGLuint, arg1: TGLuint, arg2: TGLuint){.
-    dynlib: dllname, importc.}
-proc glShaderOp3EXT*(op: TGLenum, res: TGLuint, arg1: TGLuint, arg2: TGLuint, 
-                     arg3: TGLuint){.dynlib: dllname, importc.}
-proc glSwizzleEXT*(res: TGLuint, theIn: TGLuint, outX: TGLenum, outY: TGLenum, 
-                   outZ: TGLenum, outW: TGLenum){.dynlib: dllname, importc.}
-proc glWriteMaskEXT*(res: TGLuint, theIn: TGLuint, outX: TGLenum, outY: TGLenum, 
-                     outZ: TGLenum, outW: TGLenum){.dynlib: dllname, importc.}
-proc glInsertComponentEXT*(res: TGLuint, src: TGLuint, num: TGLuint){.
-    dynlib: dllname, importc.}
-proc glExtractComponentEXT*(res: TGLuint, src: TGLuint, num: TGLuint){.
-    dynlib: dllname, importc.}
-proc glGenSymbolsEXT*(datatype: TGLenum, storagetype: TGLenum, range: TGLenum, 
-                      components: TGLuint): TGLuint{.dynlib: dllname, importc.}
-proc glSetInvariantEXT*(id: TGLuint, thetype: TGLenum, address: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glSetLocalConstantEXT*(id: TGLuint, thetype: TGLenum, address: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glVariantbvEXT*(id: TGLuint, address: PGLbyte){.dynlib: dllname, importc.}
-proc glVariantsvEXT*(id: TGLuint, address: PGLshort){.dynlib: dllname, importc.}
-proc glVariantivEXT*(id: TGLuint, address: PGLint){.dynlib: dllname, importc.}
-proc glVariantfvEXT*(id: TGLuint, address: PGLfloat){.dynlib: dllname, importc.}
-proc glVariantdvEXT*(id: TGLuint, address: PGLdouble){.dynlib: dllname, importc.}
-proc glVariantubvEXT*(id: TGLuint, address: PGLubyte){.dynlib: dllname, importc.}
-proc glVariantusvEXT*(id: TGLuint, address: PGLushort){.dynlib: dllname, importc.}
-proc glVariantuivEXT*(id: TGLuint, address: PGLuint){.dynlib: dllname, importc.}
-proc glVariantPointerEXT*(id: TGLuint, thetype: TGLenum, stride: TGLuint, 
-                          address: PGLvoid){.dynlib: dllname, importc.}
-proc glEnableVariantClientStateEXT*(id: TGLuint){.dynlib: dllname, importc.}
-proc glDisableVariantClientStateEXT*(id: TGLuint){.dynlib: dllname, importc.}
-proc glBindLightParameterEXT*(light: TGLenum, value: TGLenum): TGLuint{.
-    dynlib: dllname, importc.}
-proc glBindMaterialParameterEXT*(face: TGLenum, value: TGLenum): TGLuint{.
-    dynlib: dllname, importc.}
-proc glBindTexGenParameterEXT*(theunit: TGLenum, coord: TGLenum, value: TGLenum): TGLuint{.
-    dynlib: dllname, importc.}
-proc glBindTextureUnitParameterEXT*(theunit: TGLenum, value: TGLenum): TGLuint{.
-    dynlib: dllname, importc.}
-proc glBindParameterEXT*(value: TGLenum): TGLuint{.dynlib: dllname, importc.}
-proc glIsVariantEnabledEXT*(id: TGLuint, cap: TGLenum): TGLboolean{.
-    dynlib: dllname, importc.}
-proc glGetVariantBooleanvEXT*(id: TGLuint, value: TGLenum, data: PGLboolean){.
-    dynlib: dllname, importc.}
-proc glGetVariantIntegervEXT*(id: TGLuint, value: TGLenum, data: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetVariantFloatvEXT*(id: TGLuint, value: TGLenum, data: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetVariantPointervEXT*(id: TGLuint, value: TGLenum, data: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glGetInvariantBooleanvEXT*(id: TGLuint, value: TGLenum, data: PGLboolean){.
-    dynlib: dllname, importc.}
-proc glGetInvariantIntegervEXT*(id: TGLuint, value: TGLenum, data: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetInvariantFloatvEXT*(id: TGLuint, value: TGLenum, data: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetLocalConstantBooleanvEXT*(id: TGLuint, value: TGLenum, data: PGLboolean){.
-    dynlib: dllname, importc.}
-proc glGetLocalConstantIntegervEXT*(id: TGLuint, value: TGLenum, data: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetLocalConstantFloatvEXT*(id: TGLuint, value: TGLenum, data: PGLfloat){.
-    dynlib: dllname, importc.}
-  #***** GL_EXT_vertex_weighting *****//
-const 
-  GL_VERTEX_WEIGHTING_EXT* = 0x00008509
-  GL_MODELVIEW0_EXT* = 0x00001700
-  GL_MODELVIEW1_EXT* = 0x0000850A
-  GL_MODELVIEW0_MATRIX_EXT* = 0x00000BA6
-  GL_MODELVIEW1_MATRIX_EXT* = 0x00008506
-  GL_CURRENT_VERTEX_WEIGHT_EXT* = 0x0000850B
-  GL_VERTEX_WEIGHT_ARRAY_EXT* = 0x0000850C
-  GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT* = 0x0000850D
-  GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT* = 0x0000850E
-  GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT* = 0x0000850F
-  GL_MODELVIEW0_STACK_DEPTH_EXT* = 0x00000BA3
-  GL_MODELVIEW1_STACK_DEPTH_EXT* = 0x00008502
-  GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT* = 0x00008510
-
-proc glVertexWeightfEXT*(weight: TGLfloat){.dynlib: dllname, importc.}
-proc glVertexWeightfvEXT*(weight: PGLfloat){.dynlib: dllname, importc.}
-proc glVertexWeightPointerEXT*(size: TGLint, thetype: TGLenum, stride: TGLsizei, 
-                               pointer: PGLvoid){.dynlib: dllname, importc.}
-  #***** GL_HP_occlusion_test *****//
-const 
-  GL_OCCLUSION_TEST_HP* = 0x00008165
-  GL_OCCLUSION_TEST_RESULT_HP* = 0x00008166
-
-  #***** GL_NV_blend_square *****//
-  #***** GL_NV_copy_depth_to_color *****//
-const 
-  GL_DEPTH_STENCIL_TO_RGBA_NV* = 0x0000886E
-  GL_DEPTH_STENCIL_TO_BGRA_NV* = 0x0000886F
-
-  #***** GL_NV_depth_clamp *****//
-const 
-  GL_DEPTH_CLAMP_NV* = 0x0000864F
-
-  #***** GL_NV_evaluators *****//
-const 
-  GL_EVAL_2D_NV* = 0x000086C0
-  GL_EVAL_TRIANGULAR_2D_NV* = 0x000086C1
-  GL_MAP_TESSELLATION_NV* = 0x000086C2
-  GL_MAP_ATTRIB_U_ORDER_NV* = 0x000086C3
-  GL_MAP_ATTRIB_V_ORDER_NV* = 0x000086C4
-  GL_EVAL_FRACTIONAL_TESSELLATION_NV* = 0x000086C5
-  GL_EVAL_VERTEX_ATTRIB0_NV* = 0x000086C6
-  GL_EVAL_VERTEX_ATTRIB1_NV* = 0x000086C7
-  GL_EVAL_VERTEX_ATTRIB2_NV* = 0x000086C8
-  GL_EVAL_VERTEX_ATTRIB3_NV* = 0x000086C9
-  GL_EVAL_VERTEX_ATTRIB4_NV* = 0x000086CA
-  GL_EVAL_VERTEX_ATTRIB5_NV* = 0x000086CB
-  GL_EVAL_VERTEX_ATTRIB6_NV* = 0x000086CC
-  GL_EVAL_VERTEX_ATTRIB7_NV* = 0x000086CD
-  GL_EVAL_VERTEX_ATTRIB8_NV* = 0x000086CE
-  GL_EVAL_VERTEX_ATTRIB9_NV* = 0x000086CF
-  GL_EVAL_VERTEX_ATTRIB10_NV* = 0x000086D0
-  GL_EVAL_VERTEX_ATTRIB11_NV* = 0x000086D1
-  GL_EVAL_VERTEX_ATTRIB12_NV* = 0x000086D2
-  GL_EVAL_VERTEX_ATTRIB13_NV* = 0x000086D3
-  GL_EVAL_VERTEX_ATTRIB14_NV* = 0x000086D4
-  GL_EVAL_VERTEX_ATTRIB15_NV* = 0x000086D5
-  GL_MAX_MAP_TESSELLATION_NV* = 0x000086D6
-  GL_MAX_RATIONAL_EVAL_ORDER_NV* = 0x000086D7
-
-proc glMapControlPointsNV*(target: TGLenum, index: TGLuint, thetype: TGLenum, 
-                           ustride: TGLsizei, vstride: TGLsizei, uorder: TGLint, 
-                           vorder: TGLint, thepacked: TGLboolean, points: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glMapParameterivNV*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glMapParameterfvNV*(target: TGLenum, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetMapControlPointsNV*(target: TGLenum, index: TGLuint, thetype: TGLenum, 
-                              ustride: TGLsizei, vstride: TGLsizei, 
-                              thepacked: TGLboolean, points: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glGetMapParameterivNV*(target: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetMapParameterfvNV*(target: TGLenum, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetMapAttribParameterivNV*(target: TGLenum, index: TGLuint, pname: TGLenum, 
-                                  params: PGLint){.dynlib: dllname, importc.}
-proc glGetMapAttribParameterfvNV*(target: TGLenum, index: TGLuint, pname: TGLenum, 
-                                  params: PGLfloat){.dynlib: dllname, importc.}
-proc glEvalMapsNV*(target: TGLenum, mode: TGLenum){.dynlib: dllname, importc.}
-  #***** GL_NV_fence *****//
-const 
-  GL_ALL_COMPLETED_NV* = 0x000084F2
-  GL_FENCE_STATUS_NV* = 0x000084F3
-  GL_FENCE_CONDITION_NV* = 0x000084F4
-
-proc glGenFencesNV*(n: TGLsizei, fences: PGLuint){.dynlib: dllname, importc.}
-proc glDeleteFencesNV*(n: TGLsizei, fences: PGLuint){.dynlib: dllname, importc.}
-proc glSetFenceNV*(fence: TGLuint, condition: TGLenum){.dynlib: dllname, importc.}
-proc glTestFenceNV*(fence: TGLuint): TGLboolean{.dynlib: dllname, importc.}
-proc glFinishFenceNV*(fence: TGLuint){.dynlib: dllname, importc.}
-proc glIsFenceNV*(fence: TGLuint): TGLboolean{.dynlib: dllname, importc.}
-proc glGetFenceivNV*(fence: TGLuint, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-  #***** GL_NV_fog_distance *****//
-const 
-  GL_FOG_DISTANCE_MODE_NV* = 0x0000855A
-  GL_EYE_RADIAL_NV* = 0x0000855B
-  GL_EYE_PLANE_ABSOLUTE_NV* = 0x0000855C
-
-  #***** GL_NV_light_max_exponent *****//
-const 
-  GL_MAX_SHININESS_NV* = 0x00008504
-  GL_MAX_SPOT_EXPONENT_NV* = 0x00008505
-
-  #***** GL_NV_multisample_filter_hint *****//
-const 
-  GL_MULTISAMPLE_FILTER_HINT_NV* = 0x00008534
-
-  #***** GL_NV_occlusion_query *****//
-  # GL_OCCLUSION_TEST_HP  { already defined }
-  # GL_OCCLUSION_TEST_RESULT_HP  { already defined }
-const 
-  GL_PIXEL_COUNTER_BITS_NV* = 0x00008864
-  GL_CURRENT_OCCLUSION_QUERY_ID_NV* = 0x00008865
-  GL_PIXEL_COUNT_NV* = 0x00008866
-  GL_PIXEL_COUNT_AVAILABLE_NV* = 0x00008867
-
-proc glGenOcclusionQueriesNV*(n: TGLsizei, ids: PGLuint){.dynlib: dllname, 
-    importc.}
-proc glDeleteOcclusionQueriesNV*(n: TGLsizei, ids: PGLuint){.dynlib: dllname, 
-    importc.}
-proc glIsOcclusionQueryNV*(id: TGLuint): TGLboolean{.dynlib: dllname, importc.}
-proc glBeginOcclusionQueryNV*(id: TGLuint){.dynlib: dllname, importc.}
-proc glEndOcclusionQueryNV*(){.dynlib: dllname, importc.}
-proc glGetOcclusionQueryivNV*(id: TGLuint, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetOcclusionQueryuivNV*(id: TGLuint, pname: TGLenum, params: PGLuint){.
-    dynlib: dllname, importc.}
-  #***** GL_NV_packed_depth_stencil *****//
-const 
-  GL_DEPTH_STENCIL_NV* = 0x000084F9
-  GL_UNSIGNED_INT_24_8_NV* = 0x000084FA
-
-  #***** GL_NV_point_sprite *****//
-const 
-  GL_POINT_SPRITE_NV* = 0x00008861
-  GL_COORD_REPLACE_NV* = 0x00008862
-  GL_POINT_SPRITE_R_MODE_NV* = 0x00008863
-
-proc glPointParameteriNV*(pname: TGLenum, param: TGLint){.dynlib: dllname, importc.}
-proc glPointParameterivNV*(pname: TGLenum, params: PGLint){.dynlib: dllname, 
-    importc.}
-  #***** GL_NV_register_combiners *****//
-const 
-  GL_REGISTER_COMBINERS_NV* = 0x00008522
-  GL_COMBINER0_NV* = 0x00008550
-  GL_COMBINER1_NV* = 0x00008551
-  GL_COMBINER2_NV* = 0x00008552
-  GL_COMBINER3_NV* = 0x00008553
-  GL_COMBINER4_NV* = 0x00008554
-  GL_COMBINER5_NV* = 0x00008555
-  GL_COMBINER6_NV* = 0x00008556
-  GL_COMBINER7_NV* = 0x00008557
-  GL_VARIABLE_A_NV* = 0x00008523
-  GL_VARIABLE_B_NV* = 0x00008524
-  GL_VARIABLE_C_NV* = 0x00008525
-  GL_VARIABLE_D_NV* = 0x00008526
-  GL_VARIABLE_E_NV* = 0x00008527
-  GL_VARIABLE_F_NV* = 0x00008528
-  GL_VARIABLE_G_NV* = 0x00008529
-  GL_CONSTANT_COLOR0_NV* = 0x0000852A
-  GL_CONSTANT_COLOR1_NV* = 0x0000852B
-  GL_PRIMARY_COLOR_NV* = 0x0000852C
-  GL_SECONDARY_COLOR_NV* = 0x0000852D
-  GL_SPARE0_NV* = 0x0000852E
-  GL_SPARE1_NV* = 0x0000852F
-  GL_UNSIGNED_IDENTITY_NV* = 0x00008536
-  GL_UNSIGNED_INVERT_NV* = 0x00008537
-  GL_EXPAND_NORMAL_NV* = 0x00008538
-  GL_EXPAND_NEGATE_NV* = 0x00008539
-  GL_HALF_BIAS_NORMAL_NV* = 0x0000853A
-  GL_HALF_BIAS_NEGATE_NV* = 0x0000853B
-  GL_SIGNED_IDENTITY_NV* = 0x0000853C
-  GL_SIGNED_NEGATE_NV* = 0x0000853D
-  GL_E_TIMES_F_NV* = 0x00008531
-  GL_SPARE0_PLUS_SECONDARY_COLOR_NV* = 0x00008532
-  GL_SCALE_BY_TWO_NV* = 0x0000853E
-  GL_SCALE_BY_FOUR_NV* = 0x0000853F
-  GL_SCALE_BY_ONE_HALF_NV* = 0x00008540
-  GL_BIAS_BY_NEGATIVE_ONE_HALF_NV* = 0x00008541
-  GL_DISCARD_NV* = 0x00008530
-  constGL_COMBINER_INPUT_NV* = 0x00008542
-  GL_COMBINER_MAPPING_NV* = 0x00008543
-  GL_COMBINER_COMPONENT_USAGE_NV* = 0x00008544
-  GL_COMBINER_AB_DOT_PRODUCT_NV* = 0x00008545
-  GL_COMBINER_CD_DOT_PRODUCT_NV* = 0x00008546
-  GL_COMBINER_MUX_SUM_NV* = 0x00008547
-  GL_COMBINER_SCALE_NV* = 0x00008548
-  GL_COMBINER_BIAS_NV* = 0x00008549
-  GL_COMBINER_AB_OUTPUT_NV* = 0x0000854A
-  GL_COMBINER_CD_OUTPUT_NV* = 0x0000854B
-  GL_COMBINER_SUM_OUTPUT_NV* = 0x0000854C
-  GL_NUM_GENERAL_COMBINERS_NV* = 0x0000854E
-  GL_COLOR_SUM_CLAMP_NV* = 0x0000854F
-  GL_MAX_GENERAL_COMBINERS_NV* = 0x0000854D
-
-proc glCombinerParameterfvNV*(pname: TGLenum, params: PGLfloat){.dynlib: dllname, 
-    importc.}
-proc glCombinerParameterivNV*(pname: TGLenum, params: PGLint){.dynlib: dllname, 
-    importc.}
-proc glCombinerParameterfNV*(pname: TGLenum, param: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glCombinerParameteriNV*(pname: TGLenum, param: TGLint){.dynlib: dllname, 
-    importc.}
-proc glCombinerInputNV*(stage: TGLenum, portion: TGLenum, variable: TGLenum, 
-                        input: TGLenum, mapping: TGLenum, componentUsage: TGLenum){.
-    dynlib: dllname, importc.}
-proc glCombinerOutputNV*(stage: TGLenum, portion: TGLenum, abOutput: TGLenum, 
-                         cdOutput: TGLenum, sumOutput: TGLenum, scale: TGLenum, 
-                         bias: TGLenum, abDotProduct: TGLboolean, 
-                         cdDotProduct: TGLboolean, muxSum: TGLboolean){.
-    dynlib: dllname, importc.}
-proc glFinalCombinerInputNV*(variable: TGLenum, input: TGLenum, mapping: TGLenum, 
-                             componentUsage: TGLenum){.dynlib: dllname, importc.}
-proc glGetCombinerInputParameterfvNV*(stage: TGLenum, portion: TGLenum, 
-                                      variable: TGLenum, pname: TGLenum, 
-                                      params: PGLfloat){.dynlib: dllname, 
-    importc.}
-proc glGetCombinerInputParameterivNV*(stage: TGLenum, portion: TGLenum, 
-                                      variable: TGLenum, pname: TGLenum, 
-                                      params: PGLint){.dynlib: dllname, importc.}
-proc glGetCombinerOutputParameterfvNV*(stage: TGLenum, portion: TGLenum, 
-                                       pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetCombinerOutputParameterivNV*(stage: TGLenum, portion: TGLenum, 
-                                       pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetFinalCombinerInputParameterfvNV*(variable: TGLenum, pname: TGLenum, 
-    params: PGLfloat){.dynlib: dllname, importc.}
-proc glGetFinalCombinerInputParameterivNV*(variable: TGLenum, pname: TGLenum, 
-    params: PGLint){.dynlib: dllname, importc.}
-  #***** GL_NV_register_combiners2 *****//
-const 
-  GL_PER_STAGE_CONSTANTS_NV* = 0x00008535
-
-proc glCombinerStageParameterfvNV*(stage: TGLenum, pname: TGLenum, 
-                                   params: PGLfloat){.dynlib: dllname, importc.}
-proc glGetCombinerStageParameterfvNV*(stage: TGLenum, pname: TGLenum, 
-                                      params: PGLfloat){.dynlib: dllname, 
-    importc.}
-  #***** GL_NV_texgen_emboss *****//
-const 
-  GL_EMBOSS_MAP_NV* = 0x0000855F
-  GL_EMBOSS_LIGHT_NV* = 0x0000855D
-  GL_EMBOSS_CONSTANT_NV* = 0x0000855E
-
-  #***** GL_NV_texgen_reflection *****//
-const 
-  GL_NORMAL_MAP_NV* = 0x00008511
-  GL_REFLECTION_MAP_NV* = 0x00008512
-
-  #***** GL_NV_texture_compression_vtc *****//
-  # GL_COMPRESSED_RGB_S3TC_DXT1_EXT  { already defined }
-  # GL_COMPRESSED_RGBA_S3TC_DXT1_EXT  { already defined }
-  # GL_COMPRESSED_RGBA_S3TC_DXT3_EXT  { already defined }
-  # GL_COMPRESSED_RGBA_S3TC_DXT5_EXT  { already defined }
-  #***** GL_NV_texture_env_combine4 *****//
-const 
-  GL_COMBINE4_NV* = 0x00008503
-  GL_SOURCE3_RGB_NV* = 0x00008583
-  GL_SOURCE3_ALPHA_NV* = 0x0000858B
-  GL_OPERAND3_RGB_NV* = 0x00008593
-  GL_OPERAND3_ALPHA_NV* = 0x0000859B
-
-  #***** GL_NV_texture_rectangle *****//
-const 
-  GL_TEXTURE_RECTANGLE_NV* = 0x000084F5
-  GL_TEXTURE_BINDING_RECTANGLE_NV* = 0x000084F6
-  GL_PROXY_TEXTURE_RECTANGLE_NV* = 0x000084F7
-  GL_MAX_RECTANGLE_TEXTURE_SIZE_NV* = 0x000084F8
-
-  #***** GL_NV_texture_shader *****//
-const 
-  GL_TEXTURE_SHADER_NV* = 0x000086DE
-  GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV* = 0x000086D9
-  GL_SHADER_OPERATION_NV* = 0x000086DF
-  GL_CULL_MODES_NV* = 0x000086E0
-  GL_OFFSET_TEXTURE_MATRIX_NV* = 0x000086E1
-  GL_OFFSET_TEXTURE_SCALE_NV* = 0x000086E2
-  GL_OFFSET_TEXTURE_BIAS_NV* = 0x000086E3
-  GL_PREVIOUS_TEXTURE_INPUT_NV* = 0x000086E4
-  GL_CONST_EYE_NV* = 0x000086E5
-  GL_SHADER_CONSISTENT_NV* = 0x000086DD
-  GL_PASS_THROUGH_NV* = 0x000086E6
-  GL_CULL_FRAGMENT_NV* = 0x000086E7
-  GL_OFFSET_TEXTURE_2D_NV* = 0x000086E8
-  GL_OFFSET_TEXTURE_RECTANGLE_NV* = 0x0000864C
-  GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV* = 0x0000864D
-  GL_DEPENDENT_AR_TEXTURE_2D_NV* = 0x000086E9
-  GL_DEPENDENT_GB_TEXTURE_2D_NV* = 0x000086EA
-  GL_DOT_PRODUCT_NV* = 0x000086EC
-  GL_DOT_PRODUCT_DEPTH_REPLACE_NV* = 0x000086ED
-  GL_DOT_PRODUCT_TEXTURE_2D_NV* = 0x000086EE
-  GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV* = 0x0000864E
-  GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV* = 0x000086F0
-  GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV* = 0x000086F1
-  GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV* = 0x000086F2
-  GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV* = 0x000086F3
-  GL_HILO_NV* = 0x000086F4
-  GL_DSDT_NV* = 0x000086F5
-  GL_DSDT_MAG_NV* = 0x000086F6
-  GL_DSDT_MAG_VIB_NV* = 0x000086F7
-  GL_UNSIGNED_INT_S8_S8_8_8_NV* = 0x000086DA
-  GL_UNSIGNED_INT_8_8_S8_S8_REV_NV* = 0x000086DB
-  GL_SIGNED_RGBA_NV* = 0x000086FB
-  GL_SIGNED_RGBA8_NV* = 0x000086FC
-  GL_SIGNED_RGB_NV* = 0x000086FE
-  GL_SIGNED_RGB8_NV* = 0x000086FF
-  GL_SIGNED_LUMINANCE_NV* = 0x00008701
-  GL_SIGNED_LUMINANCE8_NV* = 0x00008702
-  GL_SIGNED_LUMINANCE_ALPHA_NV* = 0x00008703
-  GL_SIGNED_LUMINANCE8_ALPHA8_NV* = 0x00008704
-  GL_SIGNED_ALPHA_NV* = 0x00008705
-  GL_SIGNED_ALPHA8_NV* = 0x00008706
-  GL_SIGNED_INTENSITY_NV* = 0x00008707
-  GL_SIGNED_INTENSITY8_NV* = 0x00008708
-  GL_SIGNED_RGB_UNSIGNED_ALPHA_NV* = 0x0000870C
-  GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV* = 0x0000870D
-  GL_HILO16_NV* = 0x000086F8
-  GL_SIGNED_HILO_NV* = 0x000086F9
-  GL_SIGNED_HILO16_NV* = 0x000086FA
-  GL_DSDT8_NV* = 0x00008709
-  GL_DSDT8_MAG8_NV* = 0x0000870A
-  GL_DSDT_MAG_INTENSITY_NV* = 0x000086DC
-  GL_DSDT8_MAG8_INTENSITY8_NV* = 0x0000870B
-  GL_HI_SCALE_NV* = 0x0000870E
-  GL_LO_SCALE_NV* = 0x0000870F
-  GL_DS_SCALE_NV* = 0x00008710
-  GL_DT_SCALE_NV* = 0x00008711
-  GL_MAGNITUDE_SCALE_NV* = 0x00008712
-  GL_VIBRANCE_SCALE_NV* = 0x00008713
-  GL_HI_BIAS_NV* = 0x00008714
-  GL_LO_BIAS_NV* = 0x00008715
-  GL_DS_BIAS_NV* = 0x00008716
-  GL_DT_BIAS_NV* = 0x00008717
-  GL_MAGNITUDE_BIAS_NV* = 0x00008718
-  GL_VIBRANCE_BIAS_NV* = 0x00008719
-  GL_TEXTURE_BORDER_VALUES_NV* = 0x0000871A
-  GL_TEXTURE_HI_SIZE_NV* = 0x0000871B
-  GL_TEXTURE_LO_SIZE_NV* = 0x0000871C
-  GL_TEXTURE_DS_SIZE_NV* = 0x0000871D
-  GL_TEXTURE_DT_SIZE_NV* = 0x0000871E
-  GL_TEXTURE_MAG_SIZE_NV* = 0x0000871F
-
-  #***** GL_NV_texture_shader2 *****//
-const 
-  GL_DOT_PRODUCT_TEXTURE_3D_NV* = 0x000086EF # GL_HILO_NV  { already defined }
-                                             # GL_DSDT_NV  { already defined }
-                                             # GL_DSDT_MAG_NV  { already defined }
-                                             # GL_DSDT_MAG_VIB_NV  { already defined }
-                                             # GL_UNSIGNED_INT_S8_S8_8_8_NV  { already defined }
-                                             # GL_UNSIGNED_INT_8_8_S8_S8_REV_NV  { already defined }
-                                             # GL_SIGNED_RGBA_NV  { already defined }
-                                             # GL_SIGNED_RGBA8_NV  { already defined }
-                                             # GL_SIGNED_RGB_NV  { already defined }
-                                             # GL_SIGNED_RGB8_NV  { already defined }
-                                             # GL_SIGNED_LUMINANCE_NV  { already defined }
-                                             # GL_SIGNED_LUMINANCE8_NV  { already defined }
-                                             # GL_SIGNED_LUMINANCE_ALPHA_NV  { already defined }
-                                             # GL_SIGNED_LUMINANCE8_ALPHA8_NV  { already defined }
-                                             # GL_SIGNED_ALPHA_NV  { already defined }
-                                             # GL_SIGNED_ALPHA8_NV  { already defined }
-                                             # GL_SIGNED_INTENSITY_NV  { already defined }
-                                             # GL_SIGNED_INTENSITY8_NV  { already defined }
-                                             # GL_SIGNED_RGB_UNSIGNED_ALPHA_NV  { already defined }
-                                             # GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV  { already defined }
-                                             # GL_HILO16_NV  { already defined }
-                                             # GL_SIGNED_HILO_NV  { already defined }
-                                             # GL_SIGNED_HILO16_NV  { already defined }
-                                             # GL_DSDT8_NV  { already defined }
-                                             # GL_DSDT8_MAG8_NV  { already defined }
-                                             # GL_DSDT_MAG_INTENSITY_NV  { already defined }
-                                             # GL_DSDT8_MAG8_INTENSITY8_NV  { already defined }
-
-  #***** GL_NV_texture_shader3 *****//
-const 
-  GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV* = 0x00008850
-  GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV* = 0x00008851
-  GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV* = 0x00008852
-  GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV* = 0x00008853
-  GL_OFFSET_HILO_TEXTURE_2D_NV* = 0x00008854
-  GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV* = 0x00008855
-  GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV* = 0x00008856
-  GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV* = 0x00008857
-  GL_DEPENDENT_HILO_TEXTURE_2D_NV* = 0x00008858
-  GL_DEPENDENT_RGB_TEXTURE_3D_NV* = 0x00008859
-  GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV* = 0x0000885A
-  GL_DOT_PRODUCT_PASS_THROUGH_NV* = 0x0000885B
-  GL_DOT_PRODUCT_TEXTURE_1D_NV* = 0x0000885C
-  GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV* = 0x0000885D
-  GL_HILO8_NV* = 0x0000885E
-  GL_SIGNED_HILO8_NV* = 0x0000885F
-  GL_FORCE_BLUE_TO_ONE_NV* = 0x00008860
-
-  #***** GL_NV_vertex_array_range *****//
-const 
-  constGL_VERTEX_ARRAY_RANGE_NV* = 0x0000851D
-  GL_VERTEX_ARRAY_RANGE_LENGTH_NV* = 0x0000851E
-  GL_VERTEX_ARRAY_RANGE_VALID_NV* = 0x0000851F
-  GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV* = 0x00008520
-  GL_VERTEX_ARRAY_RANGE_POINTER_NV* = 0x00008521
-
-proc glVertexArrayRangeNV*(len: TGLsizei, pointer: PGLvoid){.dynlib: dllname, 
-    importc.}
-proc glFlushVertexArrayRangeNV*(){.dynlib: dllname, importc.}
-  #***** GL_NV_vertex_array_range2 *****//
-const 
-  GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV* = 0x00008533
-
-  #***** GL_NV_vertex_program *****//
-const 
-  GL_VERTEX_PROGRAM_NV* = 0x00008620
-  GL_VERTEX_PROGRAM_POINT_SIZE_NV* = 0x00008642
-  GL_VERTEX_PROGRAM_TWO_SIDE_NV* = 0x00008643
-  GL_VERTEX_STATE_PROGRAM_NV* = 0x00008621
-  GL_ATTRIB_ARRAY_SIZE_NV* = 0x00008623
-  GL_ATTRIB_ARRAY_STRIDE_NV* = 0x00008624
-  GL_ATTRIB_ARRAY_TYPE_NV* = 0x00008625
-  GL_CURRENT_ATTRIB_NV* = 0x00008626
-  GL_PROGRAM_PARAMETER_NV* = 0x00008644
-  GL_ATTRIB_ARRAY_POINTER_NV* = 0x00008645
-  GL_PROGRAM_TARGET_NV* = 0x00008646
-  GL_PROGRAM_LENGTH_NV* = 0x00008627
-  GL_PROGRAM_RESIDENT_NV* = 0x00008647
-  GL_PROGRAM_STRING_NV* = 0x00008628
-  constGL_TRACK_MATRIX_NV* = 0x00008648
-  GL_TRACK_MATRIX_TRANSFORM_NV* = 0x00008649
-  GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV* = 0x0000862E
-  GL_MAX_TRACK_MATRICES_NV* = 0x0000862F
-  GL_CURRENT_MATRIX_STACK_DEPTH_NV* = 0x00008640
-  GL_CURRENT_MATRIX_NV* = 0x00008641
-  GL_VERTEX_PROGRAM_BINDING_NV* = 0x0000864A
-  GL_PROGRAM_ERROR_POSITION_NV* = 0x0000864B
-  GL_MODELVIEW_PROJECTION_NV* = 0x00008629
-  GL_MATRIX0_NV* = 0x00008630
-  GL_MATRIX1_NV* = 0x00008631
-  GL_MATRIX2_NV* = 0x00008632
-  GL_MATRIX3_NV* = 0x00008633
-  GL_MATRIX4_NV* = 0x00008634
-  GL_MATRIX5_NV* = 0x00008635
-  GL_MATRIX6_NV* = 0x00008636
-  GL_MATRIX7_NV* = 0x00008637
-  GL_IDENTITY_NV* = 0x0000862A
-  GL_INVERSE_NV* = 0x0000862B
-  GL_TRANSPOSE_NV* = 0x0000862C
-  GL_INVERSE_TRANSPOSE_NV* = 0x0000862D
-  GL_VERTEX_ATTRIB_ARRAY0_NV* = 0x00008650
-  GL_VERTEX_ATTRIB_ARRAY1_NV* = 0x00008651
-  GL_VERTEX_ATTRIB_ARRAY2_NV* = 0x00008652
-  GL_VERTEX_ATTRIB_ARRAY3_NV* = 0x00008653
-  GL_VERTEX_ATTRIB_ARRAY4_NV* = 0x00008654
-  GL_VERTEX_ATTRIB_ARRAY5_NV* = 0x00008655
-  GL_VERTEX_ATTRIB_ARRAY6_NV* = 0x00008656
-  GL_VERTEX_ATTRIB_ARRAY7_NV* = 0x00008657
-  GL_VERTEX_ATTRIB_ARRAY8_NV* = 0x00008658
-  GL_VERTEX_ATTRIB_ARRAY9_NV* = 0x00008659
-  GL_VERTEX_ATTRIB_ARRAY10_NV* = 0x0000865A
-  GL_VERTEX_ATTRIB_ARRAY11_NV* = 0x0000865B
-  GL_VERTEX_ATTRIB_ARRAY12_NV* = 0x0000865C
-  GL_VERTEX_ATTRIB_ARRAY13_NV* = 0x0000865D
-  GL_VERTEX_ATTRIB_ARRAY14_NV* = 0x0000865E
-  GL_VERTEX_ATTRIB_ARRAY15_NV* = 0x0000865F
-  GL_MAP1_VERTEX_ATTRIB0_4_NV* = 0x00008660
-  GL_MAP1_VERTEX_ATTRIB1_4_NV* = 0x00008661
-  GL_MAP1_VERTEX_ATTRIB2_4_NV* = 0x00008662
-  GL_MAP1_VERTEX_ATTRIB3_4_NV* = 0x00008663
-  GL_MAP1_VERTEX_ATTRIB4_4_NV* = 0x00008664
-  GL_MAP1_VERTEX_ATTRIB5_4_NV* = 0x00008665
-  GL_MAP1_VERTEX_ATTRIB6_4_NV* = 0x00008666
-  GL_MAP1_VERTEX_ATTRIB7_4_NV* = 0x00008667
-  GL_MAP1_VERTEX_ATTRIB8_4_NV* = 0x00008668
-  GL_MAP1_VERTEX_ATTRIB9_4_NV* = 0x00008669
-  GL_MAP1_VERTEX_ATTRIB10_4_NV* = 0x0000866A
-  GL_MAP1_VERTEX_ATTRIB11_4_NV* = 0x0000866B
-  GL_MAP1_VERTEX_ATTRIB12_4_NV* = 0x0000866C
-  GL_MAP1_VERTEX_ATTRIB13_4_NV* = 0x0000866D
-  GL_MAP1_VERTEX_ATTRIB14_4_NV* = 0x0000866E
-  GL_MAP1_VERTEX_ATTRIB15_4_NV* = 0x0000866F
-  GL_MAP2_VERTEX_ATTRIB0_4_NV* = 0x00008670
-  GL_MAP2_VERTEX_ATTRIB1_4_NV* = 0x00008671
-  GL_MAP2_VERTEX_ATTRIB2_4_NV* = 0x00008672
-  GL_MAP2_VERTEX_ATTRIB3_4_NV* = 0x00008673
-  GL_MAP2_VERTEX_ATTRIB4_4_NV* = 0x00008674
-  GL_MAP2_VERTEX_ATTRIB5_4_NV* = 0x00008675
-  GL_MAP2_VERTEX_ATTRIB6_4_NV* = 0x00008676
-  GL_MAP2_VERTEX_ATTRIB7_4_NV* = 0x00008677
-  GL_MAP2_VERTEX_ATTRIB8_4_NV* = 0x00008678
-  GL_MAP2_VERTEX_ATTRIB9_4_NV* = 0x00008679
-  GL_MAP2_VERTEX_ATTRIB10_4_NV* = 0x0000867A
-  GL_MAP2_VERTEX_ATTRIB11_4_NV* = 0x0000867B
-  GL_MAP2_VERTEX_ATTRIB12_4_NV* = 0x0000867C
-  GL_MAP2_VERTEX_ATTRIB13_4_NV* = 0x0000867D
-  GL_MAP2_VERTEX_ATTRIB14_4_NV* = 0x0000867E
-  GL_MAP2_VERTEX_ATTRIB15_4_NV* = 0x0000867F
-
-proc glBindProgramNV*(target: TGLenum, id: TGLuint){.dynlib: dllname, importc.}
-proc glDeleteProgramsNV*(n: TGLsizei, ids: PGLuint){.dynlib: dllname, importc.}
-proc glExecuteProgramNV*(target: TGLenum, id: TGLuint, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGenProgramsNV*(n: TGLsizei, ids: PGLuint){.dynlib: dllname, importc.}
-proc glAreProgramsResidentNV*(n: TGLsizei, ids: PGLuint, residences: PGLboolean): TGLboolean{.
-    dynlib: dllname, importc.}
-proc glRequestResidentProgramsNV*(n: TGLsizei, ids: PGLuint){.dynlib: dllname, 
-    importc.}
-proc glGetProgramParameterfvNV*(target: TGLenum, index: TGLuint, pname: TGLenum, 
-                                params: PGLfloat){.dynlib: dllname, importc.}
-proc glGetProgramParameterdvNV*(target: TGLenum, index: TGLuint, pname: TGLenum, 
-                                params: PGLdouble){.dynlib: dllname, importc.}
-proc glGetProgramivNV*(id: TGLuint, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetProgramStringNV*(id: TGLuint, pname: TGLenum, theProgram: PGLubyte){.
-    dynlib: dllname, importc.}
-proc glGetTrackMatrixivNV*(target: TGLenum, address: TGLuint, pname: TGLenum, 
-                           params: PGLint){.dynlib: dllname, importc.}
-proc glGetVertexAttribdvNV*(index: TGLuint, pname: TGLenum, params: PGLdouble){.
-    dynlib: dllname, importc.}
-proc glGetVertexAttribfvNV*(index: TGLuint, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetVertexAttribivNV*(index: TGLuint, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glGetVertexAttribPointervNV*(index: TGLuint, pname: TGLenum, pointer: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glIsProgramNV*(id: TGLuint): TGLboolean{.dynlib: dllname, importc.}
-proc glLoadProgramNV*(target: TGLenum, id: TGLuint, length: TGLsizei, 
-                      theProgram: PGLubyte){.dynlib: dllname, importc.}
-proc glProgramParameter4fNV*(target: TGLenum, index: TGLuint, x: TGLfloat, 
-                             y: TGLfloat, z: TGLfloat, w: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glProgramParameter4fvNV*(target: TGLenum, index: TGLuint, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glProgramParameters4dvNV*(target: TGLenum, index: TGLuint, num: TGLuint, 
-                               params: PGLdouble){.dynlib: dllname, importc.}
-proc glProgramParameters4fvNV*(target: TGLenum, index: TGLuint, num: TGLuint, 
-                               params: PGLfloat){.dynlib: dllname, importc.}
-proc glTrackMatrixNV*(target: TGLenum, address: TGLuint, matrix: TGLenum, 
-                      transform: TGLenum){.dynlib: dllname, importc.}
-proc glVertexAttribPointerNV*(index: TGLuint, size: TGLint, thetype: TGLenum, 
-                              stride: TGLsizei, pointer: PGLvoid){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib1sNV*(index: TGLuint, x: TGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib1fNV*(index: TGLuint, x: TGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib1dNV*(index: TGLuint, x: TGLdouble){.dynlib: dllname, importc.}
-proc glVertexAttrib2sNV*(index: TGLuint, x: TGLshort, y: TGLshort){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib2fNV*(index: TGLuint, x: TGLfloat, y: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib2dNV*(index: TGLuint, x: TGLdouble, y: TGLdouble){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib3sNV*(index: TGLuint, x: TGLshort, y: TGLshort, z: TGLshort){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib3fNV*(index: TGLuint, x: TGLfloat, y: TGLfloat, z: TGLfloat){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib3dNV*(index: TGLuint, x: TGLdouble, y: TGLdouble, z: TGLdouble){.
-    dynlib: dllname, importc.}
-proc glVertexAttrib4sNV*(index: TGLuint, x: TGLshort, y: TGLshort, z: TGLshort, 
-                         w: TGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib4fNV*(index: TGLuint, x: TGLfloat, y: TGLfloat, z: TGLfloat, 
-                         w: TGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib4dNV*(index: TGLuint, x: TGLdouble, y: TGLdouble, z: TGLdouble, 
-                         w: TGLdouble){.dynlib: dllname, importc.}
-proc glVertexAttrib4ubNV*(index: TGLuint, x: TGLubyte, y: TGLubyte, z: TGLubyte, 
-                          w: TGLubyte){.dynlib: dllname, importc.}
-proc glVertexAttrib1svNV*(index: TGLuint, v: PGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib1fvNV*(index: TGLuint, v: PGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib1dvNV*(index: TGLuint, v: PGLdouble){.dynlib: dllname, importc.}
-proc glVertexAttrib2svNV*(index: TGLuint, v: PGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib2fvNV*(index: TGLuint, v: PGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib2dvNV*(index: TGLuint, v: PGLdouble){.dynlib: dllname, importc.}
-proc glVertexAttrib3svNV*(index: TGLuint, v: PGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib3fvNV*(index: TGLuint, v: PGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib3dvNV*(index: TGLuint, v: PGLdouble){.dynlib: dllname, importc.}
-proc glVertexAttrib4svNV*(index: TGLuint, v: PGLshort){.dynlib: dllname, importc.}
-proc glVertexAttrib4fvNV*(index: TGLuint, v: PGLfloat){.dynlib: dllname, importc.}
-proc glVertexAttrib4dvNV*(index: TGLuint, v: PGLdouble){.dynlib: dllname, importc.}
-proc glVertexAttrib4ubvNV*(index: TGLuint, v: PGLubyte){.dynlib: dllname, importc.}
-proc glVertexAttribs1svNV*(index: TGLuint, n: TGLsizei, v: PGLshort){.
-    dynlib: dllname, importc.}
-proc glVertexAttribs1fvNV*(index: TGLuint, n: TGLsizei, v: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glVertexAttribs1dvNV*(index: TGLuint, n: TGLsizei, v: PGLdouble){.
-    dynlib: dllname, importc.}
-proc glVertexAttribs2svNV*(index: TGLuint, n: TGLsizei, v: PGLshort){.
-    dynlib: dllname, importc.}
-proc glVertexAttribs2fvNV*(index: TGLuint, n: TGLsizei, v: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glVertexAttribs2dvNV*(index: TGLuint, n: TGLsizei, v: PGLdouble){.
-    dynlib: dllname, importc.}
-proc glVertexAttribs3svNV*(index: TGLuint, n: TGLsizei, v: PGLshort){.
-    dynlib: dllname, importc.}
-proc glVertexAttribs3fvNV*(index: TGLuint, n: TGLsizei, v: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glVertexAttribs3dvNV*(index: TGLuint, n: TGLsizei, v: PGLdouble){.
-    dynlib: dllname, importc.}
-proc glVertexAttribs4svNV*(index: TGLuint, n: TGLsizei, v: PGLshort){.
-    dynlib: dllname, importc.}
-proc glVertexAttribs4fvNV*(index: TGLuint, n: TGLsizei, v: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glVertexAttribs4dvNV*(index: TGLuint, n: TGLsizei, v: PGLdouble){.
-    dynlib: dllname, importc.}
-proc glVertexAttribs4ubvNV*(index: TGLuint, n: TGLsizei, v: PGLubyte){.
-    dynlib: dllname, importc.}
-  #***** GL_NV_vertex_program1_1 *****//
-  #***** GL_ATI_element_array *****//
-const 
-  GL_ELEMENT_ARRAY_ATI* = 0x00008768
-  GL_ELEMENT_ARRAY_TYPE_ATI* = 0x00008769
-  GL_ELEMENT_ARRAY_POINTER_ATI* = 0x0000876A
-
-proc glElementPointerATI*(thetype: TGLenum, pointer: PGLvoid){.dynlib: dllname, 
-    importc.}
-proc glDrawElementArrayATI*(mode: TGLenum, count: TGLsizei){.dynlib: dllname, 
-    importc.}
-proc glDrawRangeElementArrayATI*(mode: TGLenum, start: TGLuint, theend: TGLuint, 
-                                 count: TGLsizei){.dynlib: dllname, importc.}
-  #***** GL_ATI_envmap_bumpmap *****//
-const 
-  GL_BUMP_ROT_MATRIX_ATI* = 0x00008775
-  GL_BUMP_ROT_MATRIX_SIZE_ATI* = 0x00008776
-  GL_BUMP_NUM_TEX_UNITS_ATI* = 0x00008777
-  GL_BUMP_TEX_UNITS_ATI* = 0x00008778
-  GL_DUDV_ATI* = 0x00008779
-  GL_DU8DV8_ATI* = 0x0000877A
-  GL_BUMP_ENVMAP_ATI* = 0x0000877B
-  GL_BUMP_TARGET_ATI* = 0x0000877C
-
-proc glTexBumpParameterivATI*(pname: TGLenum, param: PGLint){.dynlib: dllname, 
-    importc.}
-proc glTexBumpParameterfvATI*(pname: TGLenum, param: PGLfloat){.dynlib: dllname, 
-    importc.}
-proc glGetTexBumpParameterivATI*(pname: TGLenum, param: PGLint){.dynlib: dllname, 
-    importc.}
-proc glGetTexBumpParameterfvATI*(pname: TGLenum, param: PGLfloat){.
-    dynlib: dllname, importc.}
-  #***** GL_ATI_fragment_shader *****//
-const 
-  GL_FRAGMENT_SHADER_ATI* = 0x00008920
-  GL_REG_0_ATI* = 0x00008921
-  GL_REG_1_ATI* = 0x00008922
-  GL_REG_2_ATI* = 0x00008923
-  GL_REG_3_ATI* = 0x00008924
-  GL_REG_4_ATI* = 0x00008925
-  GL_REG_5_ATI* = 0x00008926
-  GL_CON_0_ATI* = 0x00008941
-  GL_CON_1_ATI* = 0x00008942
-  GL_CON_2_ATI* = 0x00008943
-  GL_CON_3_ATI* = 0x00008944
-  GL_CON_4_ATI* = 0x00008945
-  GL_CON_5_ATI* = 0x00008946
-  GL_CON_6_ATI* = 0x00008947
-  GL_CON_7_ATI* = 0x00008948
-  GL_MOV_ATI* = 0x00008961
-  GL_ADD_ATI* = 0x00008963
-  GL_MUL_ATI* = 0x00008964
-  GL_SUB_ATI* = 0x00008965
-  GL_DOT3_ATI* = 0x00008966
-  GL_DOT4_ATI* = 0x00008967
-  GL_MAD_ATI* = 0x00008968
-  GL_LERP_ATI* = 0x00008969
-  GL_CND_ATI* = 0x0000896A
-  GL_CND0_ATI* = 0x0000896B
-  GL_DOT2_ADD_ATI* = 0x0000896C
-  GL_SECONDARY_INTERPOLATOR_ATI* = 0x0000896D
-  GL_SWIZZLE_STR_ATI* = 0x00008976
-  GL_SWIZZLE_STQ_ATI* = 0x00008977
-  GL_SWIZZLE_STR_DR_ATI* = 0x00008978
-  GL_SWIZZLE_STQ_DQ_ATI* = 0x00008979
-  GL_RED_BIT_ATI* = 0x00000001
-  GL_GREEN_BIT_ATI* = 0x00000002
-  GL_BLUE_BIT_ATI* = 0x00000004
-  GL_2X_BIT_ATI* = 0x00000001
-  GL_4X_BIT_ATI* = 0x00000002
-  GL_8X_BIT_ATI* = 0x00000004
-  GL_HALF_BIT_ATI* = 0x00000008
-  GL_QUARTER_BIT_ATI* = 0x00000010
-  GL_EIGHTH_BIT_ATI* = 0x00000020
-  GL_SATURATE_BIT_ATI* = 0x00000040 # GL_2X_BIT_ATI  { already defined }
-  GL_COMP_BIT_ATI* = 0x00000002
-  GL_NEGATE_BIT_ATI* = 0x00000004
-  GL_BIAS_BIT_ATI* = 0x00000008
-
-proc glGenFragmentShadersATI*(range: TGLuint): TGLuint{.dynlib: dllname, importc.}
-proc glBindFragmentShaderATI*(id: TGLuint){.dynlib: dllname, importc.}
-proc glDeleteFragmentShaderATI*(id: TGLuint){.dynlib: dllname, importc.}
-proc glBeginFragmentShaderATI*(){.dynlib: dllname, importc.}
-proc glEndFragmentShaderATI*(){.dynlib: dllname, importc.}
-proc glPassTexCoordATI*(dst: TGLuint, coord: TGLuint, swizzle: TGLenum){.
-    dynlib: dllname, importc.}
-proc glSampleMapATI*(dst: TGLuint, interp: TGLuint, swizzle: TGLenum){.
-    dynlib: dllname, importc.}
-proc glColorFragmentOp1ATI*(op: TGLenum, dst: TGLuint, dstMask: TGLuint, 
-                            dstMod: TGLuint, arg1: TGLuint, arg1Rep: TGLuint, 
-                            arg1Mod: TGLuint){.dynlib: dllname, importc.}
-proc glColorFragmentOp2ATI*(op: TGLenum, dst: TGLuint, dstMask: TGLuint, 
-                            dstMod: TGLuint, arg1: TGLuint, arg1Rep: TGLuint, 
-                            arg1Mod: TGLuint, arg2: TGLuint, arg2Rep: TGLuint, 
-                            arg2Mod: TGLuint){.dynlib: dllname, importc.}
-proc glColorFragmentOp3ATI*(op: TGLenum, dst: TGLuint, dstMask: TGLuint, 
-                            dstMod: TGLuint, arg1: TGLuint, arg1Rep: TGLuint, 
-                            arg1Mod: TGLuint, arg2: TGLuint, arg2Rep: TGLuint, 
-                            arg2Mod: TGLuint, arg3: TGLuint, arg3Rep: TGLuint, 
-                            arg3Mod: TGLuint){.dynlib: dllname, importc.}
-proc glAlphaFragmentOp1ATI*(op: TGLenum, dst: TGLuint, dstMod: TGLuint, 
-                            arg1: TGLuint, arg1Rep: TGLuint, arg1Mod: TGLuint){.
-    dynlib: dllname, importc.}
-proc glAlphaFragmentOp2ATI*(op: TGLenum, dst: TGLuint, dstMod: TGLuint, 
-                            arg1: TGLuint, arg1Rep: TGLuint, arg1Mod: TGLuint, 
-                            arg2: TGLuint, arg2Rep: TGLuint, arg2Mod: TGLuint){.
-    dynlib: dllname, importc.}
-proc glAlphaFragmentOp3ATI*(op: TGLenum, dst: TGLuint, dstMod: TGLuint, 
-                            arg1: TGLuint, arg1Rep: TGLuint, arg1Mod: TGLuint, 
-                            arg2: TGLuint, arg2Rep: TGLuint, arg2Mod: TGLuint, 
-                            arg3: TGLuint, arg3Rep: TGLuint, arg3Mod: TGLuint){.
-    dynlib: dllname, importc.}
-proc glSetFragmentShaderConstantATI*(dst: TGLuint, value: PGLfloat){.
-    dynlib: dllname, importc.}
-  #***** GL_ATI_pn_triangles *****//
-const 
-  GL_PN_TRIANGLES_ATI* = 0x000087F0
-  GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI* = 0x000087F1
-  GL_PN_TRIANGLES_POINT_MODE_ATI* = 0x000087F2
-  GL_PN_TRIANGLES_NORMAL_MODE_ATI* = 0x000087F3
-  GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI* = 0x000087F4
-  GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI* = 0x000087F5
-  GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI* = 0x000087F6
-  GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI* = 0x000087F7
-  GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI* = 0x000087F8
-
-proc glPNTrianglesiATI*(pname: TGLenum, param: TGLint){.dynlib: dllname, importc.}
-proc glPNTrianglesfATI*(pname: TGLenum, param: TGLfloat){.dynlib: dllname, importc.}
-  #***** GL_ATI_texture_mirror_once *****//
-const 
-  GL_MIRROR_CLAMP_ATI* = 0x00008742
-  GL_MIRROR_CLAMP_TO_EDGE_ATI* = 0x00008743
-
-  #***** GL_ATI_vertex_array_object *****//
-const 
-  GL_STATIC_ATI* = 0x00008760
-  GL_DYNAMIC_ATI* = 0x00008761
-  GL_PRESERVE_ATI* = 0x00008762
-  GL_DISCARD_ATI* = 0x00008763
-  GL_OBJECT_BUFFER_SIZE_ATI* = 0x00008764
-  GL_OBJECT_BUFFER_USAGE_ATI* = 0x00008765
-  GL_ARRAY_OBJECT_BUFFER_ATI* = 0x00008766
-  GL_ARRAY_OBJECT_OFFSET_ATI* = 0x00008767
-
-proc glNewObjectBufferATI*(size: TGLsizei, pointer: PGLvoid, usage: TGLenum): TGLuint{.
-    dynlib: dllname, importc.}
-proc glIsObjectBufferATI*(buffer: TGLuint): TGLboolean{.dynlib: dllname, importc.}
-proc glUpdateObjectBufferATI*(buffer: TGLuint, offset: TGLuint, size: TGLsizei, 
-                              pointer: PGLvoid, preserve: TGLenum){.
-    dynlib: dllname, importc.}
-proc glGetObjectBufferfvATI*(buffer: TGLuint, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetObjectBufferivATI*(buffer: TGLuint, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glDeleteObjectBufferATI*(buffer: TGLuint){.dynlib: dllname, importc.}
-proc glArrayObjectATI*(thearray: TGLenum, size: TGLint, thetype: TGLenum, 
-                       stride: TGLsizei, buffer: TGLuint, offset: TGLuint){.
-    dynlib: dllname, importc.}
-proc glGetArrayObjectfvATI*(thearray: TGLenum, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetArrayObjectivATI*(thearray: TGLenum, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-proc glVariantArrayObjectATI*(id: TGLuint, thetype: TGLenum, stride: TGLsizei, 
-                              buffer: TGLuint, offset: TGLuint){.dynlib: dllname, 
-    importc.}
-proc glGetVariantArrayObjectfvATI*(id: TGLuint, pname: TGLenum, params: PGLfloat){.
-    dynlib: dllname, importc.}
-proc glGetVariantArrayObjectivATI*(id: TGLuint, pname: TGLenum, params: PGLint){.
-    dynlib: dllname, importc.}
-  #***** GL_ATI_vertex_streams *****//
-const 
-  GL_MAX_VERTEX_STREAMS_ATI* = 0x0000876B
-  GL_VERTEX_STREAM0_ATI* = 0x0000876C
-  GL_VERTEX_STREAM1_ATI* = 0x0000876D
-  GL_VERTEX_STREAM2_ATI* = 0x0000876E
-  GL_VERTEX_STREAM3_ATI* = 0x0000876F
-  GL_VERTEX_STREAM4_ATI* = 0x00008770
-  GL_VERTEX_STREAM5_ATI* = 0x00008771
-  GL_VERTEX_STREAM6_ATI* = 0x00008772
-  GL_VERTEX_STREAM7_ATI* = 0x00008773
-  GL_VERTEX_SOURCE_ATI* = 0x00008774
-
-proc glVertexStream1s*(stream: TGLenum, coords: TGLshort){.dynlib: dllname, 
-    importc.}
-proc glVertexStream1i*(stream: TGLenum, coords: TGLint){.dynlib: dllname, importc.}
-proc glVertexStream1f*(stream: TGLenum, coords: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glVertexStream1d*(stream: TGLenum, coords: TGLdouble){.dynlib: dllname, 
-    importc.}
-proc glVertexStream1sv*(stream: TGLenum, coords: TGLshort){.dynlib: dllname, 
-    importc.}
-proc glVertexStream1iv*(stream: TGLenum, coords: TGLint){.dynlib: dllname, importc.}
-proc glVertexStream1fv*(stream: TGLenum, coords: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glVertexStream1dv*(stream: TGLenum, coords: TGLdouble){.dynlib: dllname, 
-    importc.}
-proc glVertexStream2s*(stream: TGLenum, coords: TGLshort){.dynlib: dllname, 
-    importc.}
-proc glVertexStream2i*(stream: TGLenum, coords: TGLint){.dynlib: dllname, importc.}
-proc glVertexStream2f*(stream: TGLenum, coords: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glVertexStream2d*(stream: TGLenum, coords: TGLdouble){.dynlib: dllname, 
-    importc.}
-proc glVertexStream2sv*(stream: TGLenum, coords: TGLshort){.dynlib: dllname, 
-    importc.}
-proc glVertexStream2iv*(stream: TGLenum, coords: TGLint){.dynlib: dllname, importc.}
-proc glVertexStream2fv*(stream: TGLenum, coords: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glVertexStream2dv*(stream: TGLenum, coords: TGLdouble){.dynlib: dllname, 
-    importc.}
-proc glVertexStream3s*(stream: TGLenum, coords: TGLshort){.dynlib: dllname, 
-    importc.}
-proc glVertexStream3i*(stream: TGLenum, coords: TGLint){.dynlib: dllname, importc.}
-proc glVertexStream3f*(stream: TGLenum, coords: TGLfloat){.dynlib: dllname, 
-    importc.}
-proc glVertexStream3d*(stream: TGLenum, coords: TGLdouble){.dynlib: dllname, 
-    importc.}
-proc glVertexStream3sv*pan class="p">>
<span id="L99" class="LineNr"> 99 </span>  <span class="Comment"># that the result is deterministic</span>
<span id="L100" class="LineNr">100 </span>  <span class="Constant">100</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">1</span>  <span class="Comment"># pretend refcount</span>
<span id="L101" class="LineNr">101 </span>  <span class="Constant">101</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">3</span>  <span class="Comment"># pretend array length</span>
<span id="L102" class="LineNr">102 </span>  <span class="Constant">1</span>:&amp;:@:num<span class="Special"> &lt;- </span>copy <span class="Constant">100</span>/unsafe  <span class="Comment"># pretend allocation</span>
<span id="L103" class="LineNr">103 </span>  put-index *<span class="Constant">1</span>:&amp;:@:num<span class="Delimiter">,</span> <span class="Constant">0</span><span class="Delimiter">,</span> <span class="Constant">34</span>
<span id="L104" class="LineNr">104 </span>  put-index *<span class="Constant">1</span>:&amp;:@:num<span class="Delimiter">,</span> <span class="Constant">1</span><span class="Delimiter">,</span> <span class="Constant">35</span>
<span id="L105" class="LineNr">105 </span>  put-index *<span class="Constant">1</span>:&amp;:@:num<span class="Delimiter">,</span> <span class="Constant">2</span><span class="Delimiter">,</span> <span class="Constant">36</span>
<span id="L106" class="LineNr">106 </span>  stash [old:]<span class="Delimiter">,</span> *<span class="Constant">1</span>:&amp;:@:num
<span id="L107" class="LineNr">107 </span>  <span class="Constant">2</span>:&amp;:@:num<span class="Special"> &lt;- </span>deep-copy <span class="Constant">1</span>:&amp;:@:num
<span id="L108" class="LineNr">108 </span>  stash <span class="Constant">2</span>:&amp;:@:num
<span id="L109" class="LineNr">109 </span>  stash [<span class="Normal">new</span>:]<span class="Delimiter">,</span> *<span class="Constant">2</span>:&amp;:@:num
<span id="L110" class="LineNr">110 </span>  <span class="Constant">10</span>:<span class="Normal">bool</span><span class="Special"> &lt;- </span>equal <span class="Constant">1</span>:&amp;:@:num<span class="Delimiter">,</span> <span class="Constant">2</span>:&amp;:@:num
<span id="L111" class="LineNr">111 </span>  <span class="Constant">11</span>:<span class="Normal">bool</span><span class="Special"> &lt;- </span>equal *<span class="Constant">1</span>:&amp;:@:num<span class="Delimiter">,</span> *<span class="Constant">2</span>:&amp;:@:num
<span id="L112" class="LineNr">112 </span>]
<span id="L113" class="LineNr">113 </span><span class="traceContains">+app: old: 3 34 35 36</span>
<span id="L114" class="LineNr">114 </span><span class="traceContains">+app: new: 3 34 35 36</span>
<span id="L115" class="LineNr">115 </span><span class="Comment"># the result of deep-copy is a new address</span>
<span id="L116" class="LineNr">116 </span><span class="traceContains">+mem: storing 0 in location 10</span>
<span id="L117" class="LineNr">117 </span><span class="Comment"># however, the contents are identical</span>
<span id="L118" class="LineNr">118 </span><span class="traceContains">+mem: storing 1 in location 11</span>
<span id="L119" class="LineNr">119 </span>
<span id="L120" class="LineNr">120 </span><span class="Delimiter">:(scenario deep_copy_container_with_address)</span>
<span id="L121" class="LineNr">121 </span><span class="muData">container</span> foo [
<span id="L122" class="LineNr">122 </span>  <span class="Normal">x</span>:num
<span id="L123" class="LineNr">123 </span>  <span class="Normal">y</span>:&amp;:num
<span id="L124" class="LineNr">124 </span>]
<span id="L125" class="LineNr">125 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L126" class="LineNr">126 </span>  local-scope
<span id="L127" class="LineNr">127 </span>  <span class="Normal">y0</span>:&amp;:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
<span id="L128" class="LineNr">128 </span>  *y0<span class="Special"> &lt;- </span>copy <span class="Constant">35</span>
<span id="L129" class="LineNr">129 </span>  <span class="Normal">a</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">34</span><span class="Delimiter">,</span> y0
<span id="L130" class="LineNr">130 </span>  <span class="Normal">b</span>:foo<span class="Special"> &lt;- </span>deep-copy a
<span id="L131" class="LineNr">131 </span>  <span class="Constant">10</span>:<span class="Normal">bool</span>/<span class="Special">raw &lt;- </span>equal a<span class="Delimiter">,</span> b
<span id="L132" class="LineNr">132 </span>  <span class="Normal">y1</span>:&amp;:num<span class="Special"> &lt;- </span>get b<span class="Delimiter">,</span> <span class="Constant">y:offset</span>
<span id="L133" class="LineNr">133 </span>  <span class="Constant">11</span>:<span class="Normal">bool</span>/<span class="Special">raw &lt;- </span>equal y0<span class="Delimiter">,</span> y1
<span id="L134" class="LineNr">134 </span>  <span class="Constant">12</span>:num/<span class="Special">raw &lt;- </span>copy *y1
<span id="L135" class="LineNr">135 </span>]
<span id="L136" class="LineNr">136 </span><span class="Comment"># containers containing addresses are not identical to their deep copies</span>
<span id="L137" class="LineNr">137 </span><span class="traceContains">+mem: storing 0 in location 10</span>
<span id="L138" class="LineNr">138 </span><span class="Comment"># the addresses they contain are not identical either</span>
<span id="L139" class="LineNr">139 </span><span class="traceContains">+mem: storing 0 in location 11</span>
<span id="L140" class="LineNr">140 </span><span class="traceContains">+mem: storing 35 in location 12</span>
<span id="L141" class="LineNr">141 </span>
<span id="L142" class="LineNr">142 </span><span class="Delimiter">:(scenario deep_copy_exclusive_container_with_address)</span>
<span id="L143" class="LineNr">143 </span><span class="muData">exclusive-container</span> foo [
<span id="L144" class="LineNr">144 </span>  <span class="Normal">x</span>:num
<span id="L145" class="LineNr">145 </span>  <span class="Normal">y</span>:&amp;:num
<span id="L146" class="LineNr">146 </span>]
<span id="L147" class="LineNr">147 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L148" class="LineNr">148 </span>  local-scope
<span id="L149" class="LineNr">149 </span>  <span class="Normal">y0</span>:&amp;:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
<span id="L150" class="LineNr">150 </span>  *y0<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
<span id="L151" class="LineNr">151 </span>  <span class="Normal">a</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">1</span>/y<span class="Delimiter">,</span> y0
<span id="L152" class="LineNr">152 </span>  <span class="Normal">b</span>:foo<span class="Special"> &lt;- </span>deep-copy a
<span id="L153" class="LineNr">153 </span>  <span class="Constant">10</span>:<span class="Normal">bool</span>/<span class="Special">raw &lt;- </span>equal a<span class="Delimiter">,</span> b
<span id="L154" class="LineNr">154 </span>  <span class="Normal">y1</span>:&amp;:num<span class="Delimiter">,</span> z:<span class="Normal">bool</span><span class="Special"> &lt;- </span>maybe-convert b<span class="Delimiter">,</span> <span class="Constant">y:variant</span>
<span id="L155" class="LineNr">155 </span>  <span class="Constant">11</span>:<span class="Normal">bool</span>/<span class="Special">raw &lt;- </span>equal y0<span class="Delimiter">,</span> y1
<span id="L156" class="LineNr">156 </span>  <span class="Constant">12</span>:num/<span class="Special">raw &lt;- </span>copy *y1
<span id="L157" class="LineNr">157 </span>]
<span id="L158" class="LineNr">158 </span><span class="Comment"># exclusive containers containing addresses are not identical to their deep copies</span>
<span id="L159" class="LineNr">159 </span><span class="traceContains">+mem: storing 0 in location 10</span>
<span id="L160" class="LineNr">160 </span><span class="Comment"># the addresses they contain are not identical either</span>
<span id="L161" class="LineNr">161 </span><span class="traceContains">+mem: storing 0 in location 11</span>
<span id="L162" class="LineNr">162 </span><span class="traceContains">+mem: storing 34 in location 12</span>
<span id="L163" class="LineNr">163 </span>
<span id="L164" class="LineNr">164 </span><span class="Delimiter">:(scenario deep_copy_exclusive_container_with_container_with_address)</span>
<span id="L165" class="LineNr">165 </span><span class="muData">exclusive-container</span> foo [
<span id="L166" class="LineNr">166 </span>  <span class="Normal">x</span>:num
<span id="L167" class="LineNr">167 </span>  <span class="Normal">y</span>:bar  <span class="Comment"># inline</span>
<span id="L168" class="LineNr">168 </span>]
<span id="L169" class="LineNr">169 </span><span class="muData">container</span> bar [
<span id="L170" class="LineNr">170 </span>  <span class="Normal">x</span>:&amp;:num
<span id="L171" class="LineNr">171 </span>]
<span id="L172" class="LineNr">172 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L173" class="LineNr">173 </span>  local-scope
<span id="L174" class="LineNr">174 </span>  <span class="Normal">y0</span>:&amp;:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
<span id="L175" class="LineNr">175 </span>  *y0<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
<span id="L176" class="LineNr">176 </span>  <span class="Normal">a</span>:bar<span class="Special"> &lt;- </span>merge y0
<span id="L177" class="LineNr">177 </span>  <span class="Normal">b</span>:foo<span class="Special"> &lt;- </span>merge <span class="Constant">1</span>/y<span class="Delimiter">,</span> a
<span id="L178" class="LineNr">178 </span>  <span class="Normal">c</span>:foo<span class="Special"> &lt;- </span>deep-copy b
<span id="L179" class="LineNr">179 </span>  <span class="Constant">10</span>:<span class="Normal">bool</span>/<span class="Special">raw &lt;- </span>equal b<span class="Delimiter">,</span> c
<span id="L180" class="LineNr">180 </span>  <span class="Normal">d</span>:bar<span class="Delimiter">,</span> z:<span class="Normal">bool</span><span class="Special"> &lt;- </span>maybe-convert c<span class="Delimiter">,</span> <span class="Constant">y:variant</span>
<span id="L181" class="LineNr">181 </span>  <span class="Normal">y1</span>:&amp;:num<span class="Special"> &lt;- </span>get d<span class="Delimiter">,</span> <span class="Constant">x:offset</span>
<span id="L182" class="LineNr">182 </span>  <span class="Constant">11</span>:<span class="Normal">bool</span>/<span class="Special">raw &lt;- </span>equal y0<span class="Delimiter">,</span> y1
<span id="L183" class="LineNr">183 </span>  <span class="Constant">12</span>:num/<span class="Special">raw &lt;- </span>copy *y1
<span id="L184" class="LineNr">184 </span>]
<span id="L185" class="LineNr">185 </span><span class="Comment"># exclusive containers containing addresses are not identical to their deep copies</span>
<span id="L186" class="LineNr">186 </span><span class="traceContains">+mem: storing 0 in location 10</span>
<span id="L187" class="LineNr">187 </span><span class="Comment"># sub-containers containing addresses are not identical either</span>
<span id="L188" class="LineNr">188 </span><span class="traceContains">+mem: storing 0 in location 11</span>
<span id="L189" class="LineNr">189 </span><span class="traceContains">+mem: storing 34 in location 12</span>
<span id="L190" class="LineNr">190 </span>
<span id="L191" class="LineNr">191 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Declarations&quot;)</span>
<span id="L192" class="LineNr">192 </span>DEEP_COPY<span class="Delimiter">,</span>
<span id="L193" class="LineNr">193 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Numbers&quot;)</span>
<span id="L194" class="LineNr">194 </span><a href='001help.cc.html#L218'>put</a><span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> <span class="Constant">&quot;deep-copy&quot;</span><span class="Delimiter">,</span> DEEP_COPY<span class="Delimiter">);</span>
<span id="L195" class="LineNr">195 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Checks&quot;)</span>
<span id="L196" class="LineNr">196 </span><span class="Normal">case</span> DEEP_COPY: <span class="Delimiter">{</span>
<span id="L197" class="LineNr">197 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L138'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L198" class="LineNr">198 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'deep-copy' takes exactly one ingredient rather than '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L185'>end</a><span class="Delimiter">();</span>
<span id="L199" class="LineNr">199 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
<span id="L200" class="LineNr">200 </span>  <span class="Delimiter">}</span>
<span id="L201" class="LineNr">201 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L138'>SIZE</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span>products<span class="Delimiter">)</span> != <span class="Constant">1</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L202" class="LineNr">202 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'deep-copy' takes exactly one ingredient rather than '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L185'>end</a><span class="Delimiter">();</span>
<span id="L203" class="LineNr">203 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
<span id="L204" class="LineNr">204 </span>  <span class="Delimiter">}</span>
<span id="L205" class="LineNr">205 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!types_strictly_match<span class="Delimiter">(</span>inst<span class="Delimiter">.</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">),</span> inst<span class="Delimiter">.</span>products<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)))</span> <span class="Delimiter">{</span>
<span id="L206" class="LineNr">206 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L168'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> r<span class="Delimiter">).</span>name<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'deep-copy' requires its ingredient and product to be the same type, but got '&quot;</span> &lt;&lt; inst<span class="Delimiter">.</span>original_string &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L185'>end</a><span class="Delimiter">();</span>
<span id="L207" class="LineNr">207 </span>  <span class="Conceal">¦</span> <span class="Identifier">break</span><span class="Delimiter">;</span>
<span id="L208" class="LineNr">208 </span>  <span class="Delimiter">}</span>
<span id="L209" class="LineNr">209 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
<span id="L210" class="LineNr">210 </span><span class="Delimiter">}</span>
<span id="L211" class="LineNr">211 </span><span class="Delimiter">:(before &quot;End Primitive Recipe Implementations&quot;)</span>
<span id="L212" class="LineNr">212 </span><span class="Normal">case</span> DEEP_COPY: <span class="Delimiter">{</span>
<span id="L213" class="LineNr">213 </span>  <span class="Normal">const</span> reagent&amp; input = current_instruction<span class="Delimiter">().</span>ingredients<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
<span id="L214" class="LineNr">214 </span>  <span class="Comment">// allocate a tiny bit of temporary space for deep_copy()</span>
<span id="L215" class="LineNr">215 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: allocating space for temporary&quot;</span> &lt;&lt; <a href='003trace.cc.html#L185'>end</a><span class="Delimiter">();</span>
<span id="L216" class="LineNr">216 </span>  reagent tmp<span class="Delimiter">(</span><span class="Constant">&quot;tmp:<a href='043space.cc.html#L76'>address</a>:number&quot;</span><span class="Delimiter">);</span>
<span id="L217" class="LineNr">217 </span>  tmp<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span>allocate<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">));</span>
<span id="L218" class="LineNr">218 </span>  products<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>deep_copy<span class="Delimiter">(</span>input<span class="Delimiter">,</span> tmp<span class="Delimiter">));</span>
<span id="L219" class="LineNr">219 </span>  <span class="Comment">// reclaim Mu memory allocated for tmp</span>
<span id="L220" class="LineNr">220 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: reclaiming temporary&quot;</span> &lt;&lt; <a href='003trace.cc.html#L185'>end</a><span class="Delimiter">();</span>
<span id="L221" class="LineNr">221 </span>  <a href='037abandon.cc.html#L28'>abandon</a><span class="Delimiter">(</span>tmp<span class="Delimiter">.</span>value<span class="Delimiter">,</span> <a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">(</span>tmp<span class="Delimiter">.</span>type<span class="Delimiter">),</span> <a href='036refcount.cc.html#L82'>payload_size</a><span class="Delimiter">(</span>tmp<span class="Delimiter">));</span>
<span id="L222" class="LineNr">222 </span>  <span class="Comment">// reclaim host memory allocated for tmp.type when tmp goes out of scope</span>
<span id="L223" class="LineNr">223 </span>  <span class="Identifier">break</span><span class="Delimiter">;</span>
<span id="L224" class="LineNr">224 </span><span class="Delimiter">}</span>
<span id="L225" class="LineNr">225 </span>
<span id="L226" class="LineNr">226 </span><span class="Delimiter">:(code)</span>
<span id="L227" class="LineNr">227 </span>vector&lt;<span class="Normal">double</span>&gt; deep_copy<span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; in<span class="Delimiter">,</span> <span class="Normal">const</span> reagent&amp; tmp<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L228" class="LineNr">228 </span>  map&lt;<span class="Normal">int</span><span class="Delimiter">,</span> <span class="Normal">int</span>&gt; addresses_copied<span class="Delimiter">;</span>
<span id="L229" class="LineNr">229 </span>  <span class="Identifier">return</span> deep_copy<span class="Delimiter">(</span>in<span class="Delimiter">,</span> addresses_copied<span class="Delimiter">,</span> tmp<span class="Delimiter">);</span>
<span id="L230" class="LineNr">230 </span><span class="Delimiter">}</span>
<span id="L231" class="LineNr">231 </span>
<span id="L232" class="LineNr">232 </span>vector&lt;<span class="Normal">double</span>&gt; deep_copy<span class="Delimiter">(</span>reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> in<span class="Delimiter">,</span> map&lt;<span class="Normal">int</span><span class="Delimiter">,</span> <span class="Normal">int</span>&gt;&amp; addresses_copied<span class="Delimiter">,</span> <span class="Normal">const</span> reagent&amp; tmp<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L233" class="LineNr">233 </span>  canonize<span class="Delimiter">(</span>in<span class="Delimiter">);</span>
<span id="L234" class="LineNr">234 </span>  vector&lt;<span class="Normal">double</span>&gt; result<span class="Delimiter">;</span>
<span id="L235" class="LineNr">235 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>is_mu_address<span class="Delimiter">(</span>in<span class="Delimiter">))</span>
<span id="L236" class="LineNr">236 </span>  <span class="Conceal">¦</span> result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span><a href='074deep_copy.cc.html#L243'>deep_copy_address</a><span class="Delimiter">(</span>in<span class="Delimiter">,</span> addresses_copied<span class="Delimiter">,</span> tmp<span class="Delimiter">));</span>
<span id="L237" class="LineNr">237 </span>  <span class="Normal">else</span>
<span id="L238" class="LineNr">238 </span>  <span class="Conceal">¦</span> deep_copy<span class="Delimiter">(</span>in<span class="Delimiter">,</span> addresses_copied<span class="Delimiter">,</span> tmp<span class="Delimiter">,</span> result<span class="Delimiter">);</span>
<span id="L239" class="LineNr">239 </span>  <span class="Identifier">return</span> result<span class="Delimiter">;</span>
<span id="L240" class="LineNr">240 </span><span class="Delimiter">}</span>
<span id="L241" class="LineNr">241 </span>
<span id="L242" class="LineNr">242 </span><span class="Comment">// deep-copy an address and return a new address</span>
<span id="L243" class="LineNr">243 </span><span class="Normal">int</span> <a href='074deep_copy.cc.html#L243'>deep_copy_address</a><span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; canonized_in<span class="Delimiter">,</span> map&lt;<span class="Normal">int</span><span class="Delimiter">,</span> <span class="Normal">int</span>&gt;&amp; addresses_copied<span class="Delimiter">,</span> <span class="Normal">const</span> reagent&amp; tmp<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L244" class="LineNr">244 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>canonized_in<span class="Delimiter">.</span>value == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">0</span><span class="Delimiter">;</span>
<span id="L245" class="LineNr">245 </span>  <span class="Normal">int</span> in_address = <a href='074deep_copy.cc.html#L298'>payload_address</a><span class="Delimiter">(</span>canonized_in<span class="Delimiter">);</span>
<span id="L246" class="LineNr">246 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: copying <a href='043space.cc.html#L76'>address</a> &quot;</span> &lt;&lt; in_address &lt;&lt; <a href='003trace.cc.html#L185'>end</a><span class="Delimiter">();</span>
<span id="L247" class="LineNr">247 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>contains_key<span class="Delimiter">(</span>addresses_copied<span class="Delimiter">,</span> in_address<span class="Delimiter">))</span> <span class="Delimiter">{</span>
<span id="L248" class="LineNr">248 </span>  <span class="Conceal">¦</span> <span class="Normal">int</span> out = get<span class="Delimiter">(</span>addresses_copied<span class="Delimiter">,</span> in_address<span class="Delimiter">);</span>
<span id="L249" class="LineNr">249 </span>  <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: copy already exists: &quot;</span> &lt;&lt; out &lt;&lt; <a href='003trace.cc.html#L185'>end</a><span class="Delimiter">();</span>
<span id="L250" class="LineNr">250 </span>  <span class="Conceal">¦</span> <span class="Identifier">return</span> out<span class="Delimiter">;</span>
<span id="L251" class="LineNr">251 </span>  <span class="Delimiter">}</span>
<span id="L252" class="LineNr">252 </span>  <span class="Normal">int</span> out = allocate<span class="Delimiter">(</span><a href='036refcount.cc.html#L82'>payload_size</a><span class="Delimiter">(</span>canonized_in<span class="Delimiter">));</span>
<span id="L253" class="LineNr">253 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: new <a href='043space.cc.html#L76'>address</a> is &quot;</span> &lt;&lt; out &lt;&lt; <a href='003trace.cc.html#L185'>end</a><span class="Delimiter">();</span>
<span id="L254" class="LineNr">254 </span>  <a href='001help.cc.html#L218'>put</a><span class="Delimiter">(</span>addresses_copied<span class="Delimiter">,</span> in_address<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
<span id="L255" class="LineNr">255 </span>  reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> payload = canonized_in<span class="Delimiter">;</span>
<span id="L256" class="LineNr">256 </span>  payload<span class="Delimiter">.</span>properties<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>pair&lt;string<span class="Delimiter">,</span> string_tree*&gt;<span class="Delimiter">(</span><span class="Constant">&quot;lookup&quot;</span><span class="Delimiter">,</span> <span class="Constant">NULL</span><span class="Delimiter">));</span>
<span id="L257" class="LineNr">257 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;recursing on payload &quot;</span> &lt;&lt; payload<span class="Delimiter">.</span>value &lt;&lt; <span class="Constant">' '</span> &lt;&lt; <a href='028call_return.cc.html#L158'>to_string</a><span class="Delimiter">(</span>payload<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L185'>end</a><span class="Delimiter">();</span>
<span id="L258" class="LineNr">258 </span>  vector&lt;<span class="Normal">double</span>&gt; data = deep_copy<span class="Delimiter">(</span>payload<span class="Delimiter">,</span> addresses_copied<span class="Delimiter">,</span> tmp<span class="Delimiter">);</span>
<span id="L259" class="LineNr">259 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: writing result &quot;</span> &lt;&lt; out &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L158'>to_string</a><span class="Delimiter">(</span>data<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L185'>end</a><span class="Delimiter">();</span>
<span id="L260" class="LineNr">260 </span>  <span class="Comment">// HACK: write_memory interface isn't ideal for this situation; we need</span>
<span id="L261" class="LineNr">261 </span>  <span class="Comment">// a temporary location to help copy the payload.</span>
<span id="L262" class="LineNr">262 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: writing temporary &quot;</span> &lt;&lt; tmp<span class="Delimiter">.</span>value &lt;&lt; <span class="Constant">&quot;: &quot;</span> &lt;&lt; out &lt;&lt; <a href='003trace.cc.html#L185'>end</a><span class="Delimiter">();</span>
<span id="L263" class="LineNr">263 </span>  <a href='001help.cc.html#L218'>put</a><span class="Delimiter">(</span>Memory<span class="Delimiter">,</span> tmp<span class="Delimiter">.</span>value<span class="Delimiter">,</span> out<span class="Delimiter">);</span>
<span id="L264" class="LineNr">264 </span>  payload<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span>tmp<span class="Delimiter">.</span>value<span class="Delimiter">);</span>  <span class="Comment">// now modified for output</span>
<span id="L265" class="LineNr">265 </span>  vector&lt;<span class="Normal">double</span>&gt; old_data = read_memory<span class="Delimiter">(</span>payload<span class="Delimiter">);</span>
<span id="L266" class="LineNr">266 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: really writing to &quot;</span> &lt;&lt; payload<span class="Delimiter">.</span>value &lt;&lt; <span class="Constant">' '</span> &lt;&lt; <a href='028call_return.cc.html#L158'>to_string</a><span class="Delimiter">(</span>payload<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; (old value &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L158'>to_string</a><span class="Delimiter">(</span>old_data<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot; new value &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L158'>to_string</a><span class="Delimiter">(</span>data<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;)&quot;</span> &lt;&lt; <a href='003trace.cc.html#L185'>end</a><span class="Delimiter">();</span>
<span id="L267" class="LineNr">267 </span>  write_memory<span class="Delimiter">(</span>payload<span class="Delimiter">,</span> data<span class="Delimiter">);</span>
<span id="L268" class="LineNr">268 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: output is &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L158'>to_string</a><span class="Delimiter">(</span>data<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L185'>end</a><span class="Delimiter">();</span>
<span id="L269" class="LineNr">269 </span>  <span class="Identifier">return</span> out<span class="Delimiter">;</span>
<span id="L270" class="LineNr">270 </span><span class="Delimiter">}</span>
<span id="L271" class="LineNr">271 </span>
<span id="L272" class="LineNr">272 </span><span class="Comment">// deep-copy a non-address and return a vector of locations</span>
<span id="L273" class="LineNr">273 </span><span class="Normal">void</span> deep_copy<span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; canonized_in<span class="Delimiter">,</span> map&lt;<span class="Normal">int</span><span class="Delimiter">,</span> <span class="Normal">int</span>&gt;&amp; addresses_copied<span class="Delimiter">,</span> <span class="Normal">const</span> reagent&amp; tmp<span class="Delimiter">,</span> vector&lt;<span class="Normal">double</span>&gt;&amp; out<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L274" class="LineNr">274 </span>  assert<span class="Delimiter">(</span>!is_mu_address<span class="Delimiter">(</span>canonized_in<span class="Delimiter">));</span>
<span id="L275" class="LineNr">275 </span>  vector&lt;<span class="Normal">double</span>&gt; data = read_memory<span class="Delimiter">(</span>canonized_in<span class="Delimiter">);</span>
<span id="L276" class="LineNr">276 </span>  out<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>out<span class="Delimiter">.</span><a href='003trace.cc.html#L185'>end</a><span class="Delimiter">(),</span> data<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> data<span class="Delimiter">.</span><a href='003trace.cc.html#L185'>end</a><span class="Delimiter">());</span>
<span id="L277" class="LineNr">277 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> canonized_in<span class="Delimiter">.</span>type<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>
<span id="L278" class="LineNr">278 </span>  <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: scanning for addresses in &quot;</span> &lt;&lt; <a href='028call_return.cc.html#L158'>to_string</a><span class="Delimiter">(</span>data<span class="Delimiter">)</span> &lt;&lt; <a href='003trace.cc.html#L185'>end</a><span class="Delimiter">();</span>
<span id="L279" class="LineNr">279 </span>  <span class="Normal">const</span> container_metadata&amp; metadata = get<span class="Delimiter">(</span>Container_metadata<span class="Delimiter">,</span> canonized_in<span class="Delimiter">.</span>type<span class="Delimiter">);</span>
<span id="L280" class="LineNr">280 </span>  <span class="Normal">for</span> <span class="Delimiter">(</span>map&lt;set&lt;tag_condition_info&gt;<span class="Delimiter">,</span> set&lt;address_element_info&gt; &gt;::const_iterator p = metadata<span class="Delimiter">.</span><a href='043space.cc.html#L76'>address</a><span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  p != metadata<span class="Delimiter">.</span><a href='043space.cc.html#L76'>address</a><span class="Delimiter">.</span><a href='003trace.cc.html#L185'>end</a><span class="Delimiter">();</span>  ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L281" class="LineNr">281 </span>  <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!all_match<span class="Delimiter">(</span>data<span class="Delimiter">,</span> p<span class="Delimiter">-&gt;</span>first<span class="Delimiter">))</span> <span class="Identifier">continue</span><span class="Delimiter">;</span>
<span id="L282" class="LineNr">282 </span>  <span class="Conceal">¦</span> <span class="Normal">for</span> <span class="Delimiter">(</span>set&lt;address_element_info&gt;::const_iterator info = p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>  info != p<span class="Delimiter">-&gt;</span>second<span class="Delimiter">.</span><a href='003trace.cc.html#L185'>end</a><span class="Delimiter">();</span>  ++info<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L283" class="LineNr">283 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// construct a fake reagent that reads directly from the appropriate</span>
<span id="L284" class="LineNr">284 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment">// field of the container</span>
<span id="L285" class="LineNr">285 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> reagent curr<span class="Delimiter">;</span>
<span id="L286" class="LineNr">286 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">if</span> <span class="Delimiter">(</span>info<span class="Delimiter">-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>atom<span class="Delimiter">)</span>
<span id="L287" class="LineNr">287 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr<span class="Delimiter">.</span>type = <span class="Normal">new</span> type_tree<span class="Delimiter">(</span><span class="Normal">new</span> type_tree<span class="Delimiter">(</span><span class="Constant">&quot;address&quot;</span><span class="Delimiter">),</span> <span class="Normal">new</span> type_tree<span class="Delimiter">(</span><span class="Normal">new</span> type_tree<span class="Delimiter">(</span>info<span class="Delimiter">-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">-&gt;</span>name<span class="Delimiter">),</span> <span class="Constant">NULL</span><span class="Delimiter">));</span>
<span id="L288" class="LineNr">288 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Normal">else</span>
<span id="L289" class="LineNr">289 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr<span class="Delimiter">.</span>type = <span class="Normal">new</span> type_tree<span class="Delimiter">(</span><span class="Normal">new</span> type_tree<span class="Delimiter">(</span><span class="Constant">&quot;address&quot;</span><span class="Delimiter">),</span> <span class="Normal">new</span> type_tree<span class="Delimiter">(</span>*info<span class="Delimiter">-&gt;</span><a href='030container.cc.html#L238'>payload_type</a><span class="Delimiter">));</span>
<span id="L290" class="LineNr">290 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr<span class="Delimiter">.</span><a href='010vm.cc.html#L65'>set_value</a><span class="Delimiter">(</span>canonized_in<span class="Delimiter">.</span>value + info<span class="Delimiter">-&gt;</span>offset<span class="Delimiter">);</span>
<span id="L291" class="LineNr">291 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr<span class="Delimiter">.</span>properties<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>pair&lt;string<span class="Delimiter">,</span> string_tree*&gt;<span class="Delimiter">(</span><span class="Constant">&quot;raw&quot;</span><span class="Delimiter">,</span> <span class="Constant">NULL</span><span class="Delimiter">));</span>
<span id="L292" class="LineNr">292 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='003trace.cc.html#L161'>trace</a><span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;run&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;deep-copy: copying <a href='043space.cc.html#L76'>address</a> &quot;</span> &lt;&lt; curr<span class="Delimiter">.</span>value &lt;&lt; <a href='003trace.cc.html#L185'>end</a><span class="Delimiter">();</span>
<span id="L293" class="LineNr">293 </span>  <span class="Conceal">¦</span> <span class="Conceal">¦</span> out<span class="Delimiter">.</span>at<span class="Delimiter">(</span>info<span class="Delimiter">-&gt;</span>offset<span class="Delimiter">)</span> = <a href='074deep_copy.cc.html#L243'>deep_copy_address</a><span class="Delimiter">(</span>curr<span class="Delimiter">,</span> addresses_copied<span class="Delimiter">,</span> tmp<span class="Delimiter">);</span>
<span id="L294" class="LineNr">294 </span>  <span class="Conceal">¦</span> <span class="Delimiter">}</span>
<span id="L295" class="LineNr">295 </span>  <span class="Delimiter">}</span>
<span id="L296" class="LineNr">296 </span><span class="Delimiter">}</span>
<span id="L297" class="LineNr">297 </span>
<span id="L298" class="LineNr">298 </span><span class="Normal">int</span> <a href='074deep_copy.cc.html#L298'>payload_address</a><span class="Delimiter">(</span>reagent<span class="Comment">/*</span><span class="Comment">copy</span><span class="Comment">*/</span> x<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L299" class="LineNr">299 </span>  x<span class="Delimiter">.</span>properties<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>pair&lt;string<span class="Delimiter">,</span> string_tree*&gt;<span class="Delimiter">(</span><span class="Constant">&quot;lookup&quot;</span><span class="Delimiter">,</span> <span class="Constant">NULL</span><span class="Delimiter">));</span>
<span id="L300" class="LineNr">300 </span>  canonize<span class="Delimiter">(</span>x<span class="Delimiter">);</span>
<span id="L301" class="LineNr">301 </span>  <span class="Identifier">return</span> x<span class="Delimiter">.</span>value<span class="Delimiter">;</span>
<span id="L302" class="LineNr">302 </span><span class="Delimiter">}</span>
<span id="L303" class="LineNr">303 </span>
<span id="L304" class="LineNr">304 </span><span class="Comment">//: moar tests, just because I can't believe it all works</span>
<span id="L305" class="LineNr">305 </span>
<span id="L306" class="LineNr">306 </span><span class="Delimiter">:(scenario deep_copy_stress_test_1)</span>
<span id="L307" class="LineNr">307 </span><span class="muData">container</span> foo1 [
<span id="L308" class="LineNr">308 </span>  <span class="Normal">p</span>:&amp;:num
<span id="L309" class="LineNr">309 </span>]
<span id="L310" class="LineNr">310 </span><span class="muData">container</span> foo2 [
<span id="L311" class="LineNr">311 </span>  <span class="Normal">p</span>:&amp;:foo1
<span id="L312" class="LineNr">312 </span>]
<span id="L313" class="LineNr">313 </span><span class="muData">exclusive-container</span> foo3 [
<span id="L314" class="LineNr">314 </span>  <span class="Normal">p</span>:&amp;:foo1
<span id="L315" class="LineNr">315 </span>  <span class="Normal">q</span>:&amp;:foo2
<span id="L316" class="LineNr">316 </span>]
<span id="L317" class="LineNr">317 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L318" class="LineNr">318 </span>  local-scope
<span id="L319" class="LineNr">319 </span>  <span class="Normal">x</span>:&amp;:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
<span id="L320" class="LineNr">320 </span>  *x<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
<span id="L321" class="LineNr">321 </span>  <span class="Normal">a</span>:&amp;:foo1<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">foo1:type</span>
<span id="L322" class="LineNr">322 </span>  *a<span class="Special"> &lt;- </span>merge x
<span id="L323" class="LineNr">323 </span>  <span class="Normal">b</span>:&amp;:foo2<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">foo2:type</span>
<span id="L324" class="LineNr">324 </span>  *b<span class="Special"> &lt;- </span>merge a
<span id="L325" class="LineNr">325 </span>  <span class="Normal">c</span>:foo3<span class="Special"> &lt;- </span>merge <span class="Constant">1</span>/q<span class="Delimiter">,</span> b
<span id="L326" class="LineNr">326 </span>  <span class="Normal">d</span>:foo3<span class="Special"> &lt;- </span>deep-copy c
<span id="L327" class="LineNr">327 </span>  <span class="Normal">e</span>:&amp;:foo2<span class="Delimiter">,</span> z:<span class="Normal">bool</span><span class="Special"> &lt;- </span>maybe-convert d<span class="Delimiter">,</span> <span class="Constant">q:variant</span>
<span id="L328" class="LineNr">328 </span>  <span class="Normal">f</span>:&amp;:foo1<span class="Special"> &lt;- </span>get *e<span class="Delimiter">,</span> <span class="Constant">p:offset</span>
<span id="L329" class="LineNr">329 </span>  <span class="Normal">g</span>:&amp;:num<span class="Special"> &lt;- </span>get *f<span class="Delimiter">,</span> <span class="Constant">p:offset</span>
<span id="L330" class="LineNr">330 </span>  <span class="Constant">1</span>:num/<span class="Special">raw &lt;- </span>copy *g
<span id="L331" class="LineNr">331 </span>]
<span id="L332" class="LineNr">332 </span><span class="traceContains">+mem: storing 34 in location 1</span>
<span id="L333" class="LineNr">333 </span>
<span id="L334" class="LineNr">334 </span><span class="Delimiter">:(scenario deep_copy_stress_test_2)</span>
<span id="L335" class="LineNr">335 </span><span class="muData">container</span> foo1 [
<span id="L336" class="LineNr">336 </span>  <span class="Normal">p</span>:&amp;:num
<span id="L337" class="LineNr">337 </span>]
<span id="L338" class="LineNr">338 </span><span class="muData">container</span> foo2 [
<span id="L339" class="LineNr">339 </span>  <span class="Normal">p</span>:&amp;:foo1
<span id="L340" class="LineNr">340 </span>]
<span id="L341" class="LineNr">341 </span><span class="muData">exclusive-container</span> foo3 [
<span id="L342" class="LineNr">342 </span>  <span class="Normal">p</span>:&amp;:foo1
<span id="L343" class="LineNr">343 </span>  <span class="Normal">q</span>:&amp;:foo2
<span id="L344" class="LineNr">344 </span>]
<span id="L345" class="LineNr">345 </span><span class="muData">container</span> foo4 [
<span id="L346" class="LineNr">346 </span>  <span class="Normal">p</span>:num
<span id="L347" class="LineNr">347 </span>  <span class="Normal">q</span>:&amp;:foo3
<span id="L348" class="LineNr">348 </span>]
<span id="L349" class="LineNr">349 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L350" class="LineNr">350 </span>  local-scope
<span id="L351" class="LineNr">351 </span>  <span class="Normal">x</span>:&amp;:num<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">number:type</span>
<span id="L352" class="LineNr">352 </span>  *x<span class="Special"> &lt;- </span>copy <span class="Constant">34</span>
<span id="L353" class="LineNr">353 </span>  <span class="Normal">a</span>:&amp;:foo1<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">foo1:type</span>
<span id="L354" class="LineNr">354 </span>  *a<span class="Special"> &lt;- </span>merge x
<span id="L355" class="LineNr">355 </span>  <span class="Normal">b</span>:&amp;:foo2<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">foo2:type</span>
<span id="L356" class="LineNr">356 </span>  *b<span class="Special"> &lt;- </span>merge a
<span id="L357" class="LineNr">357 </span>  <span class="Normal">c</span>:&amp;:foo3<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">foo3:type</span>
<span id="L358" class="LineNr">358 </span>  *c<span class="Special"> &lt;- </span>merge <span class="Constant">1</span>/q<span class="Delimiter">,</span> b
<span id="L359" class="LineNr">359 </span>  <span class="Normal">d</span>:foo4<span class="Special"> &lt;- </span>merge <span class="Constant">35</span><span class="Delimiter">,</span> c
<span id="L360" class="LineNr">360 </span>  <span class="Normal">e</span>:foo4<span class="Special"> &lt;- </span>deep-copy d
<span id="L361" class="LineNr">361 </span>  <span class="Normal">f</span>:&amp;:foo3<span class="Special"> &lt;- </span>get e<span class="Delimiter">,</span> <span class="Constant">q:offset</span>
<span id="L362" class="LineNr">362 </span>  <span class="Normal">g</span>:&amp;:foo2<span class="Delimiter">,</span> z:<span class="Normal">bool</span><span class="Special"> &lt;- </span>maybe-convert *f<span class="Delimiter">,</span> <span class="Constant">q:variant</span>
<span id="L363" class="LineNr">363 </span>  <span class="Normal">h</span>:&amp;:foo1<span class="Special"> &lt;- </span>get *g<span class="Delimiter">,</span> <span class="Constant">p:offset</span>
<span id="L364" class="LineNr">364 </span>  <span class="Normal">y</span>:&amp;:num<span class="Special"> &lt;- </span>get *h<span class="Delimiter">,</span> <span class="Constant">p:offset</span>
<span id="L365" class="LineNr">365 </span>  <span class="Constant">1</span>:num/<span class="Special">raw &lt;- </span>copy *y
<span id="L366" class="LineNr">366 </span>]
<span id="L367" class="LineNr">367 </span><span class="traceContains">+mem: storing 34 in location 1</span>
<span id="L368" class="LineNr">368 </span>
<span id="L369" class="LineNr">369 </span><span class="Delimiter">:(scenario deep_copy_cycles)</span>
<span id="L370" class="LineNr">370 </span><span class="muData">container</span> foo [
<span id="L371" class="LineNr">371 </span>  <span class="Normal">p</span>:num
<span id="L372" class="LineNr">372 </span>  <span class="Normal">q</span>:&amp;:foo
<span id="L373" class="LineNr">373 </span>]
<span id="L374" class="LineNr">374 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L375" class="LineNr">375 </span>  local-scope
<span id="L376" class="LineNr">376 </span>  <span class="Normal">x</span>:&amp;:foo<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">foo:type</span>
<span id="L377" class="LineNr">377 </span>  *x<span class="Special"> &lt;- </span><a href='001help.cc.html#L218'>put</a> *x<span class="Delimiter">,</span> <span class="Constant">p:offset</span><span class="Delimiter">,</span> <span class="Constant">34</span>
<span id="L378" class="LineNr">378 </span>  *x<span class="Special"> &lt;- </span><a href='001help.cc.html#L218'>put</a> *x<span class="Delimiter">,</span> <span class="Constant">q:offset</span><span class="Delimiter">,</span> x  <span class="Comment"># create a cycle</span>
<span id="L379" class="LineNr">379 </span>  <span class="Normal">y</span>:&amp;:foo<span class="Special"> &lt;- </span>deep-copy x
<span id="L380" class="LineNr">380 </span>  <span class="Constant">1</span>:num/<span class="Special">raw &lt;- </span>get *y<span class="Delimiter">,</span> <span class="Constant">p:offset</span>
<span id="L381" class="LineNr">381 </span>  <span class="Normal">y2</span>:&amp;:foo<span class="Special"> &lt;- </span>get *y<span class="Delimiter">,</span> <span class="Constant">q:offset</span>
<span id="L382" class="LineNr">382 </span>  stash y [vs] y2
<span id="L383" class="LineNr">383 </span>  <span class="Constant">2</span>:<span class="Normal">bool</span>/<span class="Special">raw &lt;- </span>equal y<span class="Delimiter">,</span> y2  <span class="Comment"># is it still a cycle?</span>
<span id="L384" class="LineNr">384 </span>  <span class="Constant">3</span>:<span class="Normal">bool</span>/<span class="Special">raw &lt;- </span>equal x<span class="Delimiter">,</span> y  <span class="Comment"># is it the same cycle?</span>
<span id="L385" class="LineNr">385 </span>]
<span id="L386" class="LineNr">386 </span><span class="traceContains">+mem: storing 34 in location 1</span>
<span id="L387" class="LineNr">387 </span><span class="Comment"># deep copy also contains a cycle</span>
<span id="L388" class="LineNr">388 </span><span class="traceContains">+mem: storing 1 in location 2</span>
<span id="L389" class="LineNr">389 </span><span class="Comment"># but it's a completely different (disjoint) cycle</span>
<span id="L390" class="LineNr">390 </span><span class="traceContains">+mem: storing 0 in location 3</span>
</pre>
</body>
</html>
<!-- vim: set foldmethod=manual : -->