Browse Source

Renamed dws units

GLScene 5 years ago
parent
commit
a837d773c7
34 changed files with 5522 additions and 5557 deletions
  1. 3 15
      Packages/GLScene_Win64.groupproj
  2. 0 2
      Packages/Win32/GLScene_DT.dproj
  3. 1 1
      Packages/Win32/GLScene_Parallel_DT.dpk
  4. 0 2
      Packages/Win32/GLScene_Parallel_DT.dproj
  5. 0 2
      Packages/Win32/GLScene_Parallel_RT.dproj
  6. 0 2
      Packages/Win32/GLScene_Physics_DT.dproj
  7. 0 2
      Packages/Win32/GLScene_Physics_RT.dproj
  8. 0 2
      Packages/Win32/GLScene_RT.dproj
  9. 0 2
      Packages/Win32/GLScene_SDL_DT.dproj
  10. 0 2
      Packages/Win32/GLScene_SDL_RT.dproj
  11. 1 3
      Packages/Win32/GLScene_Scripts_DT.dpk
  12. 2 18
      Packages/Win32/GLScene_Scripts_DT.dproj
  13. 7 5
      Packages/Win32/GLScene_Scripts_RT.dpk
  14. 7 19
      Packages/Win32/GLScene_Scripts_RT.dproj
  15. 0 2
      Packages/Win32/GLScene_Sounds_DT.dproj
  16. 0 2
      Packages/Win32/GLScene_Sounds_RT.dproj
  17. 8 13
      Packages/Win64/GLScene_Cg_RT.dproj
  18. 8 13
      Packages/Win64/GLScene_Parallel_RT.dproj
  19. 9 11
      Packages/Win64/GLScene_Physics_RT.dproj
  20. 9 14
      Packages/Win64/GLScene_RT.dproj
  21. 41 9
      Packages/Win64/GLScene_SDL_RT.dproj
  22. 8 6
      Packages/Win64/GLScene_Scripts_RT.dpk
  23. 316 27
      Packages/Win64/GLScene_Scripts_RT.dproj
  24. 8 10
      Packages/Win64/GLScene_Sounds_RT.dproj
  25. 0 282
      Source/DWS.Objects.pas
  26. 3 2
      Source/FileO3TCImage.pas
  27. 3 3
      Source/FileOCT.pas
  28. 393 393
      Source/GLS.dwsClasses.pas
  29. 131 131
      Source/GLS.dwsHelperFunc.pas
  30. 286 285
      Source/GLS.dwsObjects.pas
  31. 2443 2443
      Source/GLS.dwsOpenGL.pas
  32. 1061 1061
      Source/GLS.dwsScene.pas
  33. 293 292
      Source/GLS.dwsScript.pas
  34. 481 481
      Source/GLS.dwsVectorGeometry.pas

+ 3 - 15
Packages/GLScene_Win64.groupproj

@@ -18,9 +18,6 @@
         <Projects Include="Win64\GLScene_Cg_RT.dproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="Win64\GLScene_SDL_RT.dproj">
-            <Dependencies/>
-        </Projects>
     </ItemGroup>
     <ProjectExtensions>
         <Borland.Personality>Default.Personality.12</Borland.Personality>
@@ -74,23 +71,14 @@
     <Target Name="GLScene_Cg_RT:Make">
         <MSBuild Projects="Win64\GLScene_Cg_RT.dproj" Targets="Make"/>
     </Target>
-    <Target Name="GLScene_SDL_RT">
-        <MSBuild Projects="Win64\GLScene_SDL_RT.dproj"/>
-    </Target>
-    <Target Name="GLScene_SDL_RT:Clean">
-        <MSBuild Projects="Win64\GLScene_SDL_RT.dproj" Targets="Clean"/>
-    </Target>
-    <Target Name="GLScene_SDL_RT:Make">
-        <MSBuild Projects="Win64\GLScene_SDL_RT.dproj" Targets="Make"/>
-    </Target>
     <Target Name="Build">
-        <CallTarget Targets="GLScene_RT;GLScene_Sounds_RT;GLScene_Physics_RT;GLScene_Parallel_RT;GLScene_Cg_RT;GLScene_SDL_RT"/>
+        <CallTarget Targets="GLScene_RT;GLScene_Sounds_RT;GLScene_Physics_RT;GLScene_Parallel_RT;GLScene_Cg_RT"/>
     </Target>
     <Target Name="Clean">
-        <CallTarget Targets="GLScene_RT:Clean;GLScene_Sounds_RT:Clean;GLScene_Physics_RT:Clean;GLScene_Parallel_RT:Clean;GLScene_Cg_RT:Clean;GLScene_SDL_RT:Clean"/>
+        <CallTarget Targets="GLScene_RT:Clean;GLScene_Sounds_RT:Clean;GLScene_Physics_RT:Clean;GLScene_Parallel_RT:Clean;GLScene_Cg_RT:Clean"/>
     </Target>
     <Target Name="Make">
-        <CallTarget Targets="GLScene_RT:Make;GLScene_Sounds_RT:Make;GLScene_Physics_RT:Make;GLScene_Parallel_RT:Make;GLScene_Cg_RT:Make;GLScene_SDL_RT:Make"/>
+        <CallTarget Targets="GLScene_RT:Make;GLScene_Sounds_RT:Make;GLScene_Physics_RT:Make;GLScene_Parallel_RT:Make;GLScene_Cg_RT:Make"/>
     </Target>
     <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/>
 </Project>

+ 0 - 2
Packages/Win32/GLScene_DT.dproj

@@ -202,8 +202,6 @@
                     <Source Name="MainSource">GLScene_DT.dpk</Source>
                 </Source>
                 <Excluded_Packages>
-                    <Excluded_Packages Name="D:\GLScene\bpl\Win32\GLScene_Sounds_DT.bpl">File D:\GLScene\bpl\Win32\GLScene_Sounds_DT.bpl not found</Excluded_Packages>
-                    <Excluded_Packages Name="D:\GLScene\bpl\Win32\GLScene_Physics_DT.bpl">File D:\GLScene\bpl\Win32\GLScene_Physics_DT.bpl not found</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>

+ 1 - 1
Packages/Win32/GLScene_Parallel_DT.dpk

@@ -39,7 +39,7 @@ requires
   GLScene_Parallel_RT;
 
 contains
-  FCUDAEditor in '..\..\Source\FCUDAEditor.pas',
+  FCUDAEditor in '..\..\Source\FCUDAEditor.pas' {GLSCUDAEditorForm},
   GLS.ParallelRegister in '..\..\Source\GLS.ParallelRegister.pas';
 
 end.

+ 0 - 2
Packages/Win32/GLScene_Parallel_DT.dproj

@@ -147,8 +147,6 @@
                     <Source Name="MainSource">GLScene_Parallel_DT.dpk</Source>
                 </Source>
                 <Excluded_Packages>
-                    <Excluded_Packages Name="D:\GLScene\bpl\Win32\GLScene_Sounds_DT.bpl">File D:\GLScene\bpl\Win32\GLScene_Sounds_DT.bpl not found</Excluded_Packages>
-                    <Excluded_Packages Name="D:\GLScene\bpl\Win32\GLScene_Physics_DT.bpl">File D:\GLScene\bpl\Win32\GLScene_Physics_DT.bpl not found</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>

+ 0 - 2
Packages/Win32/GLScene_Parallel_RT.dproj

@@ -161,8 +161,6 @@
                     <Source Name="MainSource">GLScene_Parallel_RT.dpk</Source>
                 </Source>
                 <Excluded_Packages>
-                    <Excluded_Packages Name="D:\GLScene\bpl\Win32\GLScene_Sounds_DT.bpl">File D:\GLScene\bpl\Win32\GLScene_Sounds_DT.bpl not found</Excluded_Packages>
-                    <Excluded_Packages Name="D:\GLScene\bpl\Win32\GLScene_Physics_DT.bpl">File D:\GLScene\bpl\Win32\GLScene_Physics_DT.bpl not found</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>

+ 0 - 2
Packages/Win32/GLScene_Physics_DT.dproj

@@ -139,8 +139,6 @@
                     <Source Name="MainSource">GLScene_Physics_DT.dpk</Source>
                 </Source>
                 <Excluded_Packages>
-                    <Excluded_Packages Name="D:\GLScene\bpl\Win32\GLScene_Sounds_DT.bpl">File D:\GLScene\bpl\Win32\GLScene_Sounds_DT.bpl not found</Excluded_Packages>
-                    <Excluded_Packages Name="D:\GLScene\bpl\Win32\GLScene_Physics_DT.bpl">File D:\GLScene\bpl\Win32\GLScene_Physics_DT.bpl not found</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>

+ 0 - 2
Packages/Win32/GLScene_Physics_RT.dproj

@@ -150,8 +150,6 @@
                     <Source Name="MainSource">GLScene_Physics_RT.dpk</Source>
                 </Source>
                 <Excluded_Packages>
-                    <Excluded_Packages Name="D:\GLScene\bpl\Win32\GLScene_Sounds_DT.bpl">File D:\GLScene\bpl\Win32\GLScene_Sounds_DT.bpl not found</Excluded_Packages>
-                    <Excluded_Packages Name="D:\GLScene\bpl\Win32\GLScene_Physics_DT.bpl">File D:\GLScene\bpl\Win32\GLScene_Physics_DT.bpl not found</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>

+ 0 - 2
Packages/Win32/GLScene_RT.dproj

@@ -413,8 +413,6 @@
                     <Source Name="MainSource">GLScene_RT.dpk</Source>
                 </Source>
                 <Excluded_Packages>
-                    <Excluded_Packages Name="D:\GLScene\bpl\Win32\GLScene_Sounds_DT.bpl">File D:\GLScene\bpl\Win32\GLScene_Sounds_DT.bpl not found</Excluded_Packages>
-                    <Excluded_Packages Name="D:\GLScene\bpl\Win32\GLScene_Physics_DT.bpl">File D:\GLScene\bpl\Win32\GLScene_Physics_DT.bpl not found</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>

+ 0 - 2
Packages/Win32/GLScene_SDL_DT.dproj

@@ -134,8 +134,6 @@
                     <Source Name="MainSource">GLScene_SDL_DT.dpk</Source>
                 </Source>
                 <Excluded_Packages>
-                    <Excluded_Packages Name="D:\GLScene\bpl\Win32\GLScene_Sounds_DT.bpl">File D:\GLScene\bpl\Win32\GLScene_Sounds_DT.bpl not found</Excluded_Packages>
-                    <Excluded_Packages Name="D:\GLScene\bpl\Win32\GLScene_Physics_DT.bpl">File D:\GLScene\bpl\Win32\GLScene_Physics_DT.bpl not found</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>

+ 0 - 2
Packages/Win32/GLScene_SDL_RT.dproj

@@ -123,8 +123,6 @@
                     <Source Name="MainSource">GLScene_SDL_RT.dpk</Source>
                 </Source>
                 <Excluded_Packages>
-                    <Excluded_Packages Name="D:\GLScene\bpl\Win32\GLScene_Sounds_DT.bpl">File D:\GLScene\bpl\Win32\GLScene_Sounds_DT.bpl not found</Excluded_Packages>
-                    <Excluded_Packages Name="D:\GLScene\bpl\Win32\GLScene_Physics_DT.bpl">File D:\GLScene\bpl\Win32\GLScene_Physics_DT.bpl not found</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>

+ 1 - 3
Packages/Win32/GLScene_Scripts_DT.dpk

@@ -38,8 +38,6 @@ requires
   GLScene_Scripts_RT;
 
 contains
-  GLS.DWSScript in '..\..\Source\GLS.DWSScript.pas',
-  GLS.DWSObjects in '..\..\Source\GLS.DWSObjects.pas',
-  GLS.PythonScript in '..\..\Source\GLS.PythonScript.pas';
+  GLS.dwsScene in '..\..\Source\GLS.dwsScene.pas';
 
 end.

+ 2 - 18
Packages/Win32/GLScene_Scripts_DT.dproj

@@ -13,11 +13,6 @@
     <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
         <Base>true</Base>
     </PropertyGroup>
-    <PropertyGroup Condition="('$(Platform)'=='Android64' and '$(Base)'=='true') or '$(Base_Android64)'!=''">
-        <Base_Android64>true</Base_Android64>
-        <CfgParent>Base</CfgParent>
-        <Base>true</Base>
-    </PropertyGroup>
     <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
         <Base_Win32>true</Base_Win32>
         <CfgParent>Base</CfgParent>
@@ -61,14 +56,6 @@
         <VerInfo_Locale>1049</VerInfo_Locale>
         <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName=</VerInfo_Keys>
     </PropertyGroup>
-    <PropertyGroup Condition="'$(Base_Android64)'!=''">
-        <Base_Android>true</Base_Android>
-        <CfgParent>Base</CfgParent>
-        <Base>true</Base>
-        <VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=</VerInfo_Keys>
-        <BT_BuildType>Debug</BT_BuildType>
-        <EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services.dex.jar</EnabledSysJars>
-    </PropertyGroup>
     <PropertyGroup Condition="'$(Base_Win32)'!=''">
         <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
         <BT_BuildType>Debug</BT_BuildType>
@@ -117,9 +104,7 @@
         <DCCReference Include="DWS.Runtime.dcp"/>
         <DCCReference Include="GLScene_RT.dcp"/>
         <DCCReference Include="GLScene_Scripts_RT.dcp"/>
-        <DCCReference Include="..\..\Source\GLS.DWSScript.pas"/>
-        <DCCReference Include="..\..\Source\GLS.DWSObjects.pas"/>
-        <DCCReference Include="..\..\Source\GLS.PythonScript.pas"/>
+        <DCCReference Include="..\..\Source\GLS.dwsScene.pas"/>
         <BuildConfiguration Include="Debug">
             <Key>Cfg_2</Key>
             <CfgParent>Base</CfgParent>
@@ -150,12 +135,11 @@
                 </Excluded_Packages>
             </Delphi.Personality>
             <Platforms>
-                <Platform value="Android64">False</Platform>
                 <Platform value="Win32">True</Platform>
                 <Platform value="Win64">False</Platform>
             </Platforms>
             <Deployment Version="3">
-                <DeployFile LocalName="C:\Users\Public\Documents\Embarcadero\Studio\19.0\Bpl\GLScene_Scripts_DT.bpl" Configuration="Debug" Class="ProjectOutput">
+                <DeployFile LocalName="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Scripts_DT.bpl" Configuration="Debug" Class="ProjectOutput">
                     <Platform Name="Win32">
                         <RemoteName>GLScene_Scripts_DT.bpl</RemoteName>
                         <Overwrite>true</Overwrite>

+ 7 - 5
Packages/Win32/GLScene_Scripts_RT.dpk

@@ -36,10 +36,12 @@ requires
   DWS_RT;
 
 contains
-  DWS.HelperFunc in '..\..\Source\DWS.HelperFunc.pas',
-  DWS.Classes in '..\..\Source\DWS.Classes.pas',
-  DWS.VectorGeometry in '..\..\Source\DWS.VectorGeometry.pas',
-  DWS.GLScene in '..\..\Source\DWS.GLScene.pas',
-  DWS.OpenGL in '..\..\Source\DWS.OpenGL.pas';
+  GLS.PythonScript in '..\..\Source\GLS.PythonScript.pas',
+  GLS.dwsClasses in '..\..\Source\GLS.dwsClasses.pas',
+  GLS.dwsHelperFunc in '..\..\Source\GLS.dwsHelperFunc.pas',
+  GLS.dwsObjects in '..\..\Source\GLS.dwsObjects.pas',
+  GLS.dwsOpenGL in '..\..\Source\GLS.dwsOpenGL.pas',
+  GLS.dwsScript in '..\..\Source\GLS.dwsScript.pas',
+  GLS.dwsVectorGeometry in '..\..\Source\GLS.dwsVectorGeometry.pas';
 
 end.

+ 7 - 19
Packages/Win32/GLScene_Scripts_RT.dproj

@@ -13,11 +13,6 @@
     <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
         <Base>true</Base>
     </PropertyGroup>
-    <PropertyGroup Condition="('$(Platform)'=='Android64' and '$(Base)'=='true') or '$(Base_Android64)'!=''">
-        <Base_Android64>true</Base_Android64>
-        <CfgParent>Base</CfgParent>
-        <Base>true</Base>
-    </PropertyGroup>
     <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
         <Base_Win32>true</Base_Win32>
         <CfgParent>Base</CfgParent>
@@ -61,14 +56,6 @@
         <VerInfo_Locale>1049</VerInfo_Locale>
         <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName=</VerInfo_Keys>
     </PropertyGroup>
-    <PropertyGroup Condition="'$(Base_Android64)'!=''">
-        <Base_Android>true</Base_Android>
-        <CfgParent>Base</CfgParent>
-        <Base>true</Base>
-        <VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=</VerInfo_Keys>
-        <BT_BuildType>Debug</BT_BuildType>
-        <EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services.dex.jar</EnabledSysJars>
-    </PropertyGroup>
     <PropertyGroup Condition="'$(Base_Win32)'!=''">
         <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
         <BT_BuildType>Debug</BT_BuildType>
@@ -115,11 +102,13 @@
         <DCCReference Include="vcl.dcp"/>
         <DCCReference Include="GLScene_RT.dcp"/>
         <DCCReference Include="DWS_RT.dcp"/>
-        <DCCReference Include="..\..\Source\DWS.HelperFunc.pas"/>
-        <DCCReference Include="..\..\Source\DWS.Classes.pas"/>
-        <DCCReference Include="..\..\Source\DWS.VectorGeometry.pas"/>
-        <DCCReference Include="..\..\Source\DWS.GLScene.pas"/>
-        <DCCReference Include="..\..\Source\DWS.OpenGL.pas"/>
+        <DCCReference Include="..\..\Source\GLS.PythonScript.pas"/>
+        <DCCReference Include="..\..\Source\GLS.dwsClasses.pas"/>
+        <DCCReference Include="..\..\Source\GLS.dwsHelperFunc.pas"/>
+        <DCCReference Include="..\..\Source\GLS.dwsObjects.pas"/>
+        <DCCReference Include="..\..\Source\GLS.dwsOpenGL.pas"/>
+        <DCCReference Include="..\..\Source\GLS.dwsScript.pas"/>
+        <DCCReference Include="..\..\Source\GLS.dwsVectorGeometry.pas"/>
         <BuildConfiguration Include="Debug">
             <Key>Cfg_2</Key>
             <CfgParent>Base</CfgParent>
@@ -150,7 +139,6 @@
                 </Excluded_Packages>
             </Delphi.Personality>
             <Platforms>
-                <Platform value="Android64">False</Platform>
                 <Platform value="Win32">True</Platform>
                 <Platform value="Win64">False</Platform>
             </Platforms>

+ 0 - 2
Packages/Win32/GLScene_Sounds_DT.dproj

@@ -137,8 +137,6 @@
                     <Source Name="MainSource">GLScene_Sounds_DT.dpk</Source>
                 </Source>
                 <Excluded_Packages>
-                    <Excluded_Packages Name="D:\GLScene\bpl\Win32\GLScene_Sounds_DT.bpl">File D:\GLScene\bpl\Win32\GLScene_Sounds_DT.bpl not found</Excluded_Packages>
-                    <Excluded_Packages Name="D:\GLScene\bpl\Win32\GLScene_Physics_DT.bpl">File D:\GLScene\bpl\Win32\GLScene_Physics_DT.bpl not found</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>

+ 0 - 2
Packages/Win32/GLScene_Sounds_RT.dproj

@@ -137,8 +137,6 @@
                     <Source Name="MainSource">GLScene_Sounds_RT.dpk</Source>
                 </Source>
                 <Excluded_Packages>
-                    <Excluded_Packages Name="D:\GLScene\bpl\Win32\GLScene_Sounds_DT.bpl">File D:\GLScene\bpl\Win32\GLScene_Sounds_DT.bpl not found</Excluded_Packages>
-                    <Excluded_Packages Name="D:\GLScene\bpl\Win32\GLScene_Physics_DT.bpl">File D:\GLScene\bpl\Win32\GLScene_Physics_DT.bpl not found</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>

+ 8 - 13
Packages/Win64/GLScene_Cg_RT.dproj

@@ -76,9 +76,9 @@
         <DCC_Description>GLScene Cg Shaders</DCC_Description>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Base_Win32)'!=''">
-        <DCC_Description>GLScene Cg Shaders</DCC_Description>
-        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName)</VerInfo_Keys>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
         <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
+        <DCC_DcuOutput>..\..\lib\Win32</DCC_DcuOutput>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Base_Win64)'!=''">
         <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
@@ -95,8 +95,7 @@
         <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
-        <DCC_Description>GLScene Cg Shaders</DCC_Description>
-        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName)</VerInfo_Keys>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
         <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
@@ -107,21 +106,17 @@
         <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
-        <DCC_Description>GLScene Cg Shaders</DCC_Description>
         <DCC_ObjOutput>..\lib\</DCC_ObjOutput>
         <DCC_BpiOutput>..\lib\</DCC_BpiOutput>
         <DCC_HppOutput>..\include\</DCC_HppOutput>
         <DCC_CBuilderOutput>All</DCC_CBuilderOutput>
-        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName)</VerInfo_Keys>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
         <DCC_HppOutput>..\..\include\Win64</DCC_HppOutput>
         <DCC_BpiOutput>..\..\lib\Win64</DCC_BpiOutput>
         <DCC_ObjOutput>..\..\lib\Win64</DCC_ObjOutput>
         <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
-        <DCC_UnitSearchPath>..\..\Source</DCC_UnitSearchPath>
-        <DCC_BplOutput>..\..\bpl\Win64</DCC_BplOutput>
-        <DCC_DcpOutput>..\..\dcp\Win64</DCC_DcpOutput>
     </PropertyGroup>
     <ItemGroup>
         <DelphiCompile Include="$(MainSource)">
@@ -158,10 +153,10 @@
                     <Source Name="MainSource">GLScene_Cg_RT.dpk</Source>
                 </Source>
                 <Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k260.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp260.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k260.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp260.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp270.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
                 </Excluded_Packages>
             </Delphi.Personality>
             <Platforms>

+ 8 - 13
Packages/Win64/GLScene_Parallel_RT.dproj

@@ -76,9 +76,9 @@
         <RuntimeOnlyPackage>true</RuntimeOnlyPackage>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Base_Win32)'!=''">
-        <DCC_Description>GLScene GPU Computing</DCC_Description>
-        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName)</VerInfo_Keys>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
         <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
+        <DCC_DcuOutput>..\..\lib\Win32</DCC_DcuOutput>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Base_Win64)'!=''">
         <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
@@ -95,8 +95,7 @@
         <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
-        <DCC_Description>GLScene GPU Computing</DCC_Description>
-        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName)</VerInfo_Keys>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
         <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
@@ -107,12 +106,11 @@
         <DCC_Optimize>false</DCC_Optimize>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
-        <DCC_Description>GLScene GPU Computing</DCC_Description>
         <DCC_ObjOutput>..\lib\</DCC_ObjOutput>
         <DCC_BpiOutput>..\lib\</DCC_BpiOutput>
         <DCC_HppOutput>..\include\</DCC_HppOutput>
         <DCC_CBuilderOutput>All</DCC_CBuilderOutput>
-        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName)</VerInfo_Keys>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
         <DCC_HppOutput>..\..\include\Win64</DCC_HppOutput>
@@ -120,9 +118,6 @@
         <DCC_ObjOutput>..\..\lib\Win64</DCC_ObjOutput>
         <DCC_DcuOutput>..\..\lib\Win64</DCC_DcuOutput>
         <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
-        <DCC_UnitSearchPath>..\..\Source</DCC_UnitSearchPath>
-        <DCC_DcpOutput>..\..\dcp\Win64</DCC_DcpOutput>
-        <DCC_BplOutput>..\..\bpl\Win64</DCC_BplOutput>
     </PropertyGroup>
     <ItemGroup>
         <DelphiCompile Include="$(MainSource)">
@@ -170,10 +165,10 @@
                     <Source Name="MainSource">GLScene_Parallel_RT.dpk</Source>
                 </Source>
                 <Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k260.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp260.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k260.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp260.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp270.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
                 </Excluded_Packages>
             </Delphi.Personality>
             <Platforms>

+ 9 - 11
Packages/Win64/GLScene_Physics_RT.dproj

@@ -79,8 +79,9 @@
         <DCC_Description>GLScene Physics Managers</DCC_Description>
         <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
         <VerInfo_Locale>1033</VerInfo_Locale>
-        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName)</VerInfo_Keys>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
         <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
+        <DCC_DcuOutput>..\..\lib\Win32</DCC_DcuOutput>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Base_Win64)'!=''">
         <DCC_Description>GLScene Physics Managers</DCC_Description>
@@ -104,12 +105,12 @@
         <VerInfo_Locale>1033</VerInfo_Locale>
         <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
         <DCC_Description>GLScene Physics Managers</DCC_Description>
-        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName)</VerInfo_Keys>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
         <DCC_Description>GLScene Physics Managers</DCC_Description>
         <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName)</VerInfo_Keys>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
         <VerInfo_Locale>1033</VerInfo_Locale>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_2)'!=''">
@@ -122,7 +123,7 @@
         <DCC_ObjOutput>..\lib\</DCC_ObjOutput>
         <DCC_BpiOutput>..\lib\</DCC_BpiOutput>
         <DCC_Description>GLScene Physics Managers</DCC_Description>
-        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName)</VerInfo_Keys>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
         <DCC_CBuilderOutput>All</DCC_CBuilderOutput>
         <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
         <VerInfo_Locale>1033</VerInfo_Locale>
@@ -136,9 +137,6 @@
         <DCC_DcuOutput>..\..\lib\Win64</DCC_DcuOutput>
         <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
         <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <DCC_UnitSearchPath>..\..\Source</DCC_UnitSearchPath>
-        <DCC_DcpOutput>..\..\dcp\Win64</DCC_DcpOutput>
-        <DCC_BplOutput>..\..\bpl\Win64</DCC_BplOutput>
     </PropertyGroup>
     <ItemGroup>
         <DelphiCompile Include="$(MainSource)">
@@ -183,10 +181,10 @@
                     <Source Name="MainSource">GLScene_Physics_RT.dpk</Source>
                 </Source>
                 <Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k260.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp260.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k260.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp260.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp270.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
                 </Excluded_Packages>
             </Delphi.Personality>
             <Platforms>

+ 9 - 14
Packages/Win64/GLScene_RT.dproj

@@ -76,15 +76,15 @@
         <RuntimeOnlyPackage>true</RuntimeOnlyPackage>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Base_Win32)'!=''">
-        <DCC_Description>GLScene OpenGL 3D library</DCC_Description>
         <DCC_AdditionalSwitches>-LUDesignIDE </DCC_AdditionalSwitches>
-        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName)</VerInfo_Keys>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
+        <DCC_DcuOutput>..\..\lib\Win32</DCC_DcuOutput>
         <DCC_Namespace>Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Base_Win64)'!=''">
         <DCC_Namespace>Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
         <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
-        <DCC_DcuOutput>..\lib\Win64</DCC_DcuOutput>
+        <DCC_DcuOutput>..\..\lib\Win64</DCC_DcuOutput>
         <DCC_BpiOutput>..\..\lib\Win64</DCC_BpiOutput>
         <DCC_ObjOutput>..\..\lib\Win64</DCC_ObjOutput>
         <DCC_HppOutput>..\..\include\Win64</DCC_HppOutput>
@@ -96,8 +96,7 @@
         <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
-        <DCC_Description>GLScene OpenGL 3D library</DCC_Description>
-        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName)</VerInfo_Keys>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
         <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
@@ -105,9 +104,6 @@
         <DCC_BpiOutput>..\..\lib\Win64</DCC_BpiOutput>
         <DCC_HppOutput>..\..\include\Win64</DCC_HppOutput>
         <DCC_ObjOutput>..\..\lib\Win64</DCC_ObjOutput>
-        <DCC_UnitSearchPath>..\..\Source</DCC_UnitSearchPath>
-        <DCC_DcpOutput>..\..\dcp\Win64</DCC_DcpOutput>
-        <DCC_BplOutput>..\..\bpl\Win64</DCC_BplOutput>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_2)'!=''">
         <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
@@ -115,13 +111,12 @@
         <DCC_Optimize>false</DCC_Optimize>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
-        <DCC_Description>GLScene OpenGL 3D library</DCC_Description>
         <DCC_HppOutput>..\include\</DCC_HppOutput>
         <DCC_BpiOutput>..\lib\</DCC_BpiOutput>
         <DCC_ObjOutput>..\lib\</DCC_ObjOutput>
         <DCC_CBuilderOutput>All</DCC_CBuilderOutput>
         <DCC_AdditionalSwitches>-LUDesignIDE </DCC_AdditionalSwitches>
-        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName)</VerInfo_Keys>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
         <DCC_DebugDCUs>true</DCC_DebugDCUs>
@@ -420,10 +415,10 @@
                     <Source Name="MainSource">GLScene_RT.dpk</Source>
                 </Source>
                 <Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k260.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp260.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k260.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp260.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp270.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
                 </Excluded_Packages>
             </Delphi.Personality>
             <Platforms>

+ 41 - 9
Packages/Win64/GLScene_SDL_RT.dproj

@@ -28,11 +28,29 @@
         <CfgParent>Base</CfgParent>
         <Base>true</Base>
     </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
+        <Cfg_1_Win32>true</Cfg_1_Win32>
+        <CfgParent>Cfg_1</CfgParent>
+        <Cfg_1>true</Cfg_1>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win64)'!=''">
+        <Cfg_1_Win64>true</Cfg_1_Win64>
+        <CfgParent>Cfg_1</CfgParent>
+        <Cfg_1>true</Cfg_1>
+        <Base>true</Base>
+    </PropertyGroup>
     <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_2)'!=''">
         <Cfg_2>true</Cfg_2>
         <CfgParent>Base</CfgParent>
         <Base>true</Base>
     </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''">
+        <Cfg_2_Win32>true</Cfg_2_Win32>
+        <CfgParent>Cfg_2</CfgParent>
+        <Cfg_2>true</Cfg_2>
+        <Base>true</Base>
+    </PropertyGroup>
     <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win64)'!=''">
         <Cfg_2_Win64>true</Cfg_2_Win64>
         <CfgParent>Cfg_2</CfgParent>
@@ -59,13 +77,15 @@
         <VerInfo_Locale>1033</VerInfo_Locale>
         <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
         <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
-        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName)</VerInfo_Keys>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
+        <DCC_DcuOutput>..\..\lib\Win32</DCC_DcuOutput>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Base_Win64)'!=''">
         <VerInfo_Locale>1033</VerInfo_Locale>
         <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
         <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
-        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName)</VerInfo_Keys>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
+        <DCC_DcuOutput>..\..\lib\Win64</DCC_DcuOutput>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_1)'!=''">
         <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
@@ -73,18 +93,31 @@
         <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
         <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
     </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
+    </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_2)'!=''">
         <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
         <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
         <DCC_Optimize>false</DCC_Optimize>
     </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
+    </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
         <DCC_RangeChecking>true</DCC_RangeChecking>
         <DCC_IOChecking>false</DCC_IOChecking>
         <DCC_IntegerOverflowCheck>true</DCC_IntegerOverflowCheck>
-        <DCC_DcpOutput>..\..\dcp\Win64</DCC_DcpOutput>
         <DCC_DcuOutput>..\..\lib\Win64</DCC_DcuOutput>
-        <DCC_UnitSearchPath>..\..\Source;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
         <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
         <VerInfo_Locale>1033</VerInfo_Locale>
         <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
@@ -92,7 +125,6 @@
         <DCC_HppOutput>..\..\include\Win64</DCC_HppOutput>
         <DCC_BpiOutput>..\..\lib\Win64</DCC_BpiOutput>
         <DCC_ObjOutput>..\..\lib\Win64</DCC_ObjOutput>
-        <DCC_BplOutput>..\..\bpl\Win64</DCC_BplOutput>
     </PropertyGroup>
     <ItemGroup>
         <DelphiCompile Include="$(MainSource)">
@@ -125,10 +157,10 @@
                     <Source Name="MainSource">GLScene_SDL_RT.dpk</Source>
                 </Source>
                 <Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k260.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp260.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k260.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp260.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp270.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
                 </Excluded_Packages>
             </Delphi.Personality>
             <Platforms>

+ 8 - 6
Packages/Win64/GLScene_Scripts_RT.dpk

@@ -36,11 +36,13 @@ requires
   dwsRuntime;
 
 contains
-  dwsHelperFunc in '..\..\Source\ScriptingAPIs\dwsHelperFunc.pas',
-  dwsClasses in '..\..\Source\ScriptingAPIs\dwsClasses.pas',
-  dwsVectorGeometry in '..\..\Source\ScriptingAPIs\dwsVectorGeometry.pas',
-  dwsGLScene in '..\..\Source\ScriptingAPIs\dwsGLScene.pas',
-  dwsOpenGLAdapter in '..\..\Source\ScriptingAPIs\dwsOpenGLAdapter.pas',
-  GLScriptPython in '..\..\Source\ScriptingAPIs\GLScriptPython.pas';
+  GLS.dwsClasses in '..\..\Source\GLS.dwsClasses.pas',
+  GLS.dwsScene in '..\..\Source\GLS.dwsScene.pas',
+  GLS.dwsHelperFunc in '..\..\Source\GLS.dwsHelperFunc.pas',
+  GLS.dwsOpenGL in '..\..\Source\GLS.dwsOpenGL.pas',
+  GLS.dwsVectorGeometry in '..\..\Source\GLS.dwsVectorGeometry.pas',
+  GLS.dwsObjects in '..\..\Source\GLS.dwsObjects.pas',
+  GLS.dwsScript in '..\..\Source\GLS.dwsScript.pas',
+  GLS.PythonScript in '..\..\Source\GLS.PythonScript.pas';
 
 end.

+ 316 - 27
Packages/Win64/GLScene_Scripts_RT.dproj

@@ -7,14 +7,14 @@
         <TargetedPlatforms>3</TargetedPlatforms>
         <AppType>Package</AppType>
         <FrameworkType>VCL</FrameworkType>
-        <ProjectVersion>18.3</ProjectVersion>
+        <ProjectVersion>19.0</ProjectVersion>
         <Platform Condition="'$(Platform)'==''">Win64</Platform>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
         <Base>true</Base>
     </PropertyGroup>
-    <PropertyGroup Condition="('$(Platform)'=='Android' and '$(Base)'=='true') or '$(Base_Android)'!=''">
-        <Base_Android>true</Base_Android>
+    <PropertyGroup Condition="('$(Platform)'=='Android64' and '$(Base)'=='true') or '$(Base_Android64)'!=''">
+        <Base_Android64>true</Base_Android64>
         <CfgParent>Base</CfgParent>
         <Base>true</Base>
     </PropertyGroup>
@@ -33,6 +33,18 @@
         <CfgParent>Base</CfgParent>
         <Base>true</Base>
     </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
+        <Cfg_1_Win32>true</Cfg_1_Win32>
+        <CfgParent>Cfg_1</CfgParent>
+        <Cfg_1>true</Cfg_1>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win64)'!=''">
+        <Cfg_1_Win64>true</Cfg_1_Win64>
+        <CfgParent>Cfg_1</CfgParent>
+        <Cfg_1>true</Cfg_1>
+        <Base>true</Base>
+    </PropertyGroup>
     <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_2)'!=''">
         <Cfg_2>true</Cfg_2>
         <CfgParent>Base</CfgParent>
@@ -66,7 +78,10 @@
         <DCC_Namespace>Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)</DCC_Namespace>
         <DCC_Description>GLScene DWS</DCC_Description>
     </PropertyGroup>
-    <PropertyGroup Condition="'$(Base_Android)'!=''">
+    <PropertyGroup Condition="'$(Base_Android64)'!=''">
+        <Base_Android>true</Base_Android>
+        <CfgParent>Base</CfgParent>
+        <Base>true</Base>
         <EnabledSysJars>android-support-v4.dex.jar;cloud-messaging.dex.jar;fmx.dex.jar;google-analytics-v2.dex.jar;google-play-billing.dex.jar;google-play-licensing.dex.jar;google-play-services.dex.jar</EnabledSysJars>
         <VerInfo_Keys>package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey=</VerInfo_Keys>
         <BT_BuildType>Debug</BT_BuildType>
@@ -74,14 +89,16 @@
     <PropertyGroup Condition="'$(Base_Win32)'!=''">
         <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
         <VerInfo_Locale>1033</VerInfo_Locale>
-        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName)</VerInfo_Keys>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
         <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
+        <DCC_DcuOutput>..\..\lib\Win32</DCC_DcuOutput>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Base_Win64)'!=''">
         <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
         <VerInfo_Locale>1033</VerInfo_Locale>
-        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName)</VerInfo_Keys>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
         <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
+        <DCC_DcuOutput>..\..\lib\Win64</DCC_DcuOutput>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_1)'!=''">
         <DCC_DebugInformation>0</DCC_DebugInformation>
@@ -89,6 +106,16 @@
         <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
         <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
     </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
+    </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_2)'!=''">
         <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
         <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
@@ -97,11 +124,9 @@
     <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
         <DCC_DcuOutput>..\..\lib\Win32</DCC_DcuOutput>
         <DCC_BpiOutput>..\..\lib\Win32</DCC_BpiOutput>
-        <DCC_DcpOutput>..\..\lib\Win32</DCC_DcpOutput>
         <VerInfo_Locale>1033</VerInfo_Locale>
         <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName)</VerInfo_Keys>
-        <DCC_UnitSearchPath>..\..\Source;..\..\Source\Basis;..\..\Source\DesignTime;..\..\Source\FileFormats;..\..\Source\GameAPIs;..\..\Source\ParallelAPIs;..\..\Source\PhysicsAPIs;..\..\Source\ScriptingAPIs;..\..\Source\Shaders;..\..\Source\SoundVideoAPIs;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
         <DCC_CBuilderOutput>All</DCC_CBuilderOutput>
         <DCC_ObjOutput>..\..\lib\Win32</DCC_ObjOutput>
         <DCC_HppOutput>..\..\include\Win32</DCC_HppOutput>
@@ -109,11 +134,9 @@
     <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
         <DCC_DcuOutput>..\..\lib\Win64</DCC_DcuOutput>
         <DCC_BpiOutput>..\..\lib\Win64</DCC_BpiOutput>
-        <DCC_DcpOutput>..\..\lib\Win64</DCC_DcpOutput>
         <VerInfo_Locale>1033</VerInfo_Locale>
         <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
         <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
-        <DCC_UnitSearchPath>..\..\Source;..\..\Source\Basis;..\..\Source\DesignTime;..\..\Source\FileFormats;..\..\Source\GameAPIs;..\..\Source\ParallelAPIs;..\..\Source\PhysicsAPIs;..\..\Source\ScriptingAPIs;..\..\Source\Shaders;..\..\Source\SoundVideoAPIs;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
         <DCC_CBuilderOutput>All</DCC_CBuilderOutput>
         <DCC_ObjOutput>..\..\lib\Win64</DCC_ObjOutput>
         <DCC_HppOutput>..\..\include\Win64</DCC_HppOutput>
@@ -126,12 +149,14 @@
         <DCCReference Include="vcl.dcp"/>
         <DCCReference Include="GLScene_RT.dcp"/>
         <DCCReference Include="dwsRuntime.dcp"/>
-        <DCCReference Include="..\..\Source\ScriptingAPIs\dwsHelperFunc.pas"/>
-        <DCCReference Include="..\..\Source\ScriptingAPIs\dwsClasses.pas"/>
-        <DCCReference Include="..\..\Source\ScriptingAPIs\dwsVectorGeometry.pas"/>
-        <DCCReference Include="..\..\Source\ScriptingAPIs\dwsGLScene.pas"/>
-        <DCCReference Include="..\..\Source\ScriptingAPIs\dwsOpenGLAdapter.pas"/>
-        <DCCReference Include="..\..\Source\ScriptingAPIs\GLScriptPython.pas"/>
+        <DCCReference Include="..\..\Source\GLS.dwsClasses.pas"/>
+        <DCCReference Include="..\..\Source\GLS.dwsScene.pas"/>
+        <DCCReference Include="..\..\Source\GLS.dwsHelperFunc.pas"/>
+        <DCCReference Include="..\..\Source\GLS.dwsOpenGL.pas"/>
+        <DCCReference Include="..\..\Source\GLS.dwsVectorGeometry.pas"/>
+        <DCCReference Include="..\..\Source\GLS.dwsObjects.pas"/>
+        <DCCReference Include="..\..\Source\GLS.dwsScript.pas"/>
+        <DCCReference Include="..\..\Source\GLS.PythonScript.pas"/>
         <BuildConfiguration Include="Debug">
             <Key>Cfg_2</Key>
             <CfgParent>Base</CfgParent>
@@ -153,22 +178,19 @@
                     <Source Name="MainSource">GLScene_Scripts_RT.dpk</Source>
                 </Source>
                 <Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k250.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp250.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k250.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp250.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp270.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
                 </Excluded_Packages>
             </Delphi.Personality>
             <Platforms>
-                <Platform value="Android">False</Platform>
-                <Platform value="iOSDevice32">False</Platform>
-                <Platform value="iOSDevice64">False</Platform>
-                <Platform value="iOSSimulator">False</Platform>
+                <Platform value="Android64">False</Platform>
                 <Platform value="Win32">True</Platform>
                 <Platform value="Win64">True</Platform>
             </Platforms>
             <Deployment Version="3">
-                <DeployFile LocalName="C:\Users\Public\Documents\Embarcadero\Studio\19.0\Bpl\Win64\GLScene_Scripts_RT.bpl" Configuration="Debug" Class="ProjectOutput">
+                <DeployFile LocalName="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\Win64\GLScene_Scripts_RT.bpl" Configuration="Debug" Class="ProjectOutput">
                     <Platform Name="Win64">
                         <RemoteName>GLScene_Scripts_RT.bpl</RemoteName>
                         <Overwrite>true</Overwrite>
@@ -179,7 +201,6 @@
                         <Operation>1</Operation>
                     </Platform>
                     <Platform Name="Win32">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
                         <Operation>0</Operation>
                     </Platform>
                 </DeployClass>
@@ -188,6 +209,20 @@
                         <RemoteDir>classes</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>classes</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidFileProvider">
+                    <Platform Name="Android">
+                        <RemoteDir>res\xml</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\xml</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
                 </DeployClass>
                 <DeployClass Name="AndroidGDBServer">
                     <Platform Name="Android">
@@ -200,90 +235,242 @@
                         <RemoteDir>library\lib\armeabi</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>library\lib\armeabi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidLibnativeArmeabiv7aFile">
+                    <Platform Name="Android64">
+                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
                 </DeployClass>
                 <DeployClass Name="AndroidLibnativeMipsFile">
                     <Platform Name="Android">
                         <RemoteDir>library\lib\mips</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>library\lib\mips</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
                 </DeployClass>
                 <DeployClass Name="AndroidServiceOutput">
                     <Platform Name="Android">
                         <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>library\lib\arm64-v8a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidServiceOutput_Android32">
+                    <Platform Name="Android64">
+                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
                 </DeployClass>
                 <DeployClass Name="AndroidSplashImageDef">
                     <Platform Name="Android">
                         <RemoteDir>res\drawable</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
                 </DeployClass>
                 <DeployClass Name="AndroidSplashStyles">
                     <Platform Name="Android">
                         <RemoteDir>res\values</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStylesV21">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values-v21</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\values-v21</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_Colors">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
                 </DeployClass>
                 <DeployClass Name="Android_DefaultAppIcon">
                     <Platform Name="Android">
                         <RemoteDir>res\drawable</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
                 </DeployClass>
                 <DeployClass Name="Android_LauncherIcon144">
                     <Platform Name="Android">
                         <RemoteDir>res\drawable-xxhdpi</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-xxhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
                 </DeployClass>
                 <DeployClass Name="Android_LauncherIcon36">
                     <Platform Name="Android">
                         <RemoteDir>res\drawable-ldpi</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-ldpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
                 </DeployClass>
                 <DeployClass Name="Android_LauncherIcon48">
                     <Platform Name="Android">
                         <RemoteDir>res\drawable-mdpi</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-mdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
                 </DeployClass>
                 <DeployClass Name="Android_LauncherIcon72">
                     <Platform Name="Android">
                         <RemoteDir>res\drawable-hdpi</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-hdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
                 </DeployClass>
                 <DeployClass Name="Android_LauncherIcon96">
                     <Platform Name="Android">
                         <RemoteDir>res\drawable-xhdpi</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-xhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon24">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-mdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-mdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon36">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-hdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-hdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon48">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-xhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon72">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xxhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-xxhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon96">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xxxhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-xxxhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
                 </DeployClass>
                 <DeployClass Name="Android_SplashImage426">
                     <Platform Name="Android">
                         <RemoteDir>res\drawable-small</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-small</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
                 </DeployClass>
                 <DeployClass Name="Android_SplashImage470">
                     <Platform Name="Android">
                         <RemoteDir>res\drawable-normal</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-normal</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
                 </DeployClass>
                 <DeployClass Name="Android_SplashImage640">
                     <Platform Name="Android">
                         <RemoteDir>res\drawable-large</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-large</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
                 </DeployClass>
                 <DeployClass Name="Android_SplashImage960">
                     <Platform Name="Android">
                         <RemoteDir>res\drawable-xlarge</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-xlarge</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_Strings">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
                 </DeployClass>
                 <DeployClass Name="DebugSymbols">
                     <Platform Name="iOSSimulator">
@@ -301,6 +488,10 @@
                         <Operation>1</Operation>
                         <Extensions>.framework</Extensions>
                     </Platform>
+                    <Platform Name="OSX64">
+                        <Operation>1</Operation>
+                        <Extensions>.framework</Extensions>
+                    </Platform>
                     <Platform Name="Win32">
                         <Operation>0</Operation>
                     </Platform>
@@ -310,6 +501,10 @@
                         <Operation>1</Operation>
                         <Extensions>.dylib</Extensions>
                     </Platform>
+                    <Platform Name="OSX64">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
                     <Platform Name="Win32">
                         <Operation>0</Operation>
                         <Extensions>.dll;.bpl</Extensions>
@@ -332,6 +527,10 @@
                         <Operation>1</Operation>
                         <Extensions>.dylib</Extensions>
                     </Platform>
+                    <Platform Name="OSX64">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
                     <Platform Name="Win32">
                         <Operation>0</Operation>
                         <Extensions>.bpl</Extensions>
@@ -341,6 +540,9 @@
                     <Platform Name="Android">
                         <Operation>0</Operation>
                     </Platform>
+                    <Platform Name="Android64">
+                        <Operation>0</Operation>
+                    </Platform>
                     <Platform Name="iOSDevice32">
                         <Operation>0</Operation>
                     </Platform>
@@ -353,6 +555,9 @@
                     <Platform Name="OSX32">
                         <Operation>0</Operation>
                     </Platform>
+                    <Platform Name="OSX64">
+                        <Operation>0</Operation>
+                    </Platform>
                     <Platform Name="Win32">
                         <Operation>0</Operation>
                     </Platform>
@@ -390,6 +595,16 @@
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
+                <DeployClass Name="iPad_Launch2x">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
                 <DeployClass Name="iPad_Launch768">
                     <Platform Name="iOSDevice32">
                         <Operation>1</Operation>
@@ -401,6 +616,26 @@
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
+                <DeployClass Name="iPad_LaunchDark2x">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Launch2x">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
                 <DeployClass Name="iPhone_Launch320">
                     <Platform Name="iOSDevice32">
                         <Operation>1</Operation>
@@ -412,6 +647,16 @@
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
+                <DeployClass Name="iPhone_Launch3x">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
                 <DeployClass Name="iPhone_Launch640">
                     <Platform Name="iOSDevice32">
                         <Operation>1</Operation>
@@ -434,10 +679,33 @@
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
+                <DeployClass Name="iPhone_LaunchDark2x">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_LaunchDark3x">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
                 <DeployClass Name="ProjectAndroidManifest">
                     <Platform Name="Android">
                         <Operation>1</Operation>
                     </Platform>
+                    <Platform Name="Android64">
+                        <Operation>1</Operation>
+                    </Platform>
                 </DeployClass>
                 <DeployClass Name="ProjectiOSDeviceDebug">
                     <Platform Name="iOSDevice32">
@@ -452,6 +720,7 @@
                 <DeployClass Name="ProjectiOSDeviceResourceRules"/>
                 <DeployClass Name="ProjectiOSEntitlements"/>
                 <DeployClass Name="ProjectiOSInfoPList"/>
+                <DeployClass Name="ProjectiOSLaunchScreen"/>
                 <DeployClass Name="ProjectiOSResource">
                     <Platform Name="iOSDevice32">
                         <Operation>1</Operation>
@@ -463,6 +732,7 @@
                         <Operation>1</Operation>
                     </Platform>
                 </DeployClass>
+                <DeployClass Name="ProjectOSXDebug"/>
                 <DeployClass Name="ProjectOSXEntitlements"/>
                 <DeployClass Name="ProjectOSXInfoPList"/>
                 <DeployClass Name="ProjectOSXResource">
@@ -470,12 +740,20 @@
                         <RemoteDir>Contents\Resources</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\Resources</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
                 </DeployClass>
                 <DeployClass Required="true" Name="ProjectOutput">
                     <Platform Name="Android">
                         <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
                         <Operation>1</Operation>
                     </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>library\lib\arm64-v8a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
                     <Platform Name="iOSDevice32">
                         <Operation>1</Operation>
                     </Platform>
@@ -491,10 +769,19 @@
                     <Platform Name="OSX32">
                         <Operation>1</Operation>
                     </Platform>
+                    <Platform Name="OSX64">
+                        <Operation>1</Operation>
+                    </Platform>
                     <Platform Name="Win32">
                         <Operation>0</Operation>
                     </Platform>
                 </DeployClass>
+                <DeployClass Name="ProjectOutput_Android32">
+                    <Platform Name="Android64">
+                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
                 <DeployClass Name="ProjectUWPManifest">
                     <Platform Name="Win32">
                         <Operation>1</Operation>
@@ -530,7 +817,9 @@
                 <ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
                 <ProjectRoot Platform="OSX32" Name="$(PROJECTNAME)"/>
                 <ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX64" Name="$(PROJECTNAME)"/>
                 <ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
             </Deployment>
         </BorlandProject>
         <ProjectFileVersion>12</ProjectFileVersion>

+ 8 - 10
Packages/Win64/GLScene_Sounds_RT.dproj

@@ -82,7 +82,8 @@
         <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
         <VerInfo_Locale>1033</VerInfo_Locale>
         <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName)</VerInfo_Keys>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
+        <DCC_DcuOutput>..\..\lib\Win32</DCC_DcuOutput>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Base_Win64)'!=''">
         <DCC_Description>GLScene Sound Managers</DCC_Description>
@@ -105,7 +106,7 @@
         <VerInfo_Locale>1033</VerInfo_Locale>
         <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
         <DCC_Description>GLScene Sound Managers</DCC_Description>
-        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName)</VerInfo_Keys>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
         <DCC_Description>GLScene Sound Managers</DCC_Description>
@@ -116,9 +117,6 @@
         <DCC_BpiOutput>..\..\lib\Win64</DCC_BpiOutput>
         <DCC_HppOutput>..\..\include\Win64</DCC_HppOutput>
         <DCC_ObjOutput>..\..\lib\Win64</DCC_ObjOutput>
-        <DCC_UnitSearchPath>..\..\Source</DCC_UnitSearchPath>
-        <DCC_DcpOutput>..\..\dcp\Win64</DCC_DcpOutput>
-        <DCC_BplOutput>..\..\bpl\Win64</DCC_BplOutput>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_2)'!=''">
         <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
@@ -133,7 +131,7 @@
         <VerInfo_Locale>1033</VerInfo_Locale>
         <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
         <DCC_Description>GLScene Sound Managers</DCC_Description>
-        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName)</VerInfo_Keys>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
         <DCC_DebugDCUs>true</DCC_DebugDCUs>
@@ -184,10 +182,10 @@
                     <Source Name="MainSource">GLScene_Sounds_RT.dpk</Source>
                 </Source>
                 <Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k260.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp260.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k260.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp260.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp270.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
                 </Excluded_Packages>
             </Delphi.Personality>
             <Platforms>

+ 0 - 282
Source/DWS.Objects.pas

@@ -1,282 +0,0 @@
-//
-// This unit is part of the GLScene Engine, http://glscene.org
-//
-(*
-  Base classes and logic for DelphiWebScript enabled
-  objects in GLScene
-*)
-unit GLDWSObjects;
-
-interface
-
-uses
-  System.Classes,
-  System.SysUtils,
-  GLScene,
-  XCollection,
-  GLScriptDWS2,
-  GLBaseClasses,
-  GLManager,
-  dwsComp,
-  dwsExprs,
-  dwsSymbols;
-
-type
-  (* A DelphiWebScript enabled behaviour. This behaviour also calls
-    on the OnProgress and OnBeginProgram procedures in the script if
-    they are found. Once compiled and executed the program remains
-    active until killed, deactivated or the script is invalidated. *)
-  TGLDWSActiveBehaviour = class(TGLBehaviour)
-  private
-    FActive: Boolean;
-    FScript: TStringList;
-    FDWSProgram: TProgram;
-    FCompiler: TGLDelphiWebScriptII;
-    FCompilerName: String;
-    procedure SetActive(const Value: Boolean);
-    procedure SetScript(const Value: TStringList);
-    procedure SetCompiler(const Value: TGLDelphiWebScript);
-    procedure CompileProgram;
-    procedure BeginProgram;
-    procedure EndProgram;
-    procedure KillProgram;
-  protected
-    procedure WriteToFiler(writer: TWriter); override;
-    procedure ReadFromFiler(reader: TReader); override;
-    procedure Loaded; override;
-  public
-    constructor Create(AOwner: TGLXCollection); override;
-    destructor Destroy; override;
-    class function FriendlyName: String; override;
-    procedure DoProgress(const ProgressTimes: TProgressTimes); override;
-    procedure InvalidateScript;
-    property DWSProgram: TProgram read FDWSProgram;
-  published
-    property Active: Boolean read FActive write SetActive;
-    property Script: TStringList read FScript write SetScript;
-    property Compiler: TGLDelphiWebScriptII read FCompiler write SetCompiler;
-  end;
-
-procedure Register;
-
-// --------------------------------------------------
-implementation
-// --------------------------------------------------
-
-// ----------
-// ---------- Miscellaneous ----------
-// ----------
-
-procedure Register;
-begin
-  RegisterClasses([TGLDWSActiveBehaviour]);
-end;
-
-
-// ----------
-// ---------- TGLDWSActiveBehaviour ----------
-// ----------
-
-constructor TGLDWSActiveBehaviour.Create(AOwner: TGLXCollection);
-begin
-  inherited;
-  FScript := TStringList.Create;
-end;
-
-destructor TGLDWSActiveBehaviour.Destroy;
-begin
-  KillProgram;
-  FScript.Free;
-  inherited;
-end;
-
-class function TGLDWSActiveBehaviour.FriendlyName: String;
-begin
-  Result := 'DWS Active Script';
-end;
-
-procedure TGLDWSActiveBehaviour.DoProgress(const ProgressTimes: TProgressTimes);
-var
-  Symbol: TSymbol;
-begin
-  inherited;
-  if Assigned(FDWSProgram) then
-  begin
-    if FDWSProgram.ProgramState = psRunning then
-    begin
-      Symbol := DWSProgram.Table.FindSymbol('OnProgress');
-      if Assigned(Symbol) then
-        if Symbol is TFuncSymbol then
-          DWSProgram.Info.Func['OnProgress']
-            .Call([ProgressTimes.newTime, ProgressTimes.deltaTime]);
-    end;
-  end;
-end;
-
-procedure TGLDWSActiveBehaviour.Loaded;
-var
-  temp: TComponent;
-begin
-  inherited;
-  if FCompilerName <> '' then
-  begin
-    temp := FindManager(TGLDelphiWebScript, FCompilerName);
-    if Assigned(temp) then
-      Compiler := TGLDelphiWebScript(temp);
-    FCompilerName := '';
-    CompileProgram;
-    if Active then
-      BeginProgram;
-  end;
-end;
-
-procedure TGLDWSActiveBehaviour.ReadFromFiler(reader: TReader);
-begin
-  inherited;
-  with reader do
-  begin
-    Assert(ReadInteger = 0); // Archive version
-    Active := ReadBoolean;
-    FCompilerName := ReadString;
-    Script.Text := ReadString;
-  end;
-end;
-
-procedure TGLDWSActiveBehaviour.WriteToFiler(writer: TWriter);
-begin
-  inherited;
-  with writer do
-  begin
-    WriteInteger(0); // Archive version
-    WriteBoolean(FActive);
-    if Assigned(FCompiler) then
-      WriteString(FCompiler.GetNamePath)
-    else
-      WriteString('');
-    WriteString(Script.Text);
-  end;
-end;
-
-procedure TGLDWSActiveBehaviour.CompileProgram;
-begin
-  if Assigned(Compiler) then
-  begin
-    KillProgram;
-    FDWS2Program := Compiler.Compile(Script.Text);
-    if Active then
-      BeginProgram;
-  end;
-end;
-
-procedure TGLDWSActiveBehaviour.BeginProgram;
-var
-  Symbol: TSymbol;
-  ObjectID: Variant;
-  Obj: TGLBaseSceneObject;
-begin
-  if Assigned(DWSProgram) then
-  begin
-    if DWSProgram.ProgramState = psReadyToRun then
-    begin
-      DWSProgram.BeginProgram;
-      if FDWSProgram.ProgramState = psRunning then
-      begin
-        Symbol := DWSProgram.Table.FindSymbol('OnBeginProgram');
-        if Assigned(Symbol) then
-          if Symbol is TFuncSymbol then
-          begin
-            Obj := OwnerBaseSceneObject;
-            if Assigned(Obj) then
-            begin
-              ObjectID := DWSProgram.Info.RegisterExternalObject(Obj,
-                False, False);
-              DWSProgram.Info.Func['OnBeginProgram'].Call([ObjectID]);
-            end;
-          end;
-      end;
-    end;
-  end;
-end;
-
-procedure TGLDWSActiveBehaviour.EndProgram;
-begin
-  if Assigned(DWSProgram) then
-  begin
-    if DWSProgram.ProgramState = psRunning then
-      DWSProgram.EndProgram;
-  end;
-end;
-
-procedure TGLDWSActiveBehaviour.KillProgram;
-begin
-  if Assigned(DWSProgram) then
-  begin
-    EndProgram;
-    FreeAndNil(FDWSProgram);
-  end;
-end;
-
-procedure TGLDWSActiveBehaviour.InvalidateScript;
-begin
-  KillProgram;
-  CompileProgram;
-end;
-
-procedure TGLDWSActiveBehaviour.SetActive(const Value: Boolean);
-begin
-  if Value <> FActive then
-  begin
-    EndProgram;
-    FActive := Value;
-    if Active then
-      BeginProgram;
-  end;
-end;
-
-procedure TGLDWSActiveBehaviour.SetScript(const Value: TStringList);
-begin
-  if Assigned(Value) then
-  begin
-    KillProgram;
-    FScript.Assign(Value);
-    if Assigned(Compiler) then
-    begin
-      CompileProgram;
-      if Active then
-        BeginProgram;
-    end;
-  end;
-end;
-
-procedure TGLDWSActiveBehaviour.SetCompiler(const Value: TGLDelphiWebScriptII);
-begin
-  if Value <> FCompiler then
-  begin
-    if Assigned(FCompiler) then
-      KillProgram;
-    FCompiler := Value;
-    if Assigned(FCompiler) then
-    begin
-      RegisterManager(FCompiler);
-      CompileProgram;
-      if Active then
-        BeginProgram;
-    end;
-  end;
-end;
-
-// --------------------------------------------------
-initialization
-
-// --------------------------------------------------
-
-RegisterXCollectionItemClass(TGLDWSActiveBehaviour);
-
-// --------------------------------------------------
-finalization
-
-// --------------------------------------------------
-
-UnregisterXCollectionItemClass(TGLDWSActiveBehaviour);
-
-end.

+ 3 - 2
Source/FileO3TCImage.pas

@@ -1,13 +1,14 @@
 //
 // This unit is part of the GLScene Engine, http://glscene.org
 //
+
+unit FileO3TCImage;
+
 (*
     Good to preview pictures in OpenDialog,
     so you may include both O3TCImage (preview) and GLFileO3TC (loading)
 *)
 
-unit FileO3TCImage;
-
 interface
 
 {$I GLScene.inc}

+ 3 - 3
Source/FileOCT.pas

@@ -1,11 +1,11 @@
 //
 // This unit is part of the GLScene Engine, http://glscene.org
 //
-{
-	Loader for FSRad OCT files. 
-}
+
 unit FileOCT;
 
+(* Loader for FSRad OCT files *)
+
 interface
 
 {$I GLScene.inc}

+ 393 - 393
Source/DWS.Classes.pas → Source/GLS.dwsClasses.pas

@@ -1,393 +1,393 @@
-//
-// This unit is part of the GLScene Engine, http://glscene.org
-//
-
-unit DWS.Classes;
-
-(* DelphiWebScript symbol creation for base Delphi classes. *)
-
-interface
-
-uses
-  System.Classes,
-  System.SysUtils,
-
-  DWS.Exprs,
-  DWS.Symbols,
-  DWS.Comp,
-  DWS.CompStrings,
-  DWS.Stack,
-  DWS.Functions,
-  DWS.HelperFunc;
-
-type
-  TdwsClassesUnit = class(TdwsUnitComponent)
-  private
-    procedure AddClassTPersistent(SymbolTable: TSymbolTable);
-    procedure AddClassTComponent(SymbolTable: TSymbolTable);
-  protected
-    procedure AddUnitSymbols(SymbolTable: TSymbolTable); override;
-  public
-    constructor Create(AOwner: TComponent); override;
-  end;
-
-procedure Register;
-
-// ===============================================================
-implementation
-// ===============================================================
-
-// ----------
-// ---------- Internal class method class declarations ----------
-// ----------
-
-type
-  TPersistentAssignMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TPersistentGetNamePathMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TComponentCreateMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TComponentSetTagMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TComponentGetTagMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TComponentSetNameMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TComponentGetNameMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TComponentGetOwnerMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TComponentSetComponentIndexMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TComponentGetComponentIndexMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TComponentGetComponentCountMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TComponentGetComponentMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TComponentFindComponentMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TComponentFreeNotificationMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TComponentRemoveFreeNotificationMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TComponentGetParentComponentMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TComponentGetNamePathMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TComponentHasParentMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-
-// ----------
-// ---------- Internal class method execute procedures ----------
-// ----------
-
-procedure TPersistentAssignMethod.Execute(var ExternalObject: TObject);
-var
-  Source: TObject;
-begin
-  ValidateExternalObject(ExternalObject, TPersistent);
-  Source := Info.GetExternalObjForVar('Source');
-  if not Assigned(Source) then
-    raise Exception.Create('Source parameter is unassigned.');
-  if not(Source is TPersistent) then
-    Exception.Create('Source parameter is not inheriting from TPersistent.');
-  TPersistent(ExternalObject).Assign(TPersistent(Source));
-end;
-
-procedure TPersistentGetNamePathMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TPersistent);
-  Info.Result.Value := TPersistent(ExternalObject).GetNamePath;
-end;
-
-procedure TComponentCreateMethod.Execute(var ExternalObject: TObject);
-var
-  AOwner: TComponent;
-begin
-  AOwner := TComponent(Info.GetExternalObjForVar('AOwner'));
-  ExternalObject := TComponent.Create(AOwner);
-end;
-
-procedure TComponentSetTagMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TComponent);
-  TComponent(ExternalObject).Tag := Info['Value'];
-end;
-
-procedure TComponentGetTagMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TComponent);
-  Info.Result := TComponent(ExternalObject).Tag;
-end;
-
-procedure TComponentSetNameMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TComponent);
-  TComponent(ExternalObject).Name := Info['Value'];
-end;
-
-procedure TComponentGetNameMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TComponent);
-  Info.Result := TComponent(ExternalObject).Name;
-end;
-
-procedure TComponentGetOwnerMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TComponent);
-  Info.Result := Info.RegisterExternalObject(TComponent(ExternalObject).Owner,
-    False, False);
-end;
-
-procedure TComponentSetComponentIndexMethod.Execute(var ExternalObject
-  : TObject);
-begin
-  ValidateExternalObject(ExternalObject, TComponent);
-  TComponent(ExternalObject).ComponentIndex := Info['Value'];
-end;
-
-procedure TComponentGetComponentIndexMethod.Execute(var ExternalObject
-  : TObject);
-begin
-  ValidateExternalObject(ExternalObject, TComponent);
-  Info.Result := TComponent(ExternalObject).ComponentIndex;
-end;
-
-procedure TComponentGetComponentCountMethod.Execute(var ExternalObject
-  : TObject);
-begin
-  ValidateExternalObject(ExternalObject, TComponent);
-  Info.Result := TComponent(ExternalObject).ComponentCount;
-end;
-
-procedure TComponentGetComponentMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TComponent);
-  Info.Result := Info.RegisterExternalObject(TComponent(ExternalObject)
-    .Components[Info['Index']], False, False);
-end;
-
-procedure TComponentFindComponentMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TComponent);
-  Info.Result := Info.RegisterExternalObject(TComponent(ExternalObject)
-    .FindComponent(Info['AName']), False, False);
-end;
-
-procedure TComponentFreeNotificationMethod.Execute(var ExternalObject: TObject);
-var
-  AComponent: TComponent;
-begin
-  ValidateExternalObject(ExternalObject, TComponent);
-  AComponent := TComponent(Info.GetExternalObjForVar('AComponent'));
-  if Assigned(AComponent) then
-    TComponent(ExternalObject).FreeNotification(AComponent);
-end;
-
-procedure TComponentRemoveFreeNotificationMethod.Execute(var ExternalObject
-  : TObject);
-var
-  AComponent: TComponent;
-begin
-  ValidateExternalObject(ExternalObject, TComponent);
-  AComponent := TComponent(Info.GetExternalObjForVar('AComponent'));
-  if Assigned(AComponent) then
-    TComponent(ExternalObject).RemoveFreeNotification(AComponent);
-end;
-
-procedure TComponentGetParentComponentMethod.Execute(var ExternalObject
-  : TObject);
-begin
-  ValidateExternalObject(ExternalObject, TComponent);
-  Info.Result := Info.RegisterExternalObject(TComponent(ExternalObject)
-    .GetParentComponent, False, False);
-end;
-
-procedure TComponentGetNamePathMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TComponent);
-  Info.Result := TComponent(ExternalObject).GetNamePath;
-end;
-
-procedure TComponentHasParentMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TComponent);
-  Info.Result := TComponent(ExternalObject).HasParent;
-end;
-
-
-// ----------
-// ---------- Global procedures/functions ----------
-// ----------
-
-procedure Register;
-begin
-  RegisterComponents('GLScene DWS2', [Tdws2ClassesUnit]);
-end;
-
-
-// ----------
-// ---------- TdwsClassesUnit ----------
-// ----------
-
-constructor TdwsClassesUnit.Create(AOwner: TComponent);
-begin
-  inherited;
-  FUnitName := 'Classes';
-end;
-
-procedure TdwsClassesUnit.AddClassTPersistent(SymbolTable: TSymbolTable);
-var
-  ClassSym: TClassSymbol;
-begin
-  ClassSym := TClassSymbol(AddClassSymbol(SymbolTable, 'TPersistent',
-    'TObject'));
-
-  if not Assigned(ClassSym.Members.FindLocal('Assign')) then
-    TPersistentAssignMethod.Create(mkProcedure, [maVirtual], 0, 'Assign',
-      ['Source', 'TPersistent'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('GetNamePath')) then
-    TPersistentGetNamePathMethod.Create(mkFunction, [maVirtual], 0,
-      'GetNamePath', [], 'String', ClassSym, SymbolTable);
-end;
-
-procedure TdwsClassesUnit.AddClassTComponent(SymbolTable: TSymbolTable);
-var
-  ClassSym: TClassSymbol;
-begin
-  ClassSym := TClassSymbol(AddClassSymbol(SymbolTable, 'TComponent',
-    'TPersistent'));
-
-  // Methods
-  if not Assigned(ClassSym.Members.FindLocal('Create')) then
-    TComponentCreateMethod.Create(mkConstructor, [maVirtual], 0, 'Create',
-      ['AOwner', 'TComponent'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('SetTag')) then
-    TComponentSetTagMethod.Create(mkProcedure, [], 0, 'SetTag',
-      ['Value', 'Integer'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('GetTag')) then
-    TComponentGetTagMethod.Create(mkFunction, [], 0, 'GetTag', [], 'Integer',
-      ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('SetName')) then
-    TComponentSetNameMethod.Create(mkProcedure, [], 0, 'SetName',
-      ['Value', 'String'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('GetName')) then
-    TComponentGetNameMethod.Create(mkFunction, [], 0, 'GetName', [], 'String',
-      ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('GetOwner')) then
-    TComponentGetOwnerMethod.Create(mkFunction, [], 0, 'GetOwner', [],
-      'TComponent', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('SetComponentIndex')) then
-    TComponentSetComponentIndexMethod.Create(mkProcedure, [], 0,
-      'SetComponentIndex', ['Value', 'Integer'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('GetComponentIndex')) then
-    TComponentGetComponentIndexMethod.Create(mkFunction, [], 0,
-      'GetComponentIndex', [], 'Integer', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('GetComponentCount')) then
-    TComponentGetComponentCountMethod.Create(mkFunction, [], 0,
-      'GetComponentCount', [], 'Integer', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('GetComponent')) then
-    TComponentGetComponentMethod.Create(mkFunction, [], 0, 'GetComponent',
-      ['Index', 'Integer'], 'TComponent', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('FindComponent')) then
-    TComponentFindComponentMethod.Create(mkFunction, [], 0, 'FindComponent',
-      ['AName', 'String'], 'TComponent', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('FreeNotification')) then
-    TComponentFreeNotificationMethod.Create(mkProcedure, [], 0,
-      'FreeNotification', ['AComponent', 'TComponent'], '', ClassSym,
-      SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('RemoveFreeNotification')) then
-    TComponentRemoveFreeNotificationMethod.Create(mkProcedure, [], 0,
-      'RemoveFreeNotification', ['AComponent', 'TComponent'], '', ClassSym,
-      SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('GetParentComponent')) then
-    TComponentGetParentComponentMethod.Create(mkFunction, [maVirtual], 0,
-      'GetParentComponent', [], 'TComponent', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('GetNamePath')) then
-    TComponentGetNamePathMethod.Create(mkFunction, [maOverride], 0,
-      'GetNamePath', [], 'String', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('HasParent')) then
-    TComponentHasParentMethod.Create(mkFunction, [maVirtual], 0, 'HasParent',
-      [], 'Boolean', ClassSym, SymbolTable);
-
-  // Properties
-  AddPropertyToClass('Tag', 'Integer', 'GetTag', 'SetTag', '', False, ClassSym,
-    SymbolTable);
-  AddPropertyToClass('Name', 'String', 'GetName', 'SetName', '', False,
-    ClassSym, SymbolTable);
-  AddPropertyToClass('Owner', 'TComponent', 'GetOwner', '', '', False, ClassSym,
-    SymbolTable);
-  AddPropertyToClass('ComponentIndex', 'Integer', 'GetComponentIndex',
-    'SetComponentIndex', '', False, ClassSym, SymbolTable);
-  AddPropertyToClass('Components', 'TComponent', 'GetComponent', 'SetComponent',
-    'Integer', True, ClassSym, SymbolTable);
-end;
-
-procedure TdwsClassesUnit.AddUnitSymbols(SymbolTable: TSymbolTable);
-begin
-  // Forward class declaration
-  AddForwardDeclaration('TPersistent', SymbolTable);
-  AddForwardDeclaration('TComponent', SymbolTable);
-
-  // Class types
-  AddClassTPersistent(SymbolTable);
-  AddClassTComponent(SymbolTable);
-end;
-
-end.
+//
+// This unit is part of the GLScene Engine, http://glscene.org
+//
+
+unit GLS.dwsClasses;
+
+(* DelphiWebScript symbol creation for base Delphi classes. *)
+
+interface
+
+uses
+  System.Classes,
+  System.SysUtils,
+
+  DWS.Exprs,
+  DWS.Symbols,
+  DWS.Comp,
+  DWS.CompStrings,
+  DWS.Stack,
+  DWS.Functions,
+  DWS.HelperFunc;
+
+type
+  TdwsClassesUnit = class(TdwsUnitComponent)
+  private
+    procedure AddClassTPersistent(SymbolTable: TSymbolTable);
+    procedure AddClassTComponent(SymbolTable: TSymbolTable);
+  protected
+    procedure AddUnitSymbols(SymbolTable: TSymbolTable); override;
+  public
+    constructor Create(AOwner: TComponent); override;
+  end;
+
+procedure Register;
+
+// ===============================================================
+implementation
+// ===============================================================
+
+// ----------
+// ---------- Internal class method class declarations ----------
+// ----------
+
+type
+  TPersistentAssignMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TPersistentGetNamePathMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TComponentCreateMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TComponentSetTagMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TComponentGetTagMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TComponentSetNameMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TComponentGetNameMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TComponentGetOwnerMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TComponentSetComponentIndexMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TComponentGetComponentIndexMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TComponentGetComponentCountMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TComponentGetComponentMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TComponentFindComponentMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TComponentFreeNotificationMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TComponentRemoveFreeNotificationMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TComponentGetParentComponentMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TComponentGetNamePathMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TComponentHasParentMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+
+// ----------
+// ---------- Internal class method execute procedures ----------
+// ----------
+
+procedure TPersistentAssignMethod.Execute(var ExternalObject: TObject);
+var
+  Source: TObject;
+begin
+  ValidateExternalObject(ExternalObject, TPersistent);
+  Source := Info.GetExternalObjForVar('Source');
+  if not Assigned(Source) then
+    raise Exception.Create('Source parameter is unassigned.');
+  if not(Source is TPersistent) then
+    Exception.Create('Source parameter is not inheriting from TPersistent.');
+  TPersistent(ExternalObject).Assign(TPersistent(Source));
+end;
+
+procedure TPersistentGetNamePathMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TPersistent);
+  Info.Result.Value := TPersistent(ExternalObject).GetNamePath;
+end;
+
+procedure TComponentCreateMethod.Execute(var ExternalObject: TObject);
+var
+  AOwner: TComponent;
+begin
+  AOwner := TComponent(Info.GetExternalObjForVar('AOwner'));
+  ExternalObject := TComponent.Create(AOwner);
+end;
+
+procedure TComponentSetTagMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TComponent);
+  TComponent(ExternalObject).Tag := Info['Value'];
+end;
+
+procedure TComponentGetTagMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TComponent);
+  Info.Result := TComponent(ExternalObject).Tag;
+end;
+
+procedure TComponentSetNameMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TComponent);
+  TComponent(ExternalObject).Name := Info['Value'];
+end;
+
+procedure TComponentGetNameMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TComponent);
+  Info.Result := TComponent(ExternalObject).Name;
+end;
+
+procedure TComponentGetOwnerMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TComponent);
+  Info.Result := Info.RegisterExternalObject(TComponent(ExternalObject).Owner,
+    False, False);
+end;
+
+procedure TComponentSetComponentIndexMethod.Execute(var ExternalObject
+  : TObject);
+begin
+  ValidateExternalObject(ExternalObject, TComponent);
+  TComponent(ExternalObject).ComponentIndex := Info['Value'];
+end;
+
+procedure TComponentGetComponentIndexMethod.Execute(var ExternalObject
+  : TObject);
+begin
+  ValidateExternalObject(ExternalObject, TComponent);
+  Info.Result := TComponent(ExternalObject).ComponentIndex;
+end;
+
+procedure TComponentGetComponentCountMethod.Execute(var ExternalObject
+  : TObject);
+begin
+  ValidateExternalObject(ExternalObject, TComponent);
+  Info.Result := TComponent(ExternalObject).ComponentCount;
+end;
+
+procedure TComponentGetComponentMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TComponent);
+  Info.Result := Info.RegisterExternalObject(TComponent(ExternalObject)
+    .Components[Info['Index']], False, False);
+end;
+
+procedure TComponentFindComponentMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TComponent);
+  Info.Result := Info.RegisterExternalObject(TComponent(ExternalObject)
+    .FindComponent(Info['AName']), False, False);
+end;
+
+procedure TComponentFreeNotificationMethod.Execute(var ExternalObject: TObject);
+var
+  AComponent: TComponent;
+begin
+  ValidateExternalObject(ExternalObject, TComponent);
+  AComponent := TComponent(Info.GetExternalObjForVar('AComponent'));
+  if Assigned(AComponent) then
+    TComponent(ExternalObject).FreeNotification(AComponent);
+end;
+
+procedure TComponentRemoveFreeNotificationMethod.Execute(var ExternalObject
+  : TObject);
+var
+  AComponent: TComponent;
+begin
+  ValidateExternalObject(ExternalObject, TComponent);
+  AComponent := TComponent(Info.GetExternalObjForVar('AComponent'));
+  if Assigned(AComponent) then
+    TComponent(ExternalObject).RemoveFreeNotification(AComponent);
+end;
+
+procedure TComponentGetParentComponentMethod.Execute(var ExternalObject
+  : TObject);
+begin
+  ValidateExternalObject(ExternalObject, TComponent);
+  Info.Result := Info.RegisterExternalObject(TComponent(ExternalObject)
+    .GetParentComponent, False, False);
+end;
+
+procedure TComponentGetNamePathMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TComponent);
+  Info.Result := TComponent(ExternalObject).GetNamePath;
+end;
+
+procedure TComponentHasParentMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TComponent);
+  Info.Result := TComponent(ExternalObject).HasParent;
+end;
+
+
+// ----------
+// ---------- Global procedures/functions ----------
+// ----------
+
+procedure Register;
+begin
+  RegisterComponents('GLScene DWS2', [Tdws2ClassesUnit]);
+end;
+
+
+// ----------
+// ---------- TdwsClassesUnit ----------
+// ----------
+
+constructor TdwsClassesUnit.Create(AOwner: TComponent);
+begin
+  inherited;
+  FUnitName := 'Classes';
+end;
+
+procedure TdwsClassesUnit.AddClassTPersistent(SymbolTable: TSymbolTable);
+var
+  ClassSym: TClassSymbol;
+begin
+  ClassSym := TClassSymbol(AddClassSymbol(SymbolTable, 'TPersistent',
+    'TObject'));
+
+  if not Assigned(ClassSym.Members.FindLocal('Assign')) then
+    TPersistentAssignMethod.Create(mkProcedure, [maVirtual], 0, 'Assign',
+      ['Source', 'TPersistent'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('GetNamePath')) then
+    TPersistentGetNamePathMethod.Create(mkFunction, [maVirtual], 0,
+      'GetNamePath', [], 'String', ClassSym, SymbolTable);
+end;
+
+procedure TdwsClassesUnit.AddClassTComponent(SymbolTable: TSymbolTable);
+var
+  ClassSym: TClassSymbol;
+begin
+  ClassSym := TClassSymbol(AddClassSymbol(SymbolTable, 'TComponent',
+    'TPersistent'));
+
+  // Methods
+  if not Assigned(ClassSym.Members.FindLocal('Create')) then
+    TComponentCreateMethod.Create(mkConstructor, [maVirtual], 0, 'Create',
+      ['AOwner', 'TComponent'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('SetTag')) then
+    TComponentSetTagMethod.Create(mkProcedure, [], 0, 'SetTag',
+      ['Value', 'Integer'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('GetTag')) then
+    TComponentGetTagMethod.Create(mkFunction, [], 0, 'GetTag', [], 'Integer',
+      ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('SetName')) then
+    TComponentSetNameMethod.Create(mkProcedure, [], 0, 'SetName',
+      ['Value', 'String'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('GetName')) then
+    TComponentGetNameMethod.Create(mkFunction, [], 0, 'GetName', [], 'String',
+      ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('GetOwner')) then
+    TComponentGetOwnerMethod.Create(mkFunction, [], 0, 'GetOwner', [],
+      'TComponent', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('SetComponentIndex')) then
+    TComponentSetComponentIndexMethod.Create(mkProcedure, [], 0,
+      'SetComponentIndex', ['Value', 'Integer'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('GetComponentIndex')) then
+    TComponentGetComponentIndexMethod.Create(mkFunction, [], 0,
+      'GetComponentIndex', [], 'Integer', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('GetComponentCount')) then
+    TComponentGetComponentCountMethod.Create(mkFunction, [], 0,
+      'GetComponentCount', [], 'Integer', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('GetComponent')) then
+    TComponentGetComponentMethod.Create(mkFunction, [], 0, 'GetComponent',
+      ['Index', 'Integer'], 'TComponent', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('FindComponent')) then
+    TComponentFindComponentMethod.Create(mkFunction, [], 0, 'FindComponent',
+      ['AName', 'String'], 'TComponent', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('FreeNotification')) then
+    TComponentFreeNotificationMethod.Create(mkProcedure, [], 0,
+      'FreeNotification', ['AComponent', 'TComponent'], '', ClassSym,
+      SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('RemoveFreeNotification')) then
+    TComponentRemoveFreeNotificationMethod.Create(mkProcedure, [], 0,
+      'RemoveFreeNotification', ['AComponent', 'TComponent'], '', ClassSym,
+      SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('GetParentComponent')) then
+    TComponentGetParentComponentMethod.Create(mkFunction, [maVirtual], 0,
+      'GetParentComponent', [], 'TComponent', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('GetNamePath')) then
+    TComponentGetNamePathMethod.Create(mkFunction, [maOverride], 0,
+      'GetNamePath', [], 'String', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('HasParent')) then
+    TComponentHasParentMethod.Create(mkFunction, [maVirtual], 0, 'HasParent',
+      [], 'Boolean', ClassSym, SymbolTable);
+
+  // Properties
+  AddPropertyToClass('Tag', 'Integer', 'GetTag', 'SetTag', '', False, ClassSym,
+    SymbolTable);
+  AddPropertyToClass('Name', 'String', 'GetName', 'SetName', '', False,
+    ClassSym, SymbolTable);
+  AddPropertyToClass('Owner', 'TComponent', 'GetOwner', '', '', False, ClassSym,
+    SymbolTable);
+  AddPropertyToClass('ComponentIndex', 'Integer', 'GetComponentIndex',
+    'SetComponentIndex', '', False, ClassSym, SymbolTable);
+  AddPropertyToClass('Components', 'TComponent', 'GetComponent', 'SetComponent',
+    'Integer', True, ClassSym, SymbolTable);
+end;
+
+procedure TdwsClassesUnit.AddUnitSymbols(SymbolTable: TSymbolTable);
+begin
+  // Forward class declaration
+  AddForwardDeclaration('TPersistent', SymbolTable);
+  AddForwardDeclaration('TComponent', SymbolTable);
+
+  // Class types
+  AddClassTPersistent(SymbolTable);
+  AddClassTComponent(SymbolTable);
+end;
+
+end.

+ 131 - 131
Source/DWS.HelperFunc.pas → Source/GLS.dwsHelperFunc.pas

@@ -1,131 +1,131 @@
-//
-// This unit is part of the GLScene Engine, http://glscene.org
-//
-
-unit DWS.HelperFunc;
-
-(*
-  Helper functions for creating class, properties and
-  method symbols in DelphiWebScript
-*)
-
-interface
-
-uses
-  System.Classes,
-  System.SysUtils,
-  DWS.Symbols,
-  DWS.CompStrings;
-
-procedure AddForwardDeclaration(ClassName: String; SymbolTable: TSymbolTable);
-function AddClassSymbol(SymbolTable: TSymbolTable;
-  Name, Ancestor: String): TSymbol;
-procedure AddPropertyToClass(Name, DataType, ReadAccess, WriteAccess,
-  IndexDataType: String; IsDefault: Boolean; ClassSym: TClassSymbol;
-  Table: TSymbolTable);
-procedure ValidateExternalObject(ExtObject: TObject; ObjClass: TClass);
-
-// -------------------------------------------------------------------
-implementation
-
-// -------------------------------------------------------------------
-
-procedure AddForwardDeclaration(ClassName: String; SymbolTable: TSymbolTable);
-var
-  Sym: TSymbol;
-begin
-  Sym := SymbolTable.FindSymbol(ClassName);
-  if Assigned(Sym) then
-    exit;
-  Sym := TClassSymbol.Create(ClassName);
-  TClassSymbol(Sym).IsForward := True;
-  SymbolTable.AddSymbol(Sym);
-end;
-
-function AddClassSymbol(SymbolTable: TSymbolTable;
-  Name, Ancestor: String): TSymbol;
-var
-  ancestorSym: TClassSymbol;
-begin
-  Result := SymbolTable.FindSymbol(Name);
-  try
-    if Assigned(Result) then
-    begin
-      if Result is TClassSymbol then
-      begin
-        if not(TClassSymbol(Result).IsForward) then
-        begin
-          exit;
-        end;
-      end
-      else
-      begin
-        Result := nil;
-        exit;
-      end;
-    end;
-
-    try
-      if not Assigned(Result) then
-        Result := TClassSymbol.Create(Name);
-      ancestorSym := TClassSymbol(SymbolTable.FindSymbol(Ancestor));
-      if ancestorSym = nil then
-        raise Exception.CreateFmt(UNT_SuperClassUnknwon, [Ancestor]);
-      TClassSymbol(Result).InheritFrom(ancestorSym);
-    except
-      if not TClassSymbol(Result).IsForward then
-        FreeAndNil(Result);
-      raise;
-    end;
-
-    if TClassSymbol(Result).IsForward then
-      TClassSymbol(Result).IsForward := False
-    else
-      SymbolTable.AddSymbol(Result);
-
-  finally
-    if not Assigned(Result) then
-      raise Exception.CreateFmt('Unable to add %s to the symbol table', [Name]);
-  end;
-end;
-
-procedure AddPropertyToClass(Name, DataType, ReadAccess, WriteAccess,
-  IndexDataType: String; IsDefault: Boolean; ClassSym: TClassSymbol;
-  Table: TSymbolTable);
-var
-  Sym: TSymbol;
-  ParamSym: TParamSymbol;
-  PropertySym: TPropertySymbol;
-begin
-  if Assigned(ClassSym.Members.FindLocal(Name)) then
-    exit;
-  Sym := Table.FindSymbol(DataType);
-  PropertySym := TPropertySymbol.Create(Name, Sym);
-  if ReadAccess <> '' then
-    PropertySym.ReadSym := ClassSym.Members.FindLocal(ReadAccess);
-  if WriteAccess <> '' then
-    PropertySym.WriteSym := ClassSym.Members.FindLocal(WriteAccess);
-  if IndexDataType <> '' then
-  begin
-    Sym := Table.FindSymbol(IndexDataType);
-    ParamSym := TParamSymbol.Create('Index', Sym);
-    PropertySym.ArrayIndices.AddSymbol(ParamSym);
-  end;
-  ClassSym.AddProperty(PropertySym);
-  if IsDefault then
-    ClassSym.DefaultProperty := PropertySym;
-end;
-
-procedure ValidateExternalObject(ExtObject: TObject; ObjClass: TClass);
-var
-  Valid: Boolean;
-begin
-  if Assigned(ExtObject) then
-    Valid := (ExtObject is ObjClass)
-  else
-    Valid := False;
-  if not Valid then
-    raise Exception.Create('Invalid external object.');
-end;
-
-end.
+//
+// This unit is part of the GLScene Engine, http://glscene.org
+//
+
+unit GLS.dwsHelperFunc;
+
+(*
+  Helper functions for creating class, properties and
+  method symbols in DelphiWebScript
+*)
+
+interface
+
+uses
+  System.Classes,
+  System.SysUtils,
+  DWS.Symbols,
+  DWS.CompStrings;
+
+procedure AddForwardDeclaration(ClassName: String; SymbolTable: TSymbolTable);
+function AddClassSymbol(SymbolTable: TSymbolTable;
+  Name, Ancestor: String): TSymbol;
+procedure AddPropertyToClass(Name, DataType, ReadAccess, WriteAccess,
+  IndexDataType: String; IsDefault: Boolean; ClassSym: TClassSymbol;
+  Table: TSymbolTable);
+procedure ValidateExternalObject(ExtObject: TObject; ObjClass: TClass);
+
+// -------------------------------------------------------------------
+implementation
+
+// -------------------------------------------------------------------
+
+procedure AddForwardDeclaration(ClassName: String; SymbolTable: TSymbolTable);
+var
+  Sym: TSymbol;
+begin
+  Sym := SymbolTable.FindSymbol(ClassName);
+  if Assigned(Sym) then
+    exit;
+  Sym := TClassSymbol.Create(ClassName);
+  TClassSymbol(Sym).IsForward := True;
+  SymbolTable.AddSymbol(Sym);
+end;
+
+function AddClassSymbol(SymbolTable: TSymbolTable;
+  Name, Ancestor: String): TSymbol;
+var
+  ancestorSym: TClassSymbol;
+begin
+  Result := SymbolTable.FindSymbol(Name);
+  try
+    if Assigned(Result) then
+    begin
+      if Result is TClassSymbol then
+      begin
+        if not(TClassSymbol(Result).IsForward) then
+        begin
+          exit;
+        end;
+      end
+      else
+      begin
+        Result := nil;
+        exit;
+      end;
+    end;
+
+    try
+      if not Assigned(Result) then
+        Result := TClassSymbol.Create(Name);
+      ancestorSym := TClassSymbol(SymbolTable.FindSymbol(Ancestor));
+      if ancestorSym = nil then
+        raise Exception.CreateFmt(UNT_SuperClassUnknwon, [Ancestor]);
+      TClassSymbol(Result).InheritFrom(ancestorSym);
+    except
+      if not TClassSymbol(Result).IsForward then
+        FreeAndNil(Result);
+      raise;
+    end;
+
+    if TClassSymbol(Result).IsForward then
+      TClassSymbol(Result).IsForward := False
+    else
+      SymbolTable.AddSymbol(Result);
+
+  finally
+    if not Assigned(Result) then
+      raise Exception.CreateFmt('Unable to add %s to the symbol table', [Name]);
+  end;
+end;
+
+procedure AddPropertyToClass(Name, DataType, ReadAccess, WriteAccess,
+  IndexDataType: String; IsDefault: Boolean; ClassSym: TClassSymbol;
+  Table: TSymbolTable);
+var
+  Sym: TSymbol;
+  ParamSym: TParamSymbol;
+  PropertySym: TPropertySymbol;
+begin
+  if Assigned(ClassSym.Members.FindLocal(Name)) then
+    exit;
+  Sym := Table.FindSymbol(DataType);
+  PropertySym := TPropertySymbol.Create(Name, Sym);
+  if ReadAccess <> '' then
+    PropertySym.ReadSym := ClassSym.Members.FindLocal(ReadAccess);
+  if WriteAccess <> '' then
+    PropertySym.WriteSym := ClassSym.Members.FindLocal(WriteAccess);
+  if IndexDataType <> '' then
+  begin
+    Sym := Table.FindSymbol(IndexDataType);
+    ParamSym := TParamSymbol.Create('Index', Sym);
+    PropertySym.ArrayIndices.AddSymbol(ParamSym);
+  end;
+  ClassSym.AddProperty(PropertySym);
+  if IsDefault then
+    ClassSym.DefaultProperty := PropertySym;
+end;
+
+procedure ValidateExternalObject(ExtObject: TObject; ObjClass: TClass);
+var
+  Valid: Boolean;
+begin
+  if Assigned(ExtObject) then
+    Valid := (ExtObject is ObjClass)
+  else
+    Valid := False;
+  if not Valid then
+    raise Exception.Create('Invalid external object.');
+end;
+
+end.

+ 286 - 285
Source/GLS.DWSObjects.pas → Source/GLS.dwsObjects.pas

@@ -1,285 +1,286 @@
-//
-// This unit is part of the GLScene Engine, http://glscene.org
-//
-
-unit GLS.DWSObjects;
-
-(*
-  Base classes and logic for DelphiWebScript enabled
-  objects in GLScene
-*)
-
-interface
-
-uses
-  System.Classes,
-  System.SysUtils,
-
-  GLScene,
-  XCollection,
-  GLScriptDWS2,
-  GLBaseClasses,
-  GLManager,
-  DWS.Comp,
-  DWS.Exprs,
-  DWS.Symbols;
-
-type
-  (* A DelphiWebScript enabled behaviour. This behaviour also calls
-    on the OnProgress and OnBeginProgram procedures in the script if
-    they are found. Once compiled and executed the program remains
-    active until killed, deactivated or the script is invalidated. *)
-  TGLDWSActiveBehaviour = class(TGLBehaviour)
-  private
-    FActive: Boolean;
-    FScript: TStringList;
-    FDWSProgram: TProgram;
-    FCompiler: TGLDelphiWebScriptII;
-    FCompilerName: String;
-    procedure SetActive(const Value: Boolean);
-    procedure SetScript(const Value: TStringList);
-    procedure SetCompiler(const Value: TGLDelphiWebScript);
-    procedure CompileProgram;
-    procedure BeginProgram;
-    procedure EndProgram;
-    procedure KillProgram;
-  protected
-    procedure WriteToFiler(writer: TWriter); override;
-    procedure ReadFromFiler(reader: TReader); override;
-    procedure Loaded; override;
-  public
-    constructor Create(AOwner: TGLXCollection); override;
-    destructor Destroy; override;
-    class function FriendlyName: String; override;
-    procedure DoProgress(const ProgressTimes: TProgressTimes); override;
-    procedure InvalidateScript;
-    property DWSProgram: TProgram read FDWSProgram;
-  published
-    property Active: Boolean read FActive write SetActive;
-    property Script: TStringList read FScript write SetScript;
-    property Compiler: TGLDelphiWebScriptII read FCompiler write SetCompiler;
-  end;
-
-procedure Register;
-
-// --------------------------------------------------
-implementation
-// --------------------------------------------------
-
-// ----------
-// ---------- Miscellaneous ----------
-// ----------
-
-procedure Register;
-begin
-  RegisterClasses([TGLDWSActiveBehaviour]);
-end;
-
-
-// ----------
-// ---------- TGLDWSActiveBehaviour ----------
-// ----------
-
-constructor TGLDWSActiveBehaviour.Create(AOwner: TGLXCollection);
-begin
-  inherited;
-  FScript := TStringList.Create;
-end;
-
-destructor TGLDWSActiveBehaviour.Destroy;
-begin
-  KillProgram;
-  FScript.Free;
-  inherited;
-end;
-
-class function TGLDWSActiveBehaviour.FriendlyName: String;
-begin
-  Result := 'DWS Active Script';
-end;
-
-procedure TGLDWSActiveBehaviour.DoProgress(const ProgressTimes: TProgressTimes);
-var
-  Symbol: TSymbol;
-begin
-  inherited;
-  if Assigned(FDWSProgram) then
-  begin
-    if FDWSProgram.ProgramState = psRunning then
-    begin
-      Symbol := DWSProgram.Table.FindSymbol('OnProgress');
-      if Assigned(Symbol) then
-        if Symbol is TFuncSymbol then
-          DWSProgram.Info.Func['OnProgress']
-            .Call([ProgressTimes.newTime, ProgressTimes.deltaTime]);
-    end;
-  end;
-end;
-
-procedure TGLDWSActiveBehaviour.Loaded;
-var
-  temp: TComponent;
-begin
-  inherited;
-  if FCompilerName <> '' then
-  begin
-    temp := FindManager(TGLDelphiWebScript, FCompilerName);
-    if Assigned(temp) then
-      Compiler := TGLDelphiWebScript(temp);
-    FCompilerName := '';
-    CompileProgram;
-    if Active then
-      BeginProgram;
-  end;
-end;
-
-procedure TGLDWSActiveBehaviour.ReadFromFiler(reader: TReader);
-begin
-  inherited;
-  with reader do
-  begin
-    Assert(ReadInteger = 0); // Archive version
-    Active := ReadBoolean;
-    FCompilerName := ReadString;
-    Script.Text := ReadString;
-  end;
-end;
-
-procedure TGLDWSActiveBehaviour.WriteToFiler(writer: TWriter);
-begin
-  inherited;
-  with writer do
-  begin
-    WriteInteger(0); // Archive version
-    WriteBoolean(FActive);
-    if Assigned(FCompiler) then
-      WriteString(FCompiler.GetNamePath)
-    else
-      WriteString('');
-    WriteString(Script.Text);
-  end;
-end;
-
-procedure TGLDWSActiveBehaviour.CompileProgram;
-begin
-  if Assigned(Compiler) then
-  begin
-    KillProgram;
-    FDWS2Program := Compiler.Compile(Script.Text);
-    if Active then
-      BeginProgram;
-  end;
-end;
-
-procedure TGLDWSActiveBehaviour.BeginProgram;
-var
-  Symbol: TSymbol;
-  ObjectID: Variant;
-  Obj: TGLBaseSceneObject;
-begin
-  if Assigned(DWSProgram) then
-  begin
-    if DWSProgram.ProgramState = psReadyToRun then
-    begin
-      DWSProgram.BeginProgram;
-      if FDWSProgram.ProgramState = psRunning then
-      begin
-        Symbol := DWSProgram.Table.FindSymbol('OnBeginProgram');
-        if Assigned(Symbol) then
-          if Symbol is TFuncSymbol then
-          begin
-            Obj := OwnerBaseSceneObject;
-            if Assigned(Obj) then
-            begin
-              ObjectID := DWSProgram.Info.RegisterExternalObject(Obj,
-                False, False);
-              DWSProgram.Info.Func['OnBeginProgram'].Call([ObjectID]);
-            end;
-          end;
-      end;
-    end;
-  end;
-end;
-
-procedure TGLDWSActiveBehaviour.EndProgram;
-begin
-  if Assigned(DWSProgram) then
-  begin
-    if DWSProgram.ProgramState = psRunning then
-      DWSProgram.EndProgram;
-  end;
-end;
-
-procedure TGLDWSActiveBehaviour.KillProgram;
-begin
-  if Assigned(DWSProgram) then
-  begin
-    EndProgram;
-    FreeAndNil(FDWSProgram);
-  end;
-end;
-
-procedure TGLDWSActiveBehaviour.InvalidateScript;
-begin
-  KillProgram;
-  CompileProgram;
-end;
-
-procedure TGLDWSActiveBehaviour.SetActive(const Value: Boolean);
-begin
-  if Value <> FActive then
-  begin
-    EndProgram;
-    FActive := Value;
-    if Active then
-      BeginProgram;
-  end;
-end;
-
-procedure TGLDWSActiveBehaviour.SetScript(const Value: TStringList);
-begin
-  if Assigned(Value) then
-  begin
-    KillProgram;
-    FScript.Assign(Value);
-    if Assigned(Compiler) then
-    begin
-      CompileProgram;
-      if Active then
-        BeginProgram;
-    end;
-  end;
-end;
-
-procedure TGLDWSActiveBehaviour.SetCompiler(const Value: TGLDelphiWebScriptII);
-begin
-  if Value <> FCompiler then
-  begin
-    if Assigned(FCompiler) then
-      KillProgram;
-    FCompiler := Value;
-    if Assigned(FCompiler) then
-    begin
-      RegisterManager(FCompiler);
-      CompileProgram;
-      if Active then
-        BeginProgram;
-    end;
-  end;
-end;
-
-// --------------------------------------------------
-initialization
-
-// --------------------------------------------------
-
-RegisterXCollectionItemClass(TGLDWSActiveBehaviour);
-
-// --------------------------------------------------
-finalization
-
-// --------------------------------------------------
-
-UnregisterXCollectionItemClass(TGLDWSActiveBehaviour);
-
-end.
+//
+// This unit is part of the GLScene Engine, http://glscene.org
+//
+
+unit GLS.dwsObjects;
+
+(*
+  Base classes and logic for DelphiWebScript enabled
+  objects in GLScene
+*)
+
+interface
+
+uses
+  System.Classes,
+  System.SysUtils,
+
+  GLScene,
+  XCollection,
+  GLBaseClasses,
+  GLManager,
+  
+  GLS.DWSScript,
+  DWS.Comp,
+  DWS.Exprs,
+  DWS.Symbols;
+
+type
+  (* A DelphiWebScript enabled behaviour. This behaviour also calls
+    on the OnProgress and OnBeginProgram procedures in the script if
+    they are found. Once compiled and executed the program remains
+    active until killed, deactivated or the script is invalidated. *)
+  TGLDWSActiveBehaviour = class(TGLBehaviour)
+  private
+    FActive: Boolean;
+    FScript: TStringList;
+    FDWSProgram: TProgram;
+    FCompiler: TGLDelphiWebScriptII;
+    FCompilerName: String;
+    procedure SetActive(const Value: Boolean);
+    procedure SetScript(const Value: TStringList);
+    procedure SetCompiler(const Value: TGLDelphiWebScript);
+    procedure CompileProgram;
+    procedure BeginProgram;
+    procedure EndProgram;
+    procedure KillProgram;
+  protected
+    procedure WriteToFiler(writer: TWriter); override;
+    procedure ReadFromFiler(reader: TReader); override;
+    procedure Loaded; override;
+  public
+    constructor Create(AOwner: TGLXCollection); override;
+    destructor Destroy; override;
+    class function FriendlyName: String; override;
+    procedure DoProgress(const ProgressTimes: TProgressTimes); override;
+    procedure InvalidateScript;
+    property DWSProgram: TProgram read FDWSProgram;
+  published
+    property Active: Boolean read FActive write SetActive;
+    property Script: TStringList read FScript write SetScript;
+    property Compiler: TGLDelphiWebScriptII read FCompiler write SetCompiler;
+  end;
+
+procedure Register;
+
+// --------------------------------------------------
+implementation
+// --------------------------------------------------
+
+// ----------
+// ---------- Miscellaneous ----------
+// ----------
+
+procedure Register;
+begin
+  RegisterClasses([TGLDWSActiveBehaviour]);
+end;
+
+
+// ----------
+// ---------- TGLDWSActiveBehaviour ----------
+// ----------
+
+constructor TGLDWSActiveBehaviour.Create(AOwner: TGLXCollection);
+begin
+  inherited;
+  FScript := TStringList.Create;
+end;
+
+destructor TGLDWSActiveBehaviour.Destroy;
+begin
+  KillProgram;
+  FScript.Free;
+  inherited;
+end;
+
+class function TGLDWSActiveBehaviour.FriendlyName: String;
+begin
+  Result := 'DWS Active Script';
+end;
+
+procedure TGLDWSActiveBehaviour.DoProgress(const ProgressTimes: TProgressTimes);
+var
+  Symbol: TSymbol;
+begin
+  inherited;
+  if Assigned(FDWSProgram) then
+  begin
+    if FDWSProgram.ProgramState = psRunning then
+    begin
+      Symbol := DWSProgram.Table.FindSymbol('OnProgress');
+      if Assigned(Symbol) then
+        if Symbol is TFuncSymbol then
+          DWSProgram.Info.Func['OnProgress']
+            .Call([ProgressTimes.newTime, ProgressTimes.deltaTime]);
+    end;
+  end;
+end;
+
+procedure TGLDWSActiveBehaviour.Loaded;
+var
+  temp: TComponent;
+begin
+  inherited;
+  if FCompilerName <> '' then
+  begin
+    temp := FindManager(TGLDelphiWebScript, FCompilerName);
+    if Assigned(temp) then
+      Compiler := TGLDelphiWebScript(temp);
+    FCompilerName := '';
+    CompileProgram;
+    if Active then
+      BeginProgram;
+  end;
+end;
+
+procedure TGLDWSActiveBehaviour.ReadFromFiler(reader: TReader);
+begin
+  inherited;
+  with reader do
+  begin
+    Assert(ReadInteger = 0); // Archive version
+    Active := ReadBoolean;
+    FCompilerName := ReadString;
+    Script.Text := ReadString;
+  end;
+end;
+
+procedure TGLDWSActiveBehaviour.WriteToFiler(writer: TWriter);
+begin
+  inherited;
+  with writer do
+  begin
+    WriteInteger(0); // Archive version
+    WriteBoolean(FActive);
+    if Assigned(FCompiler) then
+      WriteString(FCompiler.GetNamePath)
+    else
+      WriteString('');
+    WriteString(Script.Text);
+  end;
+end;
+
+procedure TGLDWSActiveBehaviour.CompileProgram;
+begin
+  if Assigned(Compiler) then
+  begin
+    KillProgram;
+    FDWS2Program := Compiler.Compile(Script.Text);
+    if Active then
+      BeginProgram;
+  end;
+end;
+
+procedure TGLDWSActiveBehaviour.BeginProgram;
+var
+  Symbol: TSymbol;
+  ObjectID: Variant;
+  Obj: TGLBaseSceneObject;
+begin
+  if Assigned(DWSProgram) then
+  begin
+    if DWSProgram.ProgramState = psReadyToRun then
+    begin
+      DWSProgram.BeginProgram;
+      if FDWSProgram.ProgramState = psRunning then
+      begin
+        Symbol := DWSProgram.Table.FindSymbol('OnBeginProgram');
+        if Assigned(Symbol) then
+          if Symbol is TFuncSymbol then
+          begin
+            Obj := OwnerBaseSceneObject;
+            if Assigned(Obj) then
+            begin
+              ObjectID := DWSProgram.Info.RegisterExternalObject(Obj,
+                False, False);
+              DWSProgram.Info.Func['OnBeginProgram'].Call([ObjectID]);
+            end;
+          end;
+      end;
+    end;
+  end;
+end;
+
+procedure TGLDWSActiveBehaviour.EndProgram;
+begin
+  if Assigned(DWSProgram) then
+  begin
+    if DWSProgram.ProgramState = psRunning then
+      DWSProgram.EndProgram;
+  end;
+end;
+
+procedure TGLDWSActiveBehaviour.KillProgram;
+begin
+  if Assigned(DWSProgram) then
+  begin
+    EndProgram;
+    FreeAndNil(FDWSProgram);
+  end;
+end;
+
+procedure TGLDWSActiveBehaviour.InvalidateScript;
+begin
+  KillProgram;
+  CompileProgram;
+end;
+
+procedure TGLDWSActiveBehaviour.SetActive(const Value: Boolean);
+begin
+  if Value <> FActive then
+  begin
+    EndProgram;
+    FActive := Value;
+    if Active then
+      BeginProgram;
+  end;
+end;
+
+procedure TGLDWSActiveBehaviour.SetScript(const Value: TStringList);
+begin
+  if Assigned(Value) then
+  begin
+    KillProgram;
+    FScript.Assign(Value);
+    if Assigned(Compiler) then
+    begin
+      CompileProgram;
+      if Active then
+        BeginProgram;
+    end;
+  end;
+end;
+
+procedure TGLDWSActiveBehaviour.SetCompiler(const Value: TGLDelphiWebScriptII);
+begin
+  if Value <> FCompiler then
+  begin
+    if Assigned(FCompiler) then
+      KillProgram;
+    FCompiler := Value;
+    if Assigned(FCompiler) then
+    begin
+      RegisterManager(FCompiler);
+      CompileProgram;
+      if Active then
+        BeginProgram;
+    end;
+  end;
+end;
+
+// --------------------------------------------------
+initialization
+
+// --------------------------------------------------
+
+RegisterXCollectionItemClass(TGLDWSActiveBehaviour);
+
+// --------------------------------------------------
+finalization
+
+// --------------------------------------------------
+
+UnregisterXCollectionItemClass(TGLDWSActiveBehaviour);
+
+end.

+ 2443 - 2443
Source/DWS.OpenGL.pas → Source/GLS.dwsOpenGL.pas

@@ -1,2443 +1,2443 @@
-//
-// This unit is part of the GLScene Engine, http://glscene.org
-//
-
-unit DWS.OpenGL;
-
-(*
-   DelphiWebScript symbol creation for OpenGL procedures and functions.
-   This unit is still under development.
-*)
-
-interface
-
-{$I GLScene.inc}
-
-uses
-  System.Classes,
-  System.Variants,
-  
-  GLS.OpenGLx,
-  GLContext,
-  GLVectorGeometry,
-  
-  DWS.Exprs,
-  DWS.Symbols,
-  DWS.Comp,
-  DWS.Functions;
-
-type
-  TdwsOpenGLUnit = class(TdwsUnitComponent)
-    protected
-      procedure AddUnitSymbols(SymbolTable: TSymbolTable); override;
-      procedure AddExtensionUnitSymbols(SymbolTable: TSymbolTable);
-    public
-      constructor Create(AOwner: TComponent); override;
-  end;
-
-const
-  TypCardinalID : TBaseTypeId = 10;
-  TypByteID     : TBaseTypeId = 11;
-
-
-procedure Register;
-
-//===========================================================
-implementation
-//===========================================================
-
-type
-  TGLPushAttrib = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLPopAttrib = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLPushClientAttrib = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLPopClientAttrib = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLEnable = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLDisable = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLEnableClientState = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLDisableClientState = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLMatrixMode = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLPushMatrix = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLPopMatrix = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLLoadIdentity = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLLoadMatrixf = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLTranslatef = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLRotatef = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLScalef = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLBegin = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLCullFace = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLShadeModel = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLFrontFace = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLPolygonMode = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLEnd = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLColor3f = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLColor4f = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLNormal3f = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLVertex3f = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLTexCoord1f = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLTexCoord2f = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLTexCoord3f = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLTexCoord4f = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLMultiTexCoord1f = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLMultiTexCoord2f = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLMultiTexCoord3f = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLMultiTexCoord4f = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLActiveTexture = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLClientActiveTexture = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLTexEnvf = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLTexEnvi = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLBlendFunc = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLDepthFunc = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLDepthMask = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLDepthRange = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLStencilFunc = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-  
-  TGLStencilMask = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-  
-  TGLStencilOp = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLLogicOp = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TGLLineWidth = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-
-procedure Register;
-begin
-  RegisterComponents('GLScene DWS', [TdwsOpenGLUnit]);
-end;
-
-function GetMatrixFromInfo(Info : IInfo) : TMatrix;
-var
-  i : Integer;
-begin
-  for i:=0 to 3 do
-    Result[i]:=VectorMake(Info.Element([i]).Element([0]).Value,
-                          Info.Element([i]).Element([1]).Value,
-                          Info.Element([i]).Element([2]).Value,
-                          Info.Element([i]).Element([3]).Value);
-end;
-
-
-// ----------
-// ---------- TdwsOpenGLUnit ----------
-// ----------
-
-procedure TdwsOpenGLUnit.AddUnitSymbols(SymbolTable: TSymbolTable);
-var
-  CardinalSymbol,
-  ByteSymbol : TSymbol;
-begin
-  CardinalSymbol:=SymbolTable.FindSymbol('Cardinal');
-  if not Assigned(CardinalSymbol) then 
-  begin
-    CardinalSymbol:=TBaseSymbol.Create('Cardinal', TypCardinalID, VarAsType(0, varLongWord));
-    SymbolTable.AddSymbol(CardinalSymbol);
-  end;
-
-  ByteSymbol:=SymbolTable.FindSymbol('Byte');
-  if not Assigned(ByteSymbol) then 
-  begin
-    ByteSymbol:=TBaseSymbol.Create('Byte', TypByteID, VarAsType(0, varByte));
-    SymbolTable.AddSymbol(ByteSymbol);
-  end;
-
-  // ---------- GL generic constants ----------
-
-  // errors
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NO_ERROR', CardinalSymbol, GL_NO_ERROR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INVALID_ENUM', CardinalSymbol, GL_INVALID_ENUM));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INVALID_VALUE', CardinalSymbol, GL_INVALID_VALUE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INVALID_OPERATION', CardinalSymbol, GL_INVALID_OPERATION));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STACK_OVERFLOW', CardinalSymbol, GL_STACK_OVERFLOW));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STACK_UNDERFLOW', CardinalSymbol, GL_STACK_UNDERFLOW));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OUT_OF_MEMORY', CardinalSymbol, GL_OUT_OF_MEMORY));
-
-  // attribute bits
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_BIT', CardinalSymbol, GL_CURRENT_BIT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POINT_BIT', CardinalSymbol, GL_POINT_BIT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINE_BIT', CardinalSymbol, GL_LINE_BIT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_BIT', CardinalSymbol, GL_POLYGON_BIT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_STIPPLE_BIT', CardinalSymbol, GL_POLYGON_STIPPLE_BIT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MODE_BIT', CardinalSymbol, GL_PIXEL_MODE_BIT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHTING_BIT', CardinalSymbol, GL_LIGHTING_BIT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_BIT', CardinalSymbol, GL_FOG_BIT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH_BUFFER_BIT', CardinalSymbol, GL_DEPTH_BUFFER_BIT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ACCUM_BUFFER_BIT', CardinalSymbol, GL_ACCUM_BUFFER_BIT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STENCIL_BUFFER_BIT', CardinalSymbol, GL_STENCIL_BUFFER_BIT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VIEWPORT_BIT', CardinalSymbol, GL_VIEWPORT_BIT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TRANSFORM_BIT', CardinalSymbol, GL_TRANSFORM_BIT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ENABLE_BIT', CardinalSymbol, GL_ENABLE_BIT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_BUFFER_BIT', CardinalSymbol, GL_COLOR_BUFFER_BIT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HINT_BIT', CardinalSymbol, GL_HINT_BIT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EVAL_BIT', CardinalSymbol, GL_EVAL_BIT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIST_BIT', CardinalSymbol, GL_LIST_BIT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_BIT', CardinalSymbol, GL_TEXTURE_BIT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SCISSOR_BIT', CardinalSymbol, GL_SCISSOR_BIT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALL_ATTRIB_BITS', CardinalSymbol, GL_ALL_ATTRIB_BITS));
-
-  // client attribute bits
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLIENT_PIXEL_STORE_BIT', CardinalSymbol, GL_CLIENT_PIXEL_STORE_BIT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLIENT_VERTEX_ARRAY_BIT', CardinalSymbol, GL_CLIENT_VERTEX_ARRAY_BIT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLIENT_ALL_ATTRIB_BITS', CardinalSymbol, GL_CLIENT_ALL_ATTRIB_BITS));
-
-  // boolean values
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FALSE', CardinalSymbol, GL_FALSE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TRUE', CardinalSymbol, GL_TRUE));
-
-  // primitives
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POINTS', CardinalSymbol, GL_POINTS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINES', CardinalSymbol, GL_LINES));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINE_LOOP', CardinalSymbol, GL_LINE_LOOP));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINE_STRIP', CardinalSymbol, GL_LINE_STRIP));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TRIANGLES', CardinalSymbol, GL_TRIANGLES));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TRIANGLE_STRIP', CardinalSymbol, GL_TRIANGLE_STRIP));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TRIANGLE_FAN', CardinalSymbol, GL_TRIANGLE_FAN));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_QUADS', CardinalSymbol, GL_QUADS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_QUAD_STRIP', CardinalSymbol, GL_QUAD_STRIP));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON', CardinalSymbol, GL_POLYGON));
-
-  // blending
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ZERO', CardinalSymbol, GL_ZERO));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ONE', CardinalSymbol, GL_ONE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SRC_COLOR', CardinalSymbol, GL_SRC_COLOR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ONE_MINUS_SRC_COLOR', CardinalSymbol, GL_ONE_MINUS_SRC_COLOR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SRC_ALPHA', CardinalSymbol, GL_SRC_ALPHA));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ONE_MINUS_SRC_ALPHA', CardinalSymbol, GL_ONE_MINUS_SRC_ALPHA));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DST_ALPHA', CardinalSymbol, GL_DST_ALPHA));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ONE_MINUS_DST_ALPHA', CardinalSymbol, GL_ONE_MINUS_DST_ALPHA));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DST_COLOR', CardinalSymbol, GL_DST_COLOR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ONE_MINUS_DST_COLOR', CardinalSymbol, GL_ONE_MINUS_DST_COLOR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SRC_ALPHA_SATURATE', CardinalSymbol, GL_SRC_ALPHA_SATURATE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLEND_DST', CardinalSymbol, GL_BLEND_DST));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLEND_SRC', CardinalSymbol, GL_BLEND_SRC));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLEND', CardinalSymbol, GL_BLEND));
-
-  // blending (GL 1.2 ARB imaging)
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLEND_COLOR', CardinalSymbol, GL_BLEND_COLOR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONSTANT_COLOR', CardinalSymbol, GL_CONSTANT_COLOR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ONE_MINUS_CONSTANT_COLOR', CardinalSymbol, GL_ONE_MINUS_CONSTANT_COLOR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONSTANT_ALPHA', CardinalSymbol, GL_CONSTANT_ALPHA));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ONE_MINUS_CONSTANT_ALPHA', CardinalSymbol, GL_ONE_MINUS_CONSTANT_ALPHA));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FUNC_ADD', CardinalSymbol, GL_FUNC_ADD));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MIN', CardinalSymbol, GL_MIN));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX', CardinalSymbol, GL_MAX));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FUNC_SUBTRACT', CardinalSymbol, GL_FUNC_SUBTRACT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FUNC_REVERSE_SUBTRACT', CardinalSymbol, GL_FUNC_REVERSE_SUBTRACT));
-
-  // color table GL 1.2 ARB imaging
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_TABLE', CardinalSymbol, GL_COLOR_TABLE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_COLOR_TABLE', CardinalSymbol, GL_POST_CONVOLUTION_COLOR_TABLE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_COLOR_TABLE', CardinalSymbol, GL_POST_COLOR_MATRIX_COLOR_TABLE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROXY_COLOR_TABLE', CardinalSymbol, GL_PROXY_COLOR_TABLE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROXY_POST_CONVOLUTION_COLOR_TABLE', CardinalSymbol, GL_PROXY_POST_CONVOLUTION_COLOR_TABLE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE', CardinalSymbol, GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_TABLE_SCALE', CardinalSymbol, GL_COLOR_TABLE_SCALE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_TABLE_BIAS', CardinalSymbol, GL_COLOR_TABLE_BIAS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_TABLE_FORMAT', CardinalSymbol, GL_COLOR_TABLE_FORMAT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_TABLE_WIDTH', CardinalSymbol, GL_COLOR_TABLE_WIDTH));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_TABLE_RED_SIZE', CardinalSymbol, GL_COLOR_TABLE_RED_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_TABLE_GREEN_SIZE', CardinalSymbol, GL_COLOR_TABLE_GREEN_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_TABLE_BLUE_SIZE', CardinalSymbol, GL_COLOR_TABLE_BLUE_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_TABLE_ALPHA_SIZE', CardinalSymbol, GL_COLOR_TABLE_ALPHA_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_TABLE_LUMINANCE_SIZE', CardinalSymbol, GL_COLOR_TABLE_LUMINANCE_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_TABLE_INTENSITY_SIZE', CardinalSymbol, GL_COLOR_TABLE_INTENSITY_SIZE));
-
-  // convolutions GL 1.2 ARB imaging
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_1D', CardinalSymbol, GL_CONVOLUTION_1D));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_2D', CardinalSymbol, GL_CONVOLUTION_2D));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SEPARABLE_2D', CardinalSymbol, GL_SEPARABLE_2D));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_BORDER_MODE', CardinalSymbol, GL_CONVOLUTION_BORDER_MODE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_FILTER_SCALE', CardinalSymbol, GL_CONVOLUTION_FILTER_SCALE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_FILTER_BIAS', CardinalSymbol, GL_CONVOLUTION_FILTER_BIAS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_REDUCE', CardinalSymbol, GL_REDUCE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_FORMAT', CardinalSymbol, GL_CONVOLUTION_FORMAT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_WIDTH', CardinalSymbol, GL_CONVOLUTION_WIDTH));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_HEIGHT', CardinalSymbol, GL_CONVOLUTION_HEIGHT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_CONVOLUTION_WIDTH', CardinalSymbol, GL_MAX_CONVOLUTION_WIDTH));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_CONVOLUTION_HEIGHT', CardinalSymbol, GL_MAX_CONVOLUTION_HEIGHT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_RED_SCALE', CardinalSymbol, GL_POST_CONVOLUTION_RED_SCALE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_GREEN_SCALE', CardinalSymbol, GL_POST_CONVOLUTION_GREEN_SCALE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_BLUE_SCALE', CardinalSymbol, GL_POST_CONVOLUTION_BLUE_SCALE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_ALPHA_SCALE', CardinalSymbol, GL_POST_CONVOLUTION_ALPHA_SCALE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_RED_BIAS', CardinalSymbol, GL_POST_CONVOLUTION_RED_BIAS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_GREEN_BIAS', CardinalSymbol, GL_POST_CONVOLUTION_GREEN_BIAS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_BLUE_BIAS', CardinalSymbol, GL_POST_CONVOLUTION_BLUE_BIAS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_ALPHA_BIAS', CardinalSymbol, GL_POST_CONVOLUTION_ALPHA_BIAS));
-
-  // histogram GL 1.2 ARB imaging
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM', CardinalSymbol, GL_HISTOGRAM));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROXY_HISTOGRAM', CardinalSymbol, GL_PROXY_HISTOGRAM));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_WIDTH', CardinalSymbol, GL_HISTOGRAM_WIDTH));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_FORMAT', CardinalSymbol, GL_HISTOGRAM_FORMAT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_RED_SIZE', CardinalSymbol, GL_HISTOGRAM_RED_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_GREEN_SIZE', CardinalSymbol, GL_HISTOGRAM_GREEN_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_BLUE_SIZE', CardinalSymbol, GL_HISTOGRAM_BLUE_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_ALPHA_SIZE', CardinalSymbol, GL_HISTOGRAM_ALPHA_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_LUMINANCE_SIZE', CardinalSymbol, GL_HISTOGRAM_LUMINANCE_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_SINK', CardinalSymbol, GL_HISTOGRAM_SINK));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MINMAX', CardinalSymbol, GL_MINMAX));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MINMAX_FORMAT', CardinalSymbol, GL_MINMAX_FORMAT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MINMAX_SINK', CardinalSymbol, GL_MINMAX_SINK));
-
-  // buffers
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NONE', CardinalSymbol, GL_NONE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FRONT_LEFT', CardinalSymbol, GL_FRONT_LEFT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FRONT_RIGHT', CardinalSymbol, GL_FRONT_RIGHT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BACK_LEFT', CardinalSymbol, GL_BACK_LEFT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BACK_RIGHT', CardinalSymbol, GL_BACK_RIGHT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FRONT', CardinalSymbol, GL_FRONT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BACK', CardinalSymbol, GL_BACK));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LEFT', CardinalSymbol, GL_LEFT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RIGHT', CardinalSymbol, GL_RIGHT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FRONT_AND_BACK', CardinalSymbol, GL_FRONT_AND_BACK));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_AUX0', CardinalSymbol, GL_AUX0));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_AUX1', CardinalSymbol, GL_AUX1));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_AUX2', CardinalSymbol, GL_AUX2));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_AUX3', CardinalSymbol, GL_AUX3));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_AUX_BUFFERS', CardinalSymbol, GL_AUX_BUFFERS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DRAW_BUFFER', CardinalSymbol, GL_DRAW_BUFFER));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_READ_BUFFER', CardinalSymbol, GL_READ_BUFFER));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DOUBLEBUFFER', CardinalSymbol, GL_DOUBLEBUFFER));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STEREO', CardinalSymbol, GL_STEREO));
-
-  // depth buffer
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH_RANGE', CardinalSymbol, GL_DEPTH_RANGE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH_TEST', CardinalSymbol, GL_DEPTH_TEST));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH_WRITEMASK', CardinalSymbol, GL_DEPTH_WRITEMASK));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH_CLEAR_VALUE', CardinalSymbol, GL_DEPTH_CLEAR_VALUE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH_FUNC', CardinalSymbol, GL_DEPTH_FUNC));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NEVER', CardinalSymbol, GL_NEVER));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LESS', CardinalSymbol, GL_LESS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EQUAL', CardinalSymbol, GL_EQUAL));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LEQUAL', CardinalSymbol, GL_LEQUAL));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_GREATER', CardinalSymbol, GL_GREATER));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NOTEQUAL', CardinalSymbol, GL_NOTEQUAL));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_GEQUAL', CardinalSymbol, GL_GEQUAL));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALWAYS', CardinalSymbol, GL_ALWAYS));
-
-  // accumulation buffer
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ACCUM', CardinalSymbol, GL_ACCUM));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LOAD', CardinalSymbol, GL_LOAD));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RETURN', CardinalSymbol, GL_RETURN));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MULT', CardinalSymbol, GL_MULT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ADD', CardinalSymbol, GL_ADD));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ACCUM_CLEAR_VALUE', CardinalSymbol, GL_ACCUM_CLEAR_VALUE));
-
-  // feedback buffer
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FEEDBACK_BUFFER_POINTER', CardinalSymbol, GL_FEEDBACK_BUFFER_POINTER));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FEEDBACK_BUFFER_SIZE', CardinalSymbol, GL_FEEDBACK_BUFFER_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FEEDBACK_BUFFER_TYPE', CardinalSymbol, GL_FEEDBACK_BUFFER_TYPE));
-
-  // feedback types
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_2D', CardinalSymbol, GL_2D));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_3D', CardinalSymbol, GL_3D));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_3D_COLOR', CardinalSymbol, GL_3D_COLOR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_3D_COLOR_TEXTURE', CardinalSymbol, GL_3D_COLOR_TEXTURE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_4D_COLOR_TEXTURE', CardinalSymbol, GL_4D_COLOR_TEXTURE));
-
-  // feedback tokens
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PASS_THROUGH_TOKEN', CardinalSymbol, GL_PASS_THROUGH_TOKEN));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POINT_TOKEN', CardinalSymbol, GL_POINT_TOKEN));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINE_TOKEN', CardinalSymbol, GL_LINE_TOKEN));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_TOKEN', CardinalSymbol, GL_POLYGON_TOKEN));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BITMAP_TOKEN', CardinalSymbol, GL_BITMAP_TOKEN));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DRAW_PIXEL_TOKEN', CardinalSymbol, GL_DRAW_PIXEL_TOKEN));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COPY_PIXEL_TOKEN', CardinalSymbol, GL_COPY_PIXEL_TOKEN));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINE_RESET_TOKEN', CardinalSymbol, GL_LINE_RESET_TOKEN));
-
-  // fog
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EXP', CardinalSymbol, GL_EXP));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EXP2', CardinalSymbol, GL_EXP2));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG', CardinalSymbol, GL_FOG));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_INDEX', CardinalSymbol, GL_FOG_INDEX));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_DENSITY', CardinalSymbol, GL_FOG_DENSITY));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_START', CardinalSymbol, GL_FOG_START));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_END', CardinalSymbol, GL_FOG_END));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_MODE', CardinalSymbol, GL_FOG_MODE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_COLOR', CardinalSymbol, GL_FOG_COLOR));
-
-  // pixel mode, transfer
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_I_TO_I', CardinalSymbol, GL_PIXEL_MAP_I_TO_I));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_S_TO_S', CardinalSymbol, GL_PIXEL_MAP_S_TO_S));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_I_TO_R', CardinalSymbol, GL_PIXEL_MAP_I_TO_R));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_I_TO_G', CardinalSymbol, GL_PIXEL_MAP_I_TO_G));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_I_TO_B', CardinalSymbol, GL_PIXEL_MAP_I_TO_B));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_I_TO_A', CardinalSymbol, GL_PIXEL_MAP_I_TO_A));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_R_TO_R', CardinalSymbol, GL_PIXEL_MAP_R_TO_R));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_G_TO_G', CardinalSymbol, GL_PIXEL_MAP_G_TO_G));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_B_TO_B', CardinalSymbol, GL_PIXEL_MAP_B_TO_B));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_A_TO_A', CardinalSymbol, GL_PIXEL_MAP_A_TO_A));
-
-  // vertex arrays
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ARRAY_POINTER', CardinalSymbol, GL_VERTEX_ARRAY_POINTER));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NORMAL_ARRAY_POINTER', CardinalSymbol, GL_NORMAL_ARRAY_POINTER));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_ARRAY_POINTER', CardinalSymbol, GL_COLOR_ARRAY_POINTER));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INDEX_ARRAY_POINTER', CardinalSymbol, GL_INDEX_ARRAY_POINTER));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COORD_ARRAY_POINTER', CardinalSymbol, GL_TEXTURE_COORD_ARRAY_POINTER));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EDGE_FLAG_ARRAY_POINTER', CardinalSymbol, GL_EDGE_FLAG_ARRAY_POINTER));
-
-  // stenciling
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STENCIL_TEST', CardinalSymbol, GL_STENCIL_TEST));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STENCIL_CLEAR_VALUE', CardinalSymbol, GL_STENCIL_CLEAR_VALUE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STENCIL_FUNC', CardinalSymbol, GL_STENCIL_FUNC));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STENCIL_VALUE_MASK', CardinalSymbol, GL_STENCIL_VALUE_MASK));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STENCIL_FAIL', CardinalSymbol, GL_STENCIL_FAIL));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STENCIL_PASS_DEPTH_FAIL', CardinalSymbol, GL_STENCIL_PASS_DEPTH_FAIL));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STENCIL_PASS_DEPTH_PASS', CardinalSymbol, GL_STENCIL_PASS_DEPTH_PASS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STENCIL_REF', CardinalSymbol, GL_STENCIL_REF));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STENCIL_WRITEMASK', CardinalSymbol, GL_STENCIL_WRITEMASK));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_KEEP', CardinalSymbol, GL_KEEP));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_REPLACE', CardinalSymbol, GL_REPLACE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INCR', CardinalSymbol, GL_INCR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DECR', CardinalSymbol, GL_DECR));
-
-  // color material
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_MATERIAL_FACE', CardinalSymbol, GL_COLOR_MATERIAL_FACE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_MATERIAL_PARAMETER', CardinalSymbol, GL_COLOR_MATERIAL_PARAMETER));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_MATERIAL', CardinalSymbol, GL_COLOR_MATERIAL));
-
-  // points
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POINT_SMOOTH', CardinalSymbol, GL_POINT_SMOOTH));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POINT_SIZE', CardinalSymbol, GL_POINT_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POINT_SIZE_RANGE', CardinalSymbol, GL_POINT_SIZE_RANGE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POINT_SIZE_GRANULARITY', CardinalSymbol, GL_POINT_SIZE_GRANULARITY));
-
-  // lines
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINE_SMOOTH', CardinalSymbol, GL_LINE_SMOOTH));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINE_WIDTH', CardinalSymbol, GL_LINE_WIDTH));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINE_WIDTH_RANGE', CardinalSymbol, GL_LINE_WIDTH_RANGE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINE_WIDTH_GRANULARITY', CardinalSymbol, GL_LINE_WIDTH_GRANULARITY));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINE_STIPPLE', CardinalSymbol, GL_LINE_STIPPLE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINE_STIPPLE_PATTERN', CardinalSymbol, GL_LINE_STIPPLE_PATTERN));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINE_STIPPLE_REPEAT', CardinalSymbol, GL_LINE_STIPPLE_REPEAT));
-
-  // polygons
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_MODE', CardinalSymbol, GL_POLYGON_MODE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_SMOOTH', CardinalSymbol, GL_POLYGON_SMOOTH));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_STIPPLE', CardinalSymbol, GL_POLYGON_STIPPLE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EDGE_FLAG', CardinalSymbol, GL_EDGE_FLAG));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CULL_FACE', CardinalSymbol, GL_CULL_FACE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CULL_FACE_MODE', CardinalSymbol, GL_CULL_FACE_MODE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FRONT_FACE', CardinalSymbol, GL_FRONT_FACE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CW', CardinalSymbol, GL_CW));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CCW', CardinalSymbol, GL_CCW));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POINT', CardinalSymbol, GL_POINT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINE', CardinalSymbol, GL_LINE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FILL', CardinalSymbol, GL_FILL));
-
-  // display lists
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIST_MODE', CardinalSymbol, GL_LIST_MODE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIST_BASE', CardinalSymbol, GL_LIST_BASE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIST_INDEX', CardinalSymbol, GL_LIST_INDEX));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPILE', CardinalSymbol, GL_COMPILE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPILE_AND_EXECUTE', CardinalSymbol, GL_COMPILE_AND_EXECUTE));
-
-  // lighting
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHTING', CardinalSymbol, GL_LIGHTING));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHT_MODEL_LOCAL_VIEWER', CardinalSymbol, GL_LIGHT_MODEL_LOCAL_VIEWER));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHT_MODEL_TWO_SIDE', CardinalSymbol, GL_LIGHT_MODEL_TWO_SIDE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHT_MODEL_AMBIENT', CardinalSymbol, GL_LIGHT_MODEL_AMBIENT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHT_MODEL_COLOR_CONTROL', CardinalSymbol, GL_LIGHT_MODEL_COLOR_CONTROL));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SHADE_MODEL', CardinalSymbol, GL_SHADE_MODEL));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NORMALIZE', CardinalSymbol, GL_NORMALIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_AMBIENT', CardinalSymbol, GL_AMBIENT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DIFFUSE', CardinalSymbol, GL_DIFFUSE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SPECULAR', CardinalSymbol, GL_SPECULAR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POSITION', CardinalSymbol, GL_POSITION));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SPOT_DIRECTION', CardinalSymbol, GL_SPOT_DIRECTION));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SPOT_EXPONENT', CardinalSymbol, GL_SPOT_EXPONENT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SPOT_CUTOFF', CardinalSymbol, GL_SPOT_CUTOFF));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONSTANT_ATTENUATION', CardinalSymbol, GL_CONSTANT_ATTENUATION));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINEAR_ATTENUATION', CardinalSymbol, GL_LINEAR_ATTENUATION));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_QUADRATIC_ATTENUATION', CardinalSymbol, GL_QUADRATIC_ATTENUATION));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EMISSION', CardinalSymbol, GL_EMISSION));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SHININESS', CardinalSymbol, GL_SHININESS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_AMBIENT_AND_DIFFUSE', CardinalSymbol, GL_AMBIENT_AND_DIFFUSE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_INDEXES', CardinalSymbol, GL_COLOR_INDEXES));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FLAT', CardinalSymbol, GL_FLAT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SMOOTH', CardinalSymbol, GL_SMOOTH));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHT0', CardinalSymbol, GL_LIGHT0));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHT1', CardinalSymbol, GL_LIGHT1));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHT2', CardinalSymbol, GL_LIGHT2));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHT3', CardinalSymbol, GL_LIGHT3));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHT4', CardinalSymbol, GL_LIGHT4));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHT5', CardinalSymbol, GL_LIGHT5));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHT6', CardinalSymbol, GL_LIGHT6));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHT7', CardinalSymbol, GL_LIGHT7));
-
-  // matrix modes
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX_MODE', CardinalSymbol, GL_MATRIX_MODE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW', CardinalSymbol, GL_MODELVIEW));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROJECTION', CardinalSymbol, GL_PROJECTION));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE', CardinalSymbol, GL_TEXTURE));
-
-  // gets
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_COLOR', CardinalSymbol, GL_CURRENT_COLOR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_INDEX', CardinalSymbol, GL_CURRENT_INDEX));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_NORMAL', CardinalSymbol, GL_CURRENT_NORMAL));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_TEXTURE_COORDS', CardinalSymbol, GL_CURRENT_TEXTURE_COORDS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_RASTER_COLOR', CardinalSymbol, GL_CURRENT_RASTER_COLOR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_RASTER_INDEX', CardinalSymbol, GL_CURRENT_RASTER_INDEX));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_RASTER_TEXTURE_COORDS', CardinalSymbol, GL_CURRENT_RASTER_TEXTURE_COORDS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_RASTER_POSITION', CardinalSymbol, GL_CURRENT_RASTER_POSITION));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_RASTER_POSITION_VALID', CardinalSymbol, GL_CURRENT_RASTER_POSITION_VALID));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_RASTER_DISTANCE', CardinalSymbol, GL_CURRENT_RASTER_DISTANCE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_LIST_NESTING', CardinalSymbol, GL_MAX_LIST_NESTING));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VIEWPORT', CardinalSymbol, GL_VIEWPORT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW_STACK_DEPTH', CardinalSymbol, GL_MODELVIEW_STACK_DEPTH));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROJECTION_STACK_DEPTH', CardinalSymbol, GL_PROJECTION_STACK_DEPTH));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_STACK_DEPTH', CardinalSymbol, GL_TEXTURE_STACK_DEPTH));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW_MATRIX', CardinalSymbol, GL_MODELVIEW_MATRIX));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROJECTION_MATRIX', CardinalSymbol, GL_PROJECTION_MATRIX));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_MATRIX', CardinalSymbol, GL_TEXTURE_MATRIX));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ATTRIB_STACK_DEPTH', CardinalSymbol, GL_ATTRIB_STACK_DEPTH));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLIENT_ATTRIB_STACK_DEPTH', CardinalSymbol, GL_CLIENT_ATTRIB_STACK_DEPTH));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SINGLE_COLOR', CardinalSymbol, GL_SINGLE_COLOR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SEPARATE_SPECULAR_COLOR', CardinalSymbol, GL_SEPARATE_SPECULAR_COLOR));
-
-  // alpha testing
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA_TEST', CardinalSymbol, GL_ALPHA_TEST));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA_TEST_FUNC', CardinalSymbol, GL_ALPHA_TEST_FUNC));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA_TEST_REF', CardinalSymbol, GL_ALPHA_TEST_REF));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LOGIC_OP_MODE', CardinalSymbol, GL_LOGIC_OP_MODE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INDEX_LOGIC_OP', CardinalSymbol, GL_INDEX_LOGIC_OP));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LOGIC_OP', CardinalSymbol, GL_LOGIC_OP));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_LOGIC_OP', CardinalSymbol, GL_COLOR_LOGIC_OP));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SCISSOR_BOX', CardinalSymbol, GL_SCISSOR_BOX));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SCISSOR_TEST', CardinalSymbol, GL_SCISSOR_TEST));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INDEX_CLEAR_VALUE', CardinalSymbol, GL_INDEX_CLEAR_VALUE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INDEX_WRITEMASK', CardinalSymbol, GL_INDEX_WRITEMASK));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_CLEAR_VALUE', CardinalSymbol, GL_COLOR_CLEAR_VALUE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_WRITEMASK', CardinalSymbol, GL_COLOR_WRITEMASK));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INDEX_MODE', CardinalSymbol, GL_INDEX_MODE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGBA_MODE', CardinalSymbol, GL_RGBA_MODE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RENDER_MODE', CardinalSymbol, GL_RENDER_MODE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PERSPECTIVE_CORRECTION_HINT', CardinalSymbol, GL_PERSPECTIVE_CORRECTION_HINT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POINT_SMOOTH_HINT', CardinalSymbol, GL_POINT_SMOOTH_HINT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINE_SMOOTH_HINT', CardinalSymbol, GL_LINE_SMOOTH_HINT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_SMOOTH_HINT', CardinalSymbol, GL_POLYGON_SMOOTH_HINT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_HINT', CardinalSymbol, GL_FOG_HINT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_GEN_S', CardinalSymbol, GL_TEXTURE_GEN_S));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_GEN_T', CardinalSymbol, GL_TEXTURE_GEN_T));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_GEN_R', CardinalSymbol, GL_TEXTURE_GEN_R));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_GEN_Q', CardinalSymbol, GL_TEXTURE_GEN_Q));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_I_TO_I_SIZE', CardinalSymbol, GL_PIXEL_MAP_I_TO_I_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_S_TO_S_SIZE', CardinalSymbol, GL_PIXEL_MAP_S_TO_S_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_I_TO_R_SIZE', CardinalSymbol, GL_PIXEL_MAP_I_TO_R_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_I_TO_G_SIZE', CardinalSymbol, GL_PIXEL_MAP_I_TO_G_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_I_TO_B_SIZE', CardinalSymbol, GL_PIXEL_MAP_I_TO_B_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_I_TO_A_SIZE', CardinalSymbol, GL_PIXEL_MAP_I_TO_A_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_R_TO_R_SIZE', CardinalSymbol, GL_PIXEL_MAP_R_TO_R_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_G_TO_G_SIZE', CardinalSymbol, GL_PIXEL_MAP_G_TO_G_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_B_TO_B_SIZE', CardinalSymbol, GL_PIXEL_MAP_B_TO_B_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_A_TO_A_SIZE', CardinalSymbol, GL_PIXEL_MAP_A_TO_A_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNPACK_SWAP_BYTES', CardinalSymbol, GL_UNPACK_SWAP_BYTES));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNPACK_LSB_FIRST', CardinalSymbol, GL_UNPACK_LSB_FIRST));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNPACK_ROW_LENGTH', CardinalSymbol, GL_UNPACK_ROW_LENGTH));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNPACK_SKIP_ROWS', CardinalSymbol, GL_UNPACK_SKIP_ROWS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNPACK_SKIP_PIXELS', CardinalSymbol, GL_UNPACK_SKIP_PIXELS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNPACK_ALIGNMENT', CardinalSymbol, GL_UNPACK_ALIGNMENT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PACK_SWAP_BYTES', CardinalSymbol, GL_PACK_SWAP_BYTES));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PACK_LSB_FIRST', CardinalSymbol, GL_PACK_LSB_FIRST));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PACK_ROW_LENGTH', CardinalSymbol, GL_PACK_ROW_LENGTH));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PACK_SKIP_ROWS', CardinalSymbol, GL_PACK_SKIP_ROWS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PACK_SKIP_PIXELS', CardinalSymbol, GL_PACK_SKIP_PIXELS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PACK_ALIGNMENT', CardinalSymbol, GL_PACK_ALIGNMENT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PACK_SKIP_IMAGES', CardinalSymbol, GL_PACK_SKIP_IMAGES));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PACK_IMAGE_HEIGHT', CardinalSymbol, GL_PACK_IMAGE_HEIGHT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNPACK_SKIP_IMAGES', CardinalSymbol, GL_UNPACK_SKIP_IMAGES));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNPACK_IMAGE_HEIGHT', CardinalSymbol, GL_UNPACK_IMAGE_HEIGHT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP_COLOR', CardinalSymbol, GL_MAP_COLOR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP_STENCIL', CardinalSymbol, GL_MAP_STENCIL));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INDEX_SHIFT', CardinalSymbol, GL_INDEX_SHIFT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INDEX_OFFSET', CardinalSymbol, GL_INDEX_OFFSET));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RED_SCALE', CardinalSymbol, GL_RED_SCALE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RED_BIAS', CardinalSymbol, GL_RED_BIAS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ZOOM_X', CardinalSymbol, GL_ZOOM_X));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ZOOM_Y', CardinalSymbol, GL_ZOOM_Y));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_GREEN_SCALE', CardinalSymbol, GL_GREEN_SCALE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_GREEN_BIAS', CardinalSymbol, GL_GREEN_BIAS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLUE_SCALE', CardinalSymbol, GL_BLUE_SCALE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLUE_BIAS', CardinalSymbol, GL_BLUE_BIAS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA_SCALE', CardinalSymbol, GL_ALPHA_SCALE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA_BIAS', CardinalSymbol, GL_ALPHA_BIAS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH_SCALE', CardinalSymbol, GL_DEPTH_SCALE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH_BIAS', CardinalSymbol, GL_DEPTH_BIAS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_EVAL_ORDER', CardinalSymbol, GL_MAX_EVAL_ORDER));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_LIGHTS', CardinalSymbol, GL_MAX_LIGHTS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_CLIP_PLANES', CardinalSymbol, GL_MAX_CLIP_PLANES));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_TEXTURE_SIZE', CardinalSymbol, GL_MAX_TEXTURE_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_3D_TEXTURE_SIZE', CardinalSymbol, GL_MAX_3D_TEXTURE_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PIXEL_MAP_TABLE', CardinalSymbol, GL_MAX_PIXEL_MAP_TABLE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_ATTRIB_STACK_DEPTH', CardinalSymbol, GL_MAX_ATTRIB_STACK_DEPTH));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_MODELVIEW_STACK_DEPTH', CardinalSymbol, GL_MAX_MODELVIEW_STACK_DEPTH));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_NAME_STACK_DEPTH', CardinalSymbol, GL_MAX_NAME_STACK_DEPTH));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROJECTION_STACK_DEPTH', CardinalSymbol, GL_MAX_PROJECTION_STACK_DEPTH));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_TEXTURE_STACK_DEPTH', CardinalSymbol, GL_MAX_TEXTURE_STACK_DEPTH));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_VIEWPORT_DIMS', CardinalSymbol, GL_MAX_VIEWPORT_DIMS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_CLIENT_ATTRIB_STACK_DEPTH', CardinalSymbol, GL_MAX_CLIENT_ATTRIB_STACK_DEPTH));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_ELEMENTS_VERTICES', CardinalSymbol, GL_MAX_ELEMENTS_VERTICES));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_ELEMENTS_INDICES', CardinalSymbol, GL_MAX_ELEMENTS_INDICES));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RESCALE_NORMAL', CardinalSymbol, GL_RESCALE_NORMAL));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SUBPIXEL_BITS', CardinalSymbol, GL_SUBPIXEL_BITS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INDEX_BITS', CardinalSymbol, GL_INDEX_BITS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RED_BITS', CardinalSymbol, GL_RED_BITS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_GREEN_BITS', CardinalSymbol, GL_GREEN_BITS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLUE_BITS', CardinalSymbol, GL_BLUE_BITS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA_BITS', CardinalSymbol, GL_ALPHA_BITS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH_BITS', CardinalSymbol, GL_DEPTH_BITS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STENCIL_BITS', CardinalSymbol, GL_STENCIL_BITS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ACCUM_RED_BITS', CardinalSymbol, GL_ACCUM_RED_BITS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ACCUM_GREEN_BITS', CardinalSymbol, GL_ACCUM_GREEN_BITS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ACCUM_BLUE_BITS', CardinalSymbol, GL_ACCUM_BLUE_BITS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ACCUM_ALPHA_BITS', CardinalSymbol, GL_ACCUM_ALPHA_BITS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NAME_STACK_DEPTH', CardinalSymbol, GL_NAME_STACK_DEPTH));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_AUTO_NORMAL', CardinalSymbol, GL_AUTO_NORMAL));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_COLOR_4', CardinalSymbol, GL_MAP1_COLOR_4));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_INDEX', CardinalSymbol, GL_MAP1_INDEX));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_NORMAL', CardinalSymbol, GL_MAP1_NORMAL));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_TEXTURE_COORD_1', CardinalSymbol, GL_MAP1_TEXTURE_COORD_1));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_TEXTURE_COORD_2', CardinalSymbol, GL_MAP1_TEXTURE_COORD_2));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_TEXTURE_COORD_3', CardinalSymbol, GL_MAP1_TEXTURE_COORD_3));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_TEXTURE_COORD_4', CardinalSymbol, GL_MAP1_TEXTURE_COORD_4));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_3', CardinalSymbol, GL_MAP1_VERTEX_3));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_4', CardinalSymbol, GL_MAP1_VERTEX_4));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_COLOR_4', CardinalSymbol, GL_MAP2_COLOR_4));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_INDEX', CardinalSymbol, GL_MAP2_INDEX));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_NORMAL', CardinalSymbol, GL_MAP2_NORMAL));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_TEXTURE_COORD_1', CardinalSymbol, GL_MAP2_TEXTURE_COORD_1));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_TEXTURE_COORD_2', CardinalSymbol, GL_MAP2_TEXTURE_COORD_2));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_TEXTURE_COORD_3', CardinalSymbol, GL_MAP2_TEXTURE_COORD_3));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_TEXTURE_COORD_4', CardinalSymbol, GL_MAP2_TEXTURE_COORD_4));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_3', CardinalSymbol, GL_MAP2_VERTEX_3));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_4', CardinalSymbol, GL_MAP2_VERTEX_4));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_GRID_DOMAIN', CardinalSymbol, GL_MAP1_GRID_DOMAIN));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_GRID_SEGMENTS', CardinalSymbol, GL_MAP1_GRID_SEGMENTS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_GRID_DOMAIN', CardinalSymbol, GL_MAP2_GRID_DOMAIN));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_GRID_SEGMENTS', CardinalSymbol, GL_MAP2_GRID_SEGMENTS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_1D', CardinalSymbol, GL_TEXTURE_1D));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_2D', CardinalSymbol, GL_TEXTURE_2D));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_3D', CardinalSymbol, GL_TEXTURE_3D));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SELECTION_BUFFER_POINTER', CardinalSymbol, GL_SELECTION_BUFFER_POINTER));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SELECTION_BUFFER_SIZE', CardinalSymbol, GL_SELECTION_BUFFER_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_OFFSET_UNITS', CardinalSymbol, GL_POLYGON_OFFSET_UNITS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_OFFSET_POINT', CardinalSymbol, GL_POLYGON_OFFSET_POINT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_OFFSET_LINE', CardinalSymbol, GL_POLYGON_OFFSET_LINE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_OFFSET_FILL', CardinalSymbol, GL_POLYGON_OFFSET_FILL));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_OFFSET_FACTOR', CardinalSymbol, GL_POLYGON_OFFSET_FACTOR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_BINDING_1D', CardinalSymbol, GL_TEXTURE_BINDING_1D));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_BINDING_2D', CardinalSymbol, GL_TEXTURE_BINDING_2D));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ARRAY', CardinalSymbol, GL_VERTEX_ARRAY));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NORMAL_ARRAY', CardinalSymbol, GL_NORMAL_ARRAY));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_ARRAY', CardinalSymbol, GL_COLOR_ARRAY));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INDEX_ARRAY', CardinalSymbol, GL_INDEX_ARRAY));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COORD_ARRAY', CardinalSymbol, GL_TEXTURE_COORD_ARRAY));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EDGE_FLAG_ARRAY', CardinalSymbol, GL_EDGE_FLAG_ARRAY));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ARRAY_SIZE', CardinalSymbol, GL_VERTEX_ARRAY_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ARRAY_TYPE', CardinalSymbol, GL_VERTEX_ARRAY_TYPE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ARRAY_STRIDE', CardinalSymbol, GL_VERTEX_ARRAY_STRIDE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NORMAL_ARRAY_TYPE', CardinalSymbol, GL_NORMAL_ARRAY_TYPE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NORMAL_ARRAY_STRIDE', CardinalSymbol, GL_NORMAL_ARRAY_STRIDE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_ARRAY_SIZE', CardinalSymbol, GL_COLOR_ARRAY_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_ARRAY_TYPE', CardinalSymbol, GL_COLOR_ARRAY_TYPE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_ARRAY_STRIDE', CardinalSymbol, GL_COLOR_ARRAY_STRIDE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INDEX_ARRAY_TYPE', CardinalSymbol, GL_INDEX_ARRAY_TYPE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INDEX_ARRAY_STRIDE', CardinalSymbol, GL_INDEX_ARRAY_STRIDE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COORD_ARRAY_SIZE', CardinalSymbol, GL_TEXTURE_COORD_ARRAY_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COORD_ARRAY_TYPE', CardinalSymbol, GL_TEXTURE_COORD_ARRAY_TYPE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COORD_ARRAY_STRIDE', CardinalSymbol, GL_TEXTURE_COORD_ARRAY_STRIDE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EDGE_FLAG_ARRAY_STRIDE', CardinalSymbol, GL_EDGE_FLAG_ARRAY_STRIDE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_MATRIX', CardinalSymbol, GL_COLOR_MATRIX));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_MATRIX_STACK_DEPTH', CardinalSymbol, GL_COLOR_MATRIX_STACK_DEPTH));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_COLOR_MATRIX_STACK_DEPTH', CardinalSymbol, GL_MAX_COLOR_MATRIX_STACK_DEPTH));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_RED_SCALE', CardinalSymbol, GL_POST_COLOR_MATRIX_RED_SCALE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_GREEN_SCALE', CardinalSymbol, GL_POST_COLOR_MATRIX_GREEN_SCALE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_BLUE_SCALE', CardinalSymbol, GL_POST_COLOR_MATRIX_BLUE_SCALE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_ALPHA_SCALE', CardinalSymbol, GL_POST_COLOR_MATRIX_ALPHA_SCALE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_RED_BIAS', CardinalSymbol, GL_POST_COLOR_MATRIX_RED_BIAS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_GREEN_BIAS', CardinalSymbol, GL_POST_COLOR_MATRIX_GREEN_BIAS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_BLUE_BIAS', CardinalSymbol, GL_POST_COLOR_MATRIX_BLUE_BIAS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_ALPHA_BIAS', CardinalSymbol, GL_POST_COLOR_MATRIX_ALPHA_BIAS));
-
-  // evaluators
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COEFF', CardinalSymbol, GL_COEFF));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ORDER', CardinalSymbol, GL_ORDER));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DOMAIN', CardinalSymbol, GL_DOMAIN));
-
-  // texture mapping
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_WIDTH', CardinalSymbol, GL_TEXTURE_WIDTH));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_HEIGHT', CardinalSymbol, GL_TEXTURE_HEIGHT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_INTERNAL_FORMAT', CardinalSymbol, GL_TEXTURE_INTERNAL_FORMAT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COMPONENTS', CardinalSymbol, GL_TEXTURE_COMPONENTS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_BORDER_COLOR', CardinalSymbol, GL_TEXTURE_BORDER_COLOR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_BORDER', CardinalSymbol, GL_TEXTURE_BORDER));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_RED_SIZE', CardinalSymbol, GL_TEXTURE_RED_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_GREEN_SIZE', CardinalSymbol, GL_TEXTURE_GREEN_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_BLUE_SIZE', CardinalSymbol, GL_TEXTURE_BLUE_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_ALPHA_SIZE', CardinalSymbol, GL_TEXTURE_ALPHA_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_LUMINANCE_SIZE', CardinalSymbol, GL_TEXTURE_LUMINANCE_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_INTENSITY_SIZE', CardinalSymbol, GL_TEXTURE_INTENSITY_SIZE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_PRIORITY', CardinalSymbol, GL_TEXTURE_PRIORITY));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_RESIDENT', CardinalSymbol, GL_TEXTURE_RESIDENT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BGR', CardinalSymbol, GL_BGR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BGRA', CardinalSymbol, GL_BGRA));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_S', CardinalSymbol, GL_S));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_T', CardinalSymbol, GL_T));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_R', CardinalSymbol, GL_R));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_Q', CardinalSymbol, GL_Q));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODULATE', CardinalSymbol, GL_MODULATE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DECAL', CardinalSymbol, GL_DECAL));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_ENV_MODE', CardinalSymbol, GL_TEXTURE_ENV_MODE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_ENV_COLOR', CardinalSymbol, GL_TEXTURE_ENV_COLOR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_ENV', CardinalSymbol, GL_TEXTURE_ENV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EYE_LINEAR', CardinalSymbol, GL_EYE_LINEAR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_LINEAR', CardinalSymbol, GL_OBJECT_LINEAR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SPHERE_MAP', CardinalSymbol, GL_SPHERE_MAP));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_GEN_MODE', CardinalSymbol, GL_TEXTURE_GEN_MODE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_PLANE', CardinalSymbol, GL_OBJECT_PLANE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EYE_PLANE', CardinalSymbol, GL_EYE_PLANE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NEAREST', CardinalSymbol, GL_NEAREST));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINEAR', CardinalSymbol, GL_LINEAR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NEAREST_MIPMAP_NEAREST', CardinalSymbol, GL_NEAREST_MIPMAP_NEAREST));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINEAR_MIPMAP_NEAREST', CardinalSymbol, GL_LINEAR_MIPMAP_NEAREST));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NEAREST_MIPMAP_LINEAR', CardinalSymbol, GL_NEAREST_MIPMAP_LINEAR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINEAR_MIPMAP_LINEAR', CardinalSymbol, GL_LINEAR_MIPMAP_LINEAR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_MAG_FILTER', CardinalSymbol, GL_TEXTURE_MAG_FILTER));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_MIN_FILTER', CardinalSymbol, GL_TEXTURE_MIN_FILTER));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_WRAP_R', CardinalSymbol, GL_TEXTURE_WRAP_R));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_WRAP_S', CardinalSymbol, GL_TEXTURE_WRAP_S));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_WRAP_T', CardinalSymbol, GL_TEXTURE_WRAP_T));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLAMP_TO_EDGE', CardinalSymbol, GL_CLAMP_TO_EDGE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_MIN_LOD', CardinalSymbol, GL_TEXTURE_MIN_LOD));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_MAX_LOD', CardinalSymbol, GL_TEXTURE_MAX_LOD));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_BASE_LEVEL', CardinalSymbol, GL_TEXTURE_BASE_LEVEL));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_MAX_LEVEL', CardinalSymbol, GL_TEXTURE_MAX_LEVEL));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_DEPTH', CardinalSymbol, GL_TEXTURE_DEPTH));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROXY_TEXTURE_1D', CardinalSymbol, GL_PROXY_TEXTURE_1D));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROXY_TEXTURE_2D', CardinalSymbol, GL_PROXY_TEXTURE_2D));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROXY_TEXTURE_3D', CardinalSymbol, GL_PROXY_TEXTURE_3D));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLAMP', CardinalSymbol, GL_CLAMP));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_REPEAT', CardinalSymbol, GL_REPEAT));
-
-  // hints
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DONT_CARE', CardinalSymbol, GL_DONT_CARE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FASTEST', CardinalSymbol, GL_FASTEST));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NICEST', CardinalSymbol, GL_NICEST));
-
-  // data types
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BYTE', CardinalSymbol, GL_BYTE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_BYTE', CardinalSymbol, GL_UNSIGNED_BYTE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SHORT', CardinalSymbol, GL_SHORT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_SHORT', CardinalSymbol, GL_UNSIGNED_SHORT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INT', CardinalSymbol, GL_INT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_INT', CardinalSymbol, GL_UNSIGNED_INT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FLOAT', CardinalSymbol, GL_FLOAT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_2_BYTES', CardinalSymbol, GL_2_BYTES));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_3_BYTES', CardinalSymbol, GL_3_BYTES));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_4_BYTES', CardinalSymbol, GL_4_BYTES));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DOUBLE', CardinalSymbol, GL_DOUBLE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DOUBLE_EXT', CardinalSymbol, GL_DOUBLE_EXT));
-
-  // logic operations
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLEAR', CardinalSymbol, GL_CLEAR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_AND', CardinalSymbol, GL_AND));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_AND_REVERSE', CardinalSymbol, GL_AND_REVERSE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COPY', CardinalSymbol, GL_COPY));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_AND_INVERTED', CardinalSymbol, GL_AND_INVERTED));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NOOP', CardinalSymbol, GL_NOOP));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_XOR', CardinalSymbol, GL_XOR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OR', CardinalSymbol, GL_OR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NOR', CardinalSymbol, GL_NOR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EQUIV', CardinalSymbol, GL_EQUIV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INVERT', CardinalSymbol, GL_INVERT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OR_REVERSE', CardinalSymbol, GL_OR_REVERSE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COPY_INVERTED', CardinalSymbol, GL_COPY_INVERTED));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OR_INVERTED', CardinalSymbol, GL_OR_INVERTED));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NAND', CardinalSymbol, GL_NAND));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SET', CardinalSymbol, GL_SET));
-
-  // PixelCopyType
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR', CardinalSymbol, GL_COLOR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH', CardinalSymbol, GL_DEPTH));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STENCIL', CardinalSymbol, GL_STENCIL));
-
-  // pixel formats
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_INDEX', CardinalSymbol, GL_COLOR_INDEX));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STENCIL_INDEX', CardinalSymbol, GL_STENCIL_INDEX));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH_COMPONENT', CardinalSymbol, GL_DEPTH_COMPONENT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RED', CardinalSymbol, GL_RED));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_GREEN', CardinalSymbol, GL_GREEN));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLUE', CardinalSymbol, GL_BLUE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA', CardinalSymbol, GL_ALPHA));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB', CardinalSymbol, GL_RGB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGBA', CardinalSymbol, GL_RGBA));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE', CardinalSymbol, GL_LUMINANCE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE_ALPHA', CardinalSymbol, GL_LUMINANCE_ALPHA));
-
-  // pixel type
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BITMAP', CardinalSymbol, GL_BITMAP));
-
-  // rendering modes
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RENDER', CardinalSymbol, GL_RENDER));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FEEDBACK', CardinalSymbol, GL_FEEDBACK));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SELECT', CardinalSymbol, GL_SELECT));
-
-  // implementation strings
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VENDOR', CardinalSymbol, GL_VENDOR));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RENDERER', CardinalSymbol, GL_RENDERER));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERSION', CardinalSymbol, GL_VERSION));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EXTENSIONS', CardinalSymbol, GL_EXTENSIONS));
-
-  // pixel formats
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_R3_G3_B2', CardinalSymbol, GL_R3_G3_B2));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA4', CardinalSymbol, GL_ALPHA4));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA8', CardinalSymbol, GL_ALPHA8));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA12', CardinalSymbol, GL_ALPHA12));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA16', CardinalSymbol, GL_ALPHA16));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE4', CardinalSymbol, GL_LUMINANCE4));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE8', CardinalSymbol, GL_LUMINANCE8));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE12', CardinalSymbol, GL_LUMINANCE12));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE16', CardinalSymbol, GL_LUMINANCE16));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE4_ALPHA4', CardinalSymbol, GL_LUMINANCE4_ALPHA4));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE6_ALPHA2', CardinalSymbol, GL_LUMINANCE6_ALPHA2));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE8_ALPHA8', CardinalSymbol, GL_LUMINANCE8_ALPHA8));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE12_ALPHA4', CardinalSymbol, GL_LUMINANCE12_ALPHA4));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE12_ALPHA12', CardinalSymbol, GL_LUMINANCE12_ALPHA12));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE16_ALPHA16', CardinalSymbol, GL_LUMINANCE16_ALPHA16));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INTENSITY', CardinalSymbol, GL_INTENSITY));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INTENSITY4', CardinalSymbol, GL_INTENSITY4));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INTENSITY8', CardinalSymbol, GL_INTENSITY8));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INTENSITY12', CardinalSymbol, GL_INTENSITY12));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INTENSITY16', CardinalSymbol, GL_INTENSITY16));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB4', CardinalSymbol, GL_RGB4));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB5', CardinalSymbol, GL_RGB5));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB8', CardinalSymbol, GL_RGB8));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB10', CardinalSymbol, GL_RGB10));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB12', CardinalSymbol, GL_RGB12));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB16', CardinalSymbol, GL_RGB16));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGBA2', CardinalSymbol, GL_RGBA2));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGBA4', CardinalSymbol, GL_RGBA4));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB5_A1', CardinalSymbol, GL_RGB5_A1));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGBA8', CardinalSymbol, GL_RGBA8));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB10_A2', CardinalSymbol, GL_RGB10_A2));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGBA12', CardinalSymbol, GL_RGBA12));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGBA16', CardinalSymbol, GL_RGBA16));
-
-  // interleaved arrays formats
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_V2F', CardinalSymbol, GL_V2F));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_V3F', CardinalSymbol, GL_V3F));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_C4UB_V2F', CardinalSymbol, GL_C4UB_V2F));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_C4UB_V3F', CardinalSymbol, GL_C4UB_V3F));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_C3F_V3F', CardinalSymbol, GL_C3F_V3F));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_N3F_V3F', CardinalSymbol, GL_N3F_V3F));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_C4F_N3F_V3F', CardinalSymbol, GL_C4F_N3F_V3F));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_T2F_V3F', CardinalSymbol, GL_T2F_V3F));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_T4F_V4F', CardinalSymbol, GL_T4F_V4F));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_T2F_C4UB_V3F', CardinalSymbol, GL_T2F_C4UB_V3F));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_T2F_C3F_V3F', CardinalSymbol, GL_T2F_C3F_V3F));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_T2F_N3F_V3F', CardinalSymbol, GL_T2F_N3F_V3F));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_T2F_C4F_N3F_V3F', CardinalSymbol, GL_T2F_C4F_N3F_V3F));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_T4F_C4F_N3F_V4F', CardinalSymbol, GL_T4F_C4F_N3F_V4F));
-
-  // clip planes
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLIP_PLANE0', CardinalSymbol, GL_CLIP_PLANE0));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLIP_PLANE1', CardinalSymbol, GL_CLIP_PLANE1));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLIP_PLANE2', CardinalSymbol, GL_CLIP_PLANE2));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLIP_PLANE3', CardinalSymbol, GL_CLIP_PLANE3));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLIP_PLANE4', CardinalSymbol, GL_CLIP_PLANE4));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLIP_PLANE5', CardinalSymbol, GL_CLIP_PLANE5));
-
-  // miscellaneous
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DITHER', CardinalSymbol, GL_DITHER));
-
-  // Add extensions
-  AddExtensionUnitSymbols(SymbolTable);
-
-  // ---------- GL procedures ----------
-
-  TGLPushAttrib.Create(SymbolTable, 'glPushAttrib', ['mask', 'Cardinal'], '');
-  TGLPopAttrib.Create(SymbolTable, 'glPopAttrib', [], '');
-  TGLPushClientAttrib.Create(SymbolTable, 'glPushClientAttrib', ['mask', 'Cardinal'], '');
-  TGLPopClientAttrib.Create(SymbolTable, 'glPopClientAttrib', [], '');
-
-  TGLEnable.Create(SymbolTable, 'glEnable', ['cap', 'Cardinal'], '');
-  TGLDisable.Create(SymbolTable, 'glDisable', ['cap', 'Cardinal'], '');
-  TGLEnableClientState.Create(SymbolTable, 'glEnableClientState', ['aarray', 'Cardinal'], '');
-  TGLDisableClientState.Create(SymbolTable, 'glDisableClientState', ['aarray', 'Cardinal'], '');
-
-  TGLMatrixMode.Create(SymbolTable, 'glMatrixMode', ['mode', 'Cardinal'], '');
-  TGLPushMatrix.Create(SymbolTable, 'glPushMatrix', [], '');
-  TGLPopMatrix.Create(SymbolTable, 'glPopMatrix', [], '');
-  TGLLoadIdentity.Create(SymbolTable, 'glLoadIdentity', [], '');
-  TGLLoadMatrixf.Create(SymbolTable, 'glLoadMatrixf', ['m', 'TMatrix'], '');
-  TGLTranslatef.Create(SymbolTable, 'glTranslatef', ['x', 'Float', 'y', 'Float', 'z', 'Float'], '');
-  TGLRotatef.Create(SymbolTable, 'glRotatef', ['angle', 'Float', 'x', 'Float', 'y', 'Float', 'z', 'Float'], '');
-  TGLScalef.Create(SymbolTable, 'glScalef', ['x', 'Float', 'y', 'Float', 'z', 'Float'], '');
-
-  TGLShadeModel.Create(SymbolTable, 'glShadeModel', ['mode', 'Cardinal'], '');
-  TGLCullFace.Create(SymbolTable, 'glCullFace', ['mode', 'Cardinal'], '');
-  TGLFrontFace.Create(SymbolTable, 'glFrontFace', ['mode', 'Cardinal'], '');
-  TGLPolygonMode.Create(SymbolTable, 'glPolygonMode', ['face', 'Cardinal', 'mode', 'Cardinal'], '');
-  TGLBegin.Create(SymbolTable, 'glBegin', ['mode', 'Cardinal'], '');
-  TGLEnd.Create(SymbolTable, 'glEnd', [], '');
-  TGLColor3f.Create(SymbolTable, 'glColor3f', ['red', 'Float', 'green', 'Float', 'blue', 'Float'], '');
-  TGLColor4f.Create(SymbolTable, 'glColor4f', ['red', 'Float', 'green', 'Float', 'blue', 'Float', 'alpha', 'Float'], '');
-  TGLNormal3f.Create(SymbolTable, 'glNormal3f', ['x', 'Float', 'y', 'Float', 'z', 'Float'], '');
-  TGLVertex3f.Create(SymbolTable, 'glVertex3f', ['x', 'Float', 'y', 'Float', 'z', 'Float'], '');
-  TGLTexCoord1f.Create(SymbolTable, 'glTexCoord1f', ['s', 'Float'], '');
-  TGLTexCoord2f.Create(SymbolTable, 'glTexCoord2f', ['s', 'Float', 't', 'Float'], '');
-  TGLTexCoord3f.Create(SymbolTable, 'glTexCoord3f', ['s', 'Float', 't', 'Float', 'r', 'Float'], '');
-  TGLTexCoord4f.Create(SymbolTable, 'glTexCoord4f', ['s', 'Float', 't', 'Float', 'r', 'Float', 'q', 'Float'], '');
-  TGLLineWidth.Create(SymbolTable, 'glLineWidth', ['width', 'Float'], '');
-
-  TGLMultiTexCoord1f.Create(SymbolTable, 'glMultiTexCoord1f', ['target', 'Cardinal', 's', 'Float'], '');
-  TGLMultiTexCoord2f.Create(SymbolTable, 'glMultiTexCoord2f', ['target', 'Cardinal', 's', 'Float', 't', 'Float'], '');
-  TGLMultiTexCoord3f.Create(SymbolTable, 'glMultiTexCoord3f', ['target', 'Cardinal', 's', 'Float', 't', 'Float', 'r', 'Float'], '');
-  TGLMultiTexCoord4f.Create(SymbolTable, 'glMultiTexCoord4f', ['target', 'Cardinal', 's', 'Float', 't', 'Float', 'r', 'Float', 'q', 'Float'], '');
-  TGLActiveTexture.Create(SymbolTable, 'glActiveTexture', ['target', 'Cardinal'], '');
-  TGLClientActiveTexture.Create(SymbolTable, 'glClientActiveTexture', ['target', 'Cardinal'], '');
-
-  TGLTexEnvf.Create(SymbolTable, 'glTexEnvf', ['target', 'Cardinal', 'pname', 'Cardinal', 'param', 'Float'], '');
-  TGLTexEnvi.Create(SymbolTable, 'glTexEnvi', ['target', 'Cardinal', 'pname', 'Cardinal', 'param', 'Integer'], '');
-
-  TGLBlendFunc.Create(SymbolTable, 'glBlendFunc', ['sfactor', 'Cardinal', 'dfactor', 'Cardinal'], '');
-
-  TGLDepthFunc.Create(SymbolTable, 'glDepthFunc', ['func', 'Cardinal'], '');
-  TGLDepthMask.Create(SymbolTable, 'glDepthMask', ['flag', 'Byte'], '');
-  TGLDepthRange.Create(SymbolTable, 'glDepthRange', ['znear', 'Float', 'zfar', 'Float'], '');
-
-  TGLStencilFunc.Create(SymbolTable, 'glStencilFunc', ['func', 'Cardinal', 'ref', 'Integer', 'mask', 'Cardinal'], '');
-  TGLStencilMask.Create(SymbolTable, 'glStencilMask', ['mask', 'Cardinal'], '');
-  TGLStencilOp.Create(SymbolTable, 'glStencilOp', ['fail', 'Cardinal', 'zfail', 'Cardinal', 'zpass', 'Cardinal'], '');
-
-  TGLLogicOp.Create(SymbolTable, 'glLogicOp', ['opcode', 'Cardinal'], '');
-end;
-
-procedure TdwsOpenGLUnit.AddExtensionUnitSymbols(SymbolTable: TSymbolTable);
-var
-  CardinalSymbol,
-  ByteSymbol : TSymbol;
-begin
-  CardinalSymbol:=SymbolTable.FindSymbol('Cardinal');
-  if not Assigned(CardinalSymbol) then 
-  begin
-    CardinalSymbol:=TBaseSymbol.Create('Cardinal', TypCardinalID, VarAsType(0, varLongWord));
-    SymbolTable.AddSymbol(CardinalSymbol);
-  end;
-
-  ByteSymbol:=SymbolTable.FindSymbol('Byte');
-  if not Assigned(ByteSymbol) then 
-  begin
-    ByteSymbol:=TBaseSymbol.Create('Byte', TypByteID, VarAsType(0, varByte));
-    SymbolTable.AddSymbol(ByteSymbol);
-  end;
-
-  // ---------- extensions enumerants ----------
-
-  // EXT_abgr
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ABGR_EXT', CardinalSymbol, GL_ABGR_EXT));
-
-  // EXT_packed_pixels
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_BYTE_3_3_2_EXT', CardinalSymbol, GL_UNSIGNED_BYTE_3_3_2_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_SHORT_4_4_4_4_EXT', CardinalSymbol, GL_UNSIGNED_SHORT_4_4_4_4_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_SHORT_5_5_5_1_EXT', CardinalSymbol, GL_UNSIGNED_SHORT_5_5_5_1_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_INT_8_8_8_8_EXT', CardinalSymbol, GL_UNSIGNED_INT_8_8_8_8_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_INT_10_10_10_2_EXT', CardinalSymbol, GL_UNSIGNED_INT_10_10_10_2_EXT));
-
-  // EXT_bgra
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BGR_EXT', CardinalSymbol, GL_BGR_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BGRA_EXT', CardinalSymbol, GL_BGRA_EXT));
-
-  // EXT_paletted_texture
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_INDEX1_EXT', CardinalSymbol, GL_COLOR_INDEX1_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_INDEX2_EXT', CardinalSymbol, GL_COLOR_INDEX2_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_INDEX4_EXT', CardinalSymbol, GL_COLOR_INDEX4_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_INDEX8_EXT', CardinalSymbol, GL_COLOR_INDEX8_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_INDEX12_EXT', CardinalSymbol, GL_COLOR_INDEX12_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_INDEX16_EXT', CardinalSymbol, GL_COLOR_INDEX16_EXT));
-
-  // EXT_blend_color
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONSTANT_COLOR_EXT', CardinalSymbol, GL_CONSTANT_COLOR_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ONE_MINUS_CONSTANT_COLOR_EXT', CardinalSymbol, GL_ONE_MINUS_CONSTANT_COLOR_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONSTANT_ALPHA_EXT', CardinalSymbol, GL_CONSTANT_ALPHA_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ONE_MINUS_CONSTANT_ALPHA_EXT', CardinalSymbol, GL_ONE_MINUS_CONSTANT_ALPHA_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLEND_COLOR_EXT', CardinalSymbol, GL_BLEND_COLOR_EXT));
-
-  // EXT_blend_minmax
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FUNC_ADD_EXT', CardinalSymbol, GL_FUNC_ADD_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MIN_EXT', CardinalSymbol, GL_MIN_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_EXT', CardinalSymbol, GL_MAX_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLEND_EQUATION_EXT', CardinalSymbol, GL_BLEND_EQUATION_EXT));
-
-  // EXT_blend_subtract
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FUNC_SUBTRACT_EXT', CardinalSymbol, GL_FUNC_SUBTRACT_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FUNC_REVERSE_SUBTRACT_EXT', CardinalSymbol, GL_FUNC_REVERSE_SUBTRACT_EXT));
-
-  // EXT_convolution
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_1D_EXT', CardinalSymbol, GL_CONVOLUTION_1D_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_2D_EXT', CardinalSymbol, GL_CONVOLUTION_2D_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SEPARABLE_2D_EXT', CardinalSymbol, GL_SEPARABLE_2D_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_BORDER_MODE_EXT', CardinalSymbol, GL_CONVOLUTION_BORDER_MODE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_FILTER_SCALE_EXT', CardinalSymbol, GL_CONVOLUTION_FILTER_SCALE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_FILTER_BIAS_EXT', CardinalSymbol, GL_CONVOLUTION_FILTER_BIAS_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_REDUCE_EXT', CardinalSymbol, GL_REDUCE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_FORMAT_EXT', CardinalSymbol, GL_CONVOLUTION_FORMAT_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_WIDTH_EXT', CardinalSymbol, GL_CONVOLUTION_WIDTH_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_HEIGHT_EXT', CardinalSymbol, GL_CONVOLUTION_HEIGHT_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_CONVOLUTION_WIDTH_EXT', CardinalSymbol, GL_MAX_CONVOLUTION_WIDTH_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_CONVOLUTION_HEIGHT_EXT', CardinalSymbol, GL_MAX_CONVOLUTION_HEIGHT_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_RED_SCALE_EXT', CardinalSymbol, GL_POST_CONVOLUTION_RED_SCALE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_GREEN_SCALE_EXT', CardinalSymbol, GL_POST_CONVOLUTION_GREEN_SCALE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_BLUE_SCALE_EXT', CardinalSymbol, GL_POST_CONVOLUTION_BLUE_SCALE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_ALPHA_SCALE_EXT', CardinalSymbol, GL_POST_CONVOLUTION_ALPHA_SCALE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_RED_BIAS_EXT', CardinalSymbol, GL_POST_CONVOLUTION_RED_BIAS_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_GREEN_BIAS_EXT', CardinalSymbol, GL_POST_CONVOLUTION_GREEN_BIAS_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_BLUE_BIAS_EXT', CardinalSymbol, GL_POST_CONVOLUTION_BLUE_BIAS_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_ALPHA_BIAS_EXT', CardinalSymbol, GL_POST_CONVOLUTION_ALPHA_BIAS_EXT));
-
-  // EXT_histogram
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_EXT', CardinalSymbol, GL_HISTOGRAM_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROXY_HISTOGRAM_EXT', CardinalSymbol, GL_PROXY_HISTOGRAM_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_WIDTH_EXT', CardinalSymbol, GL_HISTOGRAM_WIDTH_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_FORMAT_EXT', CardinalSymbol, GL_HISTOGRAM_FORMAT_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_RED_SIZE_EXT', CardinalSymbol, GL_HISTOGRAM_RED_SIZE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_GREEN_SIZE_EXT', CardinalSymbol, GL_HISTOGRAM_GREEN_SIZE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_BLUE_SIZE_EXT', CardinalSymbol, GL_HISTOGRAM_BLUE_SIZE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_ALPHA_SIZE_EXT', CardinalSymbol, GL_HISTOGRAM_ALPHA_SIZE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_LUMINANCE_SIZE_EXT', CardinalSymbol, GL_HISTOGRAM_LUMINANCE_SIZE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_SINK_EXT', CardinalSymbol, GL_HISTOGRAM_SINK_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MINMAX_EXT', CardinalSymbol, GL_MINMAX_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MINMAX_FORMAT_EXT', CardinalSymbol, GL_MINMAX_FORMAT_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MINMAX_SINK_EXT', CardinalSymbol, GL_MINMAX_SINK_EXT));
-
-  // EXT_polygon_offset
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_OFFSET_EXT', CardinalSymbol, GL_POLYGON_OFFSET_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_OFFSET_FACTOR_EXT', CardinalSymbol, GL_POLYGON_OFFSET_FACTOR_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_OFFSET_BIAS_EXT', CardinalSymbol, GL_POLYGON_OFFSET_BIAS_EXT));
-
-  // EXT_texture
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA4_EXT', CardinalSymbol, GL_ALPHA4_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA8_EXT', CardinalSymbol, GL_ALPHA8_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA12_EXT', CardinalSymbol, GL_ALPHA12_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA16_EXT', CardinalSymbol, GL_ALPHA16_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE4_EXT', CardinalSymbol, GL_LUMINANCE4_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE8_EXT', CardinalSymbol, GL_LUMINANCE8_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE12_EXT', CardinalSymbol, GL_LUMINANCE12_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE16_EXT', CardinalSymbol, GL_LUMINANCE16_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE4_ALPHA4_EXT', CardinalSymbol, GL_LUMINANCE4_ALPHA4_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE6_ALPHA2_EXT', CardinalSymbol, GL_LUMINANCE6_ALPHA2_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE8_ALPHA8_EXT', CardinalSymbol, GL_LUMINANCE8_ALPHA8_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE12_ALPHA4_EXT', CardinalSymbol, GL_LUMINANCE12_ALPHA4_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE12_ALPHA12_EXT', CardinalSymbol, GL_LUMINANCE12_ALPHA12_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE16_ALPHA16_EXT', CardinalSymbol, GL_LUMINANCE16_ALPHA16_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INTENSITY_EXT', CardinalSymbol, GL_INTENSITY_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INTENSITY4_EXT', CardinalSymbol, GL_INTENSITY4_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INTENSITY8_EXT', CardinalSymbol, GL_INTENSITY8_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INTENSITY12_EXT', CardinalSymbol, GL_INTENSITY12_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INTENSITY16_EXT', CardinalSymbol, GL_INTENSITY16_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB2_EXT', CardinalSymbol, GL_RGB2_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB4_EXT', CardinalSymbol, GL_RGB4_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB5_EXT', CardinalSymbol, GL_RGB5_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB8_EXT', CardinalSymbol, GL_RGB8_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB10_EXT', CardinalSymbol, GL_RGB10_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB12_EXT', CardinalSymbol, GL_RGB12_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB16_EXT', CardinalSymbol, GL_RGB16_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGBA2_EXT', CardinalSymbol, GL_RGBA2_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGBA4_EXT', CardinalSymbol, GL_RGBA4_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB5_A1_EXT', CardinalSymbol, GL_RGB5_A1_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGBA8_EXT', CardinalSymbol, GL_RGBA8_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB10_A2_EXT', CardinalSymbol, GL_RGB10_A2_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGBA12_EXT', CardinalSymbol, GL_RGBA12_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGBA16_EXT', CardinalSymbol, GL_RGBA16_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_RED_SIZE_EXT', CardinalSymbol, GL_TEXTURE_RED_SIZE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_GREEN_SIZE_EXT', CardinalSymbol, GL_TEXTURE_GREEN_SIZE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_BLUE_SIZE_EXT', CardinalSymbol, GL_TEXTURE_BLUE_SIZE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_ALPHA_SIZE_EXT', CardinalSymbol, GL_TEXTURE_ALPHA_SIZE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_LUMINANCE_SIZE_EXT', CardinalSymbol, GL_TEXTURE_LUMINANCE_SIZE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_INTENSITY_SIZE_EXT', CardinalSymbol, GL_TEXTURE_INTENSITY_SIZE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_REPLACE_EXT', CardinalSymbol, GL_REPLACE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROXY_TEXTURE_1D_EXT', CardinalSymbol, GL_PROXY_TEXTURE_1D_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROXY_TEXTURE_2D_EXT', CardinalSymbol, GL_PROXY_TEXTURE_2D_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_TOO_LARGE_EXT', CardinalSymbol, GL_TEXTURE_TOO_LARGE_EXT));
-
-  // EXT_texture_object
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_PRIORITY_EXT', CardinalSymbol, GL_TEXTURE_PRIORITY_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_RESIDENT_EXT', CardinalSymbol, GL_TEXTURE_RESIDENT_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_1D_BINDING_EXT', CardinalSymbol, GL_TEXTURE_1D_BINDING_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_2D_BINDING_EXT', CardinalSymbol, GL_TEXTURE_2D_BINDING_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_3D_BINDING_EXT', CardinalSymbol, GL_TEXTURE_3D_BINDING_EXT));
-
-  // EXT_texture3D
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PACK_SKIP_IMAGES_EXT', CardinalSymbol, GL_PACK_SKIP_IMAGES_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PACK_IMAGE_HEIGHT_EXT', CardinalSymbol, GL_PACK_IMAGE_HEIGHT_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNPACK_SKIP_IMAGES_EXT', CardinalSymbol, GL_UNPACK_SKIP_IMAGES_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNPACK_IMAGE_HEIGHT_EXT', CardinalSymbol, GL_UNPACK_IMAGE_HEIGHT_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_3D_EXT', CardinalSymbol, GL_TEXTURE_3D_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROXY_TEXTURE_3D_EXT', CardinalSymbol, GL_PROXY_TEXTURE_3D_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_DEPTH_EXT', CardinalSymbol, GL_TEXTURE_DEPTH_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_WRAP_R_EXT', CardinalSymbol, GL_TEXTURE_WRAP_R_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_3D_TEXTURE_SIZE_EXT', CardinalSymbol, GL_MAX_3D_TEXTURE_SIZE_EXT));
-
-  // SGI_color_matrix
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_MATRIX_SGI', CardinalSymbol, GL_COLOR_MATRIX_SGI));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_MATRIX_STACK_DEPTH_SGI', CardinalSymbol, GL_COLOR_MATRIX_STACK_DEPTH_SGI));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI', CardinalSymbol, GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_RED_SCALE_SGI', CardinalSymbol, GL_POST_COLOR_MATRIX_RED_SCALE_SGI));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI', CardinalSymbol, GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI', CardinalSymbol, GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI', CardinalSymbol, GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_RED_BIAS_SGI', CardinalSymbol, GL_POST_COLOR_MATRIX_RED_BIAS_SGI));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI', CardinalSymbol, GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI', CardinalSymbol, GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI', CardinalSymbol, GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI));
-
-  // ARB_point_parameters
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POINT_SIZE_MIN_ARB', CardinalSymbol, GL_POINT_SIZE_MIN_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POINT_SIZE_MAX_ARB', CardinalSymbol, GL_POINT_SIZE_MAX_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POINT_FADE_THRESHOLD_SIZE_ARB', CardinalSymbol, GL_POINT_FADE_THRESHOLD_SIZE_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DISTANCE_ATTENUATION_ARB', CardinalSymbol, GL_DISTANCE_ATTENUATION_ARB));
-
-  // EXT_rescale_normal
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RESCALE_NORMAL_EXT', CardinalSymbol, GL_RESCALE_NORMAL_EXT));
-
-  // EXT_shared_texture_palette
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SHARED_TEXTURE_PALETTE_EXT', CardinalSymbol, GL_SHARED_TEXTURE_PALETTE_EXT));
-
-  // EXT_compiled_vertex_array
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ARRAY_ELEMENT_LOCK_FIRST_EXT', CardinalSymbol, GL_ARRAY_ELEMENT_LOCK_FIRST_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ARRAY_ELEMENT_LOCK_COUNT_EXT', CardinalSymbol, GL_ARRAY_ELEMENT_LOCK_COUNT_EXT));
-
-  // ARB_multitexture
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ACTIVE_TEXTURE_ARB', CardinalSymbol, GL_ACTIVE_TEXTURE_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLIENT_ACTIVE_TEXTURE_ARB', CardinalSymbol, GL_CLIENT_ACTIVE_TEXTURE_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_TEXTURE_UNITS_ARB', CardinalSymbol, GL_MAX_TEXTURE_UNITS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE0_ARB', CardinalSymbol, GL_TEXTURE0_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE1_ARB', CardinalSymbol, GL_TEXTURE1_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE2_ARB', CardinalSymbol, GL_TEXTURE2_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE3_ARB', CardinalSymbol, GL_TEXTURE3_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE4_ARB', CardinalSymbol, GL_TEXTURE4_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE5_ARB', CardinalSymbol, GL_TEXTURE5_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE6_ARB', CardinalSymbol, GL_TEXTURE6_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE7_ARB', CardinalSymbol, GL_TEXTURE7_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE8_ARB', CardinalSymbol, GL_TEXTURE8_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE9_ARB', CardinalSymbol, GL_TEXTURE9_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE10_ARB', CardinalSymbol, GL_TEXTURE10_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE11_ARB', CardinalSymbol, GL_TEXTURE11_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE12_ARB', CardinalSymbol, GL_TEXTURE12_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE13_ARB', CardinalSymbol, GL_TEXTURE13_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE14_ARB', CardinalSymbol, GL_TEXTURE14_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE15_ARB', CardinalSymbol, GL_TEXTURE15_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE16_ARB', CardinalSymbol, GL_TEXTURE16_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE17_ARB', CardinalSymbol, GL_TEXTURE17_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE18_ARB', CardinalSymbol, GL_TEXTURE18_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE19_ARB', CardinalSymbol, GL_TEXTURE19_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE20_ARB', CardinalSymbol, GL_TEXTURE20_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE21_ARB', CardinalSymbol, GL_TEXTURE21_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE22_ARB', CardinalSymbol, GL_TEXTURE22_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE23_ARB', CardinalSymbol, GL_TEXTURE23_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE24_ARB', CardinalSymbol, GL_TEXTURE24_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE25_ARB', CardinalSymbol, GL_TEXTURE25_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE26_ARB', CardinalSymbol, GL_TEXTURE26_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE27_ARB', CardinalSymbol, GL_TEXTURE27_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE28_ARB', CardinalSymbol, GL_TEXTURE28_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE29_ARB', CardinalSymbol, GL_TEXTURE29_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE30_ARB', CardinalSymbol, GL_TEXTURE30_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE31_ARB', CardinalSymbol, GL_TEXTURE31_ARB));
-
-  // EXT_stencil_wrap
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INCR_WRAP_EXT', CardinalSymbol, GL_INCR_WRAP_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DECR_WRAP_EXT', CardinalSymbol, GL_DECR_WRAP_EXT));
-
-  // EXT_stencil_two_side
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STENCIL_TEST_TWO_SIDE_EXT', CardinalSymbol, GL_STENCIL_TEST_TWO_SIDE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ACTIVE_STENCIL_FACE_EXT', CardinalSymbol, GL_ACTIVE_STENCIL_FACE_EXT));
-
-  // NV_texgen_reflection
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NORMAL_MAP_NV', CardinalSymbol, GL_NORMAL_MAP_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_REFLECTION_MAP_NV', CardinalSymbol, GL_REFLECTION_MAP_NV));
-
-  // NV_fence
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALL_COMPLETED_NV', CardinalSymbol, GL_ALL_COMPLETED_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FENCE_STATUS_NV', CardinalSymbol, GL_FENCE_STATUS_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FENCE_CONDITION_NV', CardinalSymbol, GL_FENCE_CONDITION_NV));
-
-  // NV_occlusion_query
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_COUNTER_BITS_NV', CardinalSymbol, GL_PIXEL_COUNTER_BITS_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_OCCLUSION_QUERY_ID_NV', CardinalSymbol, GL_CURRENT_OCCLUSION_QUERY_ID_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_COUNT_NV', CardinalSymbol, GL_PIXEL_COUNT_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_COUNT_AVAILABLE_NV', CardinalSymbol, GL_PIXEL_COUNT_AVAILABLE_NV));
-
-  // NV_texture_rectangle
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_RECTANGLE_NV', CardinalSymbol, GL_TEXTURE_RECTANGLE_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_BINDING_RECTANGLE_NV', CardinalSymbol, GL_TEXTURE_BINDING_RECTANGLE_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROXY_TEXTURE_RECTANGLE_NV', CardinalSymbol, GL_PROXY_TEXTURE_RECTANGLE_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_RECTANGLE_TEXTURE_SIZE_NV', CardinalSymbol, GL_MAX_RECTANGLE_TEXTURE_SIZE_NV));
-
-  // EXT_texture_env_combine
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINE_EXT', CardinalSymbol, GL_COMBINE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINE_RGB_EXT', CardinalSymbol, GL_COMBINE_RGB_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINE_ALPHA_EXT', CardinalSymbol, GL_COMBINE_ALPHA_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB_SCALE_EXT', CardinalSymbol, GL_RGB_SCALE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ADD_SIGNED_EXT', CardinalSymbol, GL_ADD_SIGNED_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INTERPOLATE_EXT', CardinalSymbol, GL_INTERPOLATE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONSTANT_EXT', CardinalSymbol, GL_CONSTANT_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PRIMARY_COLOR_EXT', CardinalSymbol, GL_PRIMARY_COLOR_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PREVIOUS_EXT', CardinalSymbol, GL_PREVIOUS_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE0_RGB_EXT', CardinalSymbol, GL_SOURCE0_RGB_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE1_RGB_EXT', CardinalSymbol, GL_SOURCE1_RGB_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE2_RGB_EXT', CardinalSymbol, GL_SOURCE2_RGB_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE0_ALPHA_EXT', CardinalSymbol, GL_SOURCE0_ALPHA_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE1_ALPHA_EXT', CardinalSymbol, GL_SOURCE1_ALPHA_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE2_ALPHA_EXT', CardinalSymbol, GL_SOURCE2_ALPHA_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND0_RGB_EXT', CardinalSymbol, GL_OPERAND0_RGB_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND1_RGB_EXT', CardinalSymbol, GL_OPERAND1_RGB_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND2_RGB_EXT', CardinalSymbol, GL_OPERAND2_RGB_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND0_ALPHA_EXT', CardinalSymbol, GL_OPERAND0_ALPHA_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND1_ALPHA_EXT', CardinalSymbol, GL_OPERAND1_ALPHA_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND2_ALPHA_EXT', CardinalSymbol, GL_OPERAND2_ALPHA_EXT));
-
-  // ARB_texture_env_combine
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINE_ARB', CardinalSymbol, GL_COMBINE_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINE_RGB_ARB', CardinalSymbol, GL_COMBINE_RGB_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINE_ALPHA_ARB', CardinalSymbol, GL_COMBINE_ALPHA_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE0_RGB_ARB', CardinalSymbol, GL_SOURCE0_RGB_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE1_RGB_ARB', CardinalSymbol, GL_SOURCE1_RGB_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE2_RGB_ARB', CardinalSymbol, GL_SOURCE2_RGB_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE0_ALPHA_ARB', CardinalSymbol, GL_SOURCE0_ALPHA_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE1_ALPHA_ARB', CardinalSymbol, GL_SOURCE1_ALPHA_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE2_ALPHA_ARB', CardinalSymbol, GL_SOURCE2_ALPHA_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND0_RGB_ARB', CardinalSymbol, GL_OPERAND0_RGB_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND1_RGB_ARB', CardinalSymbol, GL_OPERAND1_RGB_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND2_RGB_ARB', CardinalSymbol, GL_OPERAND2_RGB_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND0_ALPHA_ARB', CardinalSymbol, GL_OPERAND0_ALPHA_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND1_ALPHA_ARB', CardinalSymbol, GL_OPERAND1_ALPHA_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND2_ALPHA_ARB', CardinalSymbol, GL_OPERAND2_ALPHA_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB_SCALE_ARB', CardinalSymbol, GL_RGB_SCALE_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ADD_SIGNED_ARB', CardinalSymbol, GL_ADD_SIGNED_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INTERPOLATE_ARB', CardinalSymbol, GL_INTERPOLATE_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SUBTRACT_ARB', CardinalSymbol, GL_SUBTRACT_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONSTANT_ARB', CardinalSymbol, GL_CONSTANT_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONSTANT_COLOR_ARB', CardinalSymbol, GL_CONSTANT_COLOR_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PRIMARY_COLOR_ARB', CardinalSymbol, GL_PRIMARY_COLOR_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PREVIOUS_ARB', CardinalSymbol, GL_PREVIOUS_ARB));
-
-  // ARB_texture_env_dot3
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DOT3_RGB_ARB', CardinalSymbol, GL_DOT3_RGB_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DOT3_RGBA_ARB', CardinalSymbol, GL_DOT3_RGBA_ARB));
-
-  // ARB_vertex_program
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_PROGRAM_ARB', CardinalSymbol, GL_VERTEX_PROGRAM_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_PROGRAM_POINT_SIZE_ARB', CardinalSymbol, GL_VERTEX_PROGRAM_POINT_SIZE_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_PROGRAM_TWO_SIDE_ARB', CardinalSymbol, GL_VERTEX_PROGRAM_TWO_SIDE_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_SUM_ARB', CardinalSymbol, GL_COLOR_SUM_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_FORMAT_ASCII_ARB', CardinalSymbol, GL_PROGRAM_FORMAT_ASCII_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_VERTEX_ATTRIB_ARB', CardinalSymbol, GL_CURRENT_VERTEX_ATTRIB_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_LENGTH_ARB', CardinalSymbol, GL_PROGRAM_LENGTH_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_FORMAT_ARB', CardinalSymbol, GL_PROGRAM_FORMAT_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_BINDING_ARB', CardinalSymbol, GL_PROGRAM_BINDING_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_INSTRUCTIONS_ARB', CardinalSymbol, GL_PROGRAM_INSTRUCTIONS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROGRAM_INSTRUCTIONS_ARB', CardinalSymbol, GL_MAX_PROGRAM_INSTRUCTIONS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB', CardinalSymbol, GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB', CardinalSymbol, GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_TEMPORARIES_ARB', CardinalSymbol, GL_PROGRAM_TEMPORARIES_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROGRAM_TEMPORARIES_ARB', CardinalSymbol, GL_MAX_PROGRAM_TEMPORARIES_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_NATIVE_TEMPORARIES_ARB', CardinalSymbol, GL_PROGRAM_NATIVE_TEMPORARIES_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB', CardinalSymbol, GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_PARAMETERS_ARB', CardinalSymbol, GL_PROGRAM_PARAMETERS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROGRAM_PARAMETERS_ARB', CardinalSymbol, GL_MAX_PROGRAM_PARAMETERS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_NATIVE_PARAMETERS_ARB', CardinalSymbol, GL_PROGRAM_NATIVE_PARAMETERS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB', CardinalSymbol, GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_ATTRIBS_ARB', CardinalSymbol, GL_PROGRAM_ATTRIBS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROGRAM_ATTRIBS_ARB', CardinalSymbol, GL_MAX_PROGRAM_ATTRIBS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_NATIVE_ATTRIBS_ARB', CardinalSymbol, GL_PROGRAM_NATIVE_ATTRIBS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB', CardinalSymbol, GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_ADDRESS_REGISTERS_ARB', CardinalSymbol, GL_PROGRAM_ADDRESS_REGISTERS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB', CardinalSymbol, GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB', CardinalSymbol, GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB', CardinalSymbol, GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB', CardinalSymbol, GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROGRAM_ENV_PARAMETERS_ARB', CardinalSymbol, GL_MAX_PROGRAM_ENV_PARAMETERS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB', CardinalSymbol, GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_STRING_ARB', CardinalSymbol, GL_PROGRAM_STRING_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_ERROR_POSITION_ARB', CardinalSymbol, GL_PROGRAM_ERROR_POSITION_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_MATRIX_ARB', CardinalSymbol, GL_CURRENT_MATRIX_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TRANSPOSE_CURRENT_MATRIX_ARB', CardinalSymbol, GL_TRANSPOSE_CURRENT_MATRIX_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_MATRIX_STACK_DEPTH_ARB', CardinalSymbol, GL_CURRENT_MATRIX_STACK_DEPTH_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_VERTEX_ATTRIBS_ARB', CardinalSymbol, GL_MAX_VERTEX_ATTRIBS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROGRAM_MATRICES_ARB', CardinalSymbol, GL_MAX_PROGRAM_MATRICES_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB', CardinalSymbol, GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_ERROR_STRING_ARB', CardinalSymbol, GL_PROGRAM_ERROR_STRING_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX0_ARB', CardinalSymbol, GL_MATRIX0_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX1_ARB', CardinalSymbol, GL_MATRIX1_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX2_ARB', CardinalSymbol, GL_MATRIX2_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX3_ARB', CardinalSymbol, GL_MATRIX3_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX4_ARB', CardinalSymbol, GL_MATRIX4_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX5_ARB', CardinalSymbol, GL_MATRIX5_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX6_ARB', CardinalSymbol, GL_MATRIX6_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX7_ARB', CardinalSymbol, GL_MATRIX7_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX8_ARB', CardinalSymbol, GL_MATRIX8_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX9_ARB', CardinalSymbol, GL_MATRIX9_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX10_ARB', CardinalSymbol, GL_MATRIX10_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX11_ARB', CardinalSymbol, GL_MATRIX11_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX12_ARB', CardinalSymbol, GL_MATRIX12_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX13_ARB', CardinalSymbol, GL_MATRIX13_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX14_ARB', CardinalSymbol, GL_MATRIX14_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX15_ARB', CardinalSymbol, GL_MATRIX15_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX16_ARB', CardinalSymbol, GL_MATRIX16_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX17_ARB', CardinalSymbol, GL_MATRIX17_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX18_ARB', CardinalSymbol, GL_MATRIX18_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX19_ARB', CardinalSymbol, GL_MATRIX19_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX20_ARB', CardinalSymbol, GL_MATRIX20_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX21_ARB', CardinalSymbol, GL_MATRIX21_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX22_ARB', CardinalSymbol, GL_MATRIX22_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX23_ARB', CardinalSymbol, GL_MATRIX23_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX24_ARB', CardinalSymbol, GL_MATRIX24_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX25_ARB', CardinalSymbol, GL_MATRIX25_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX26_ARB', CardinalSymbol, GL_MATRIX26_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX27_ARB', CardinalSymbol, GL_MATRIX27_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX28_ARB', CardinalSymbol, GL_MATRIX28_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX29_ARB', CardinalSymbol, GL_MATRIX29_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX30_ARB', CardinalSymbol, GL_MATRIX30_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX31_ARB', CardinalSymbol, GL_MATRIX31_ARB));
-
-  // ARB_vertex_buffer_object
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ARRAY_BUFFER_ARB', CardinalSymbol, GL_ARRAY_BUFFER_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ELEMENT_ARRAY_BUFFER_ARB', CardinalSymbol, GL_ELEMENT_ARRAY_BUFFER_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ARRAY_BUFFER_BINDING_ARB', CardinalSymbol, GL_ARRAY_BUFFER_BINDING_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB', CardinalSymbol, GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ARRAY_BUFFER_BINDING_ARB', CardinalSymbol, GL_VERTEX_ARRAY_BUFFER_BINDING_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NORMAL_ARRAY_BUFFER_BINDING_ARB', CardinalSymbol, GL_NORMAL_ARRAY_BUFFER_BINDING_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_ARRAY_BUFFER_BINDING_ARB', CardinalSymbol, GL_COLOR_ARRAY_BUFFER_BINDING_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INDEX_ARRAY_BUFFER_BINDING_ARB', CardinalSymbol, GL_INDEX_ARRAY_BUFFER_BINDING_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB', CardinalSymbol, GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB', CardinalSymbol, GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB', CardinalSymbol, GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB', CardinalSymbol, GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB', CardinalSymbol, GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STREAM_DRAW_ARB', CardinalSymbol, GL_STREAM_DRAW_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STREAM_READ_ARB', CardinalSymbol, GL_STREAM_READ_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STREAM_COPY_ARB', CardinalSymbol, GL_STREAM_COPY_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STATIC_DRAW_ARB', CardinalSymbol, GL_STATIC_DRAW_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STATIC_READ_ARB', CardinalSymbol, GL_STATIC_READ_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STATIC_COPY_ARB', CardinalSymbol, GL_STATIC_COPY_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DYNAMIC_DRAW_ARB', CardinalSymbol, GL_DYNAMIC_DRAW_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DYNAMIC_READ_ARB', CardinalSymbol, GL_DYNAMIC_READ_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DYNAMIC_COPY_ARB', CardinalSymbol, GL_DYNAMIC_COPY_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_READ_ONLY_ARB', CardinalSymbol, GL_READ_ONLY_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_WRITE_ONLY_ARB', CardinalSymbol, GL_WRITE_ONLY_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_READ_WRITE_ARB', CardinalSymbol, GL_READ_WRITE_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BUFFER_SIZE_ARB', CardinalSymbol, GL_BUFFER_SIZE_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BUFFER_USAGE_ARB', CardinalSymbol, GL_BUFFER_USAGE_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BUFFER_ACCESS_ARB', CardinalSymbol, GL_BUFFER_ACCESS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BUFFER_MAPPED_ARB', CardinalSymbol, GL_BUFFER_MAPPED_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BUFFER_MAP_POINTER_ARB', CardinalSymbol, GL_BUFFER_MAP_POINTER_ARB));
-
-  // ARB_shader_objects
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_OBJECT_ARB', CardinalSymbol, GL_PROGRAM_OBJECT_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_TYPE_ARB', CardinalSymbol, GL_OBJECT_TYPE_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_SUBTYPE_ARB', CardinalSymbol, GL_OBJECT_SUBTYPE_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_DELETE_STATUS_ARB', CardinalSymbol, GL_OBJECT_DELETE_STATUS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_COMPILE_STATUS_ARB', CardinalSymbol, GL_OBJECT_COMPILE_STATUS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_LINK_STATUS_ARB', CardinalSymbol, GL_OBJECT_LINK_STATUS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_VALIDATE_STATUS_ARB', CardinalSymbol, GL_OBJECT_VALIDATE_STATUS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_INFO_LOG_LENGTH_ARB', CardinalSymbol, GL_OBJECT_INFO_LOG_LENGTH_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_ATTACHED_OBJECTS_ARB', CardinalSymbol, GL_OBJECT_ATTACHED_OBJECTS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_ACTIVE_UNIFORMS_ARB', CardinalSymbol, GL_OBJECT_ACTIVE_UNIFORMS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB', CardinalSymbol, GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_SHADER_SOURCE_LENGTH_ARB', CardinalSymbol, GL_OBJECT_SHADER_SOURCE_LENGTH_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SHADER_OBJECT_ARB', CardinalSymbol, GL_SHADER_OBJECT_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FLOAT_VEC2_ARB', CardinalSymbol, GL_FLOAT_VEC2_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FLOAT_VEC3_ARB', CardinalSymbol, GL_FLOAT_VEC3_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FLOAT_VEC4_ARB', CardinalSymbol, GL_FLOAT_VEC4_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INT_VEC2_ARB', CardinalSymbol, GL_INT_VEC2_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INT_VEC3_ARB', CardinalSymbol, GL_INT_VEC3_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INT_VEC4_ARB', CardinalSymbol, GL_INT_VEC4_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BOOL_ARB', CardinalSymbol, GL_BOOL_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BOOL_VEC2_ARB', CardinalSymbol, GL_BOOL_VEC2_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BOOL_VEC3_ARB', CardinalSymbol, GL_BOOL_VEC3_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BOOL_VEC4_ARB', CardinalSymbol, GL_BOOL_VEC4_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FLOAT_MAT2_ARB', CardinalSymbol, GL_FLOAT_MAT2_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FLOAT_MAT3_ARB', CardinalSymbol, GL_FLOAT_MAT3_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FLOAT_MAT4_ARB', CardinalSymbol, GL_FLOAT_MAT4_ARB));
-
-  // ARB_vertex_shader
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_SHADER_ARB', CardinalSymbol, GL_VERTEX_SHADER_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB', CardinalSymbol, GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_VARYING_FLOATS_ARB', CardinalSymbol, GL_MAX_VARYING_FLOATS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB', CardinalSymbol, GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB', CardinalSymbol, GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_ACTIVE_ATTRIBUTES_ARB', CardinalSymbol, GL_OBJECT_ACTIVE_ATTRIBUTES_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB', CardinalSymbol, GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB));
-
-  // ARB_fragment_shader
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FRAGMENT_SHADER_ARB', CardinalSymbol, GL_FRAGMENT_SHADER_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB', CardinalSymbol, GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB));
-
-  // ARB_fragment_program
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FRAGMENT_PROGRAM_ARB', CardinalSymbol, GL_FRAGMENT_PROGRAM_ARB));
-
-  // NV_texture_env_combine4
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINE4_NV', CardinalSymbol, GL_COMBINE4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE3_RGB_NV', CardinalSymbol, GL_SOURCE3_RGB_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE3_ALPHA_NV', CardinalSymbol, GL_SOURCE3_ALPHA_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND3_RGB_NV', CardinalSymbol, GL_OPERAND3_RGB_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND3_ALPHA_NV', CardinalSymbol, GL_OPERAND3_ALPHA_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLEND_EQUATION', CardinalSymbol, GL_BLEND_EQUATION));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TABLE_TOO_LARGE', CardinalSymbol, GL_TABLE_TOO_LARGE));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_BYTE_3_3_2', CardinalSymbol, GL_UNSIGNED_BYTE_3_3_2));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_SHORT_4_4_4_4', CardinalSymbol, GL_UNSIGNED_SHORT_4_4_4_4));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_SHORT_5_5_5_1', CardinalSymbol, GL_UNSIGNED_SHORT_5_5_5_1));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_INT_8_8_8_8', CardinalSymbol, GL_UNSIGNED_INT_8_8_8_8));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_INT_10_10_10_2', CardinalSymbol, GL_UNSIGNED_INT_10_10_10_2));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_BYTE_2_3_3_REV', CardinalSymbol, GL_UNSIGNED_BYTE_2_3_3_REV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_SHORT_5_6_5', CardinalSymbol, GL_UNSIGNED_SHORT_5_6_5));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_SHORT_5_6_5_REV', CardinalSymbol, GL_UNSIGNED_SHORT_5_6_5_REV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_SHORT_4_4_4_4_REV', CardinalSymbol, GL_UNSIGNED_SHORT_4_4_4_4_REV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_SHORT_1_5_5_5_REV', CardinalSymbol, GL_UNSIGNED_SHORT_1_5_5_5_REV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_INT_8_8_8_8_REV', CardinalSymbol, GL_UNSIGNED_INT_8_8_8_8_REV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_INT_2_10_10_10_REV', CardinalSymbol, GL_UNSIGNED_INT_2_10_10_10_REV));
-
-  // GL_ARB_transpose_matrix
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TRANSPOSE_MODELVIEW_MATRIX_ARB', CardinalSymbol, GL_TRANSPOSE_MODELVIEW_MATRIX_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TRANSPOSE_PROJECTION_MATRIX_ARB', CardinalSymbol, GL_TRANSPOSE_PROJECTION_MATRIX_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TRANSPOSE_TEXTURE_MATRIX_ARB', CardinalSymbol, GL_TRANSPOSE_TEXTURE_MATRIX_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TRANSPOSE_COLOR_MATRIX_ARB', CardinalSymbol, GL_TRANSPOSE_COLOR_MATRIX_ARB));
-
-  // GL_ARB_multisample
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MULTISAMPLE_ARB', CardinalSymbol, GL_MULTISAMPLE_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_ALPHA_TO_COVERAGE_ARB', CardinalSymbol, GL_SAMPLE_ALPHA_TO_COVERAGE_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_ALPHA_TO_ONE_ARB', CardinalSymbol, GL_SAMPLE_ALPHA_TO_ONE_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_COVERAGE_ARB', CardinalSymbol, GL_SAMPLE_COVERAGE_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_BUFFERS_ARB', CardinalSymbol, GL_SAMPLE_BUFFERS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLES_ARB', CardinalSymbol, GL_SAMPLES_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_COVERAGE_VALUE_ARB', CardinalSymbol, GL_SAMPLE_COVERAGE_VALUE_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_COVERAGE_INVERT_ARB', CardinalSymbol, GL_SAMPLE_COVERAGE_INVERT_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MULTISAMPLE_BIT_ARB', CardinalSymbol, GL_MULTISAMPLE_BIT_ARB));
-
-  // GL_ARB_depth_texture
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH_COMPONENT16_ARB', CardinalSymbol, GL_DEPTH_COMPONENT16_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH_COMPONENT24_ARB', CardinalSymbol, GL_DEPTH_COMPONENT24_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH_COMPONENT32_ARB', CardinalSymbol, GL_DEPTH_COMPONENT32_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_DEPTH_SIZE_ARB', CardinalSymbol, GL_TEXTURE_DEPTH_SIZE_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH_TEXTURE_MODE_ARB', CardinalSymbol, GL_DEPTH_TEXTURE_MODE_ARB));
-
-  // GL_ARB_shadow
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COMPARE_MODE_ARB', CardinalSymbol, GL_TEXTURE_COMPARE_MODE_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COMPARE_FUNC_ARB', CardinalSymbol, GL_TEXTURE_COMPARE_FUNC_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPARE_R_TO_TEXTURE_ARB', CardinalSymbol, GL_COMPARE_R_TO_TEXTURE_ARB));
-
-  // GL_ARB_texture_cube_map
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NORMAL_MAP_ARB', CardinalSymbol, GL_NORMAL_MAP_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_REFLECTION_MAP_ARB', CardinalSymbol, GL_REFLECTION_MAP_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_CUBE_MAP_ARB', CardinalSymbol, GL_TEXTURE_CUBE_MAP_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_BINDING_CUBE_MAP_ARB', CardinalSymbol, GL_TEXTURE_BINDING_CUBE_MAP_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB', CardinalSymbol, GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB', CardinalSymbol, GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB', CardinalSymbol, GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB', CardinalSymbol, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB', CardinalSymbol, GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB', CardinalSymbol, GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROXY_TEXTURE_CUBE_MAP_ARB', CardinalSymbol, GL_PROXY_TEXTURE_CUBE_MAP_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB', CardinalSymbol, GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB));
-
-  // GL_ARB_texture_border_clamp
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLAMP_TO_BORDER_ARB', CardinalSymbol, GL_CLAMP_TO_BORDER_ARB));
-
-  // GL_ARB_texture_compression
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPRESSED_ALPHA_ARB', CardinalSymbol, GL_COMPRESSED_ALPHA_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPRESSED_LUMINANCE_ARB', CardinalSymbol, GL_COMPRESSED_LUMINANCE_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPRESSED_LUMINANCE_ALPHA_ARB', CardinalSymbol, GL_COMPRESSED_LUMINANCE_ALPHA_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPRESSED_INTENSITY_ARB', CardinalSymbol, GL_COMPRESSED_INTENSITY_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPRESSED_RGB_ARB', CardinalSymbol, GL_COMPRESSED_RGB_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPRESSED_RGBA_ARB', CardinalSymbol, GL_COMPRESSED_RGBA_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COMPRESSION_HINT_ARB', CardinalSymbol, GL_TEXTURE_COMPRESSION_HINT_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB', CardinalSymbol, GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COMPRESSED_ARB', CardinalSymbol, GL_TEXTURE_COMPRESSED_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB', CardinalSymbol, GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPRESSED_TEXTURE_FORMATS_ARB', CardinalSymbol, GL_COMPRESSED_TEXTURE_FORMATS_ARB));
-
-  // GL_ARB_vertex_blend
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_VERTEX_UNITS_ARB', CardinalSymbol, GL_MAX_VERTEX_UNITS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ACTIVE_VERTEX_UNITS_ARB', CardinalSymbol, GL_ACTIVE_VERTEX_UNITS_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_WEIGHT_SUM_UNITY_ARB', CardinalSymbol, GL_WEIGHT_SUM_UNITY_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_BLEND_ARB', CardinalSymbol, GL_VERTEX_BLEND_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_WEIGHT_ARB', CardinalSymbol, GL_CURRENT_WEIGHT_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_WEIGHT_ARRAY_TYPE_ARB', CardinalSymbol, GL_WEIGHT_ARRAY_TYPE_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_WEIGHT_ARRAY_STRIDE_ARB', CardinalSymbol, GL_WEIGHT_ARRAY_STRIDE_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_WEIGHT_ARRAY_SIZE_ARB', CardinalSymbol, GL_WEIGHT_ARRAY_SIZE_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_WEIGHT_ARRAY_POINTER_ARB', CardinalSymbol, GL_WEIGHT_ARRAY_POINTER_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_WEIGHT_ARRAY_ARB', CardinalSymbol, GL_WEIGHT_ARRAY_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW0_ARB', CardinalSymbol, GL_MODELVIEW0_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW1_ARB', CardinalSymbol, GL_MODELVIEW1_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW2_ARB', CardinalSymbol, GL_MODELVIEW2_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW3_ARB', CardinalSymbol, GL_MODELVIEW3_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW4_ARB', CardinalSymbol, GL_MODELVIEW4_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW5_ARB', CardinalSymbol, GL_MODELVIEW5_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW6_ARB', CardinalSymbol, GL_MODELVIEW6_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW7_ARB', CardinalSymbol, GL_MODELVIEW7_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW8_ARB', CardinalSymbol, GL_MODELVIEW8_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW9_ARB', CardinalSymbol, GL_MODELVIEW9_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW10_ARB', CardinalSymbol, GL_MODELVIEW10_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW11_ARB', CardinalSymbol, GL_MODELVIEW11_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW12_ARB', CardinalSymbol, GL_MODELVIEW12_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW13_ARB', CardinalSymbol, GL_MODELVIEW13_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW14_ARB', CardinalSymbol, GL_MODELVIEW14_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW15_ARB', CardinalSymbol, GL_MODELVIEW15_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW16_ARB', CardinalSymbol, GL_MODELVIEW16_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW17_ARB', CardinalSymbol, GL_MODELVIEW17_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW18_ARB', CardinalSymbol, GL_MODELVIEW18_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW19_ARB', CardinalSymbol, GL_MODELVIEW19_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW20_ARB', CardinalSymbol, GL_MODELVIEW20_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW21_ARB', CardinalSymbol, GL_MODELVIEW21_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW22_ARB', CardinalSymbol, GL_MODELVIEW22_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW23_ARB', CardinalSymbol, GL_MODELVIEW23_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW24_ARB', CardinalSymbol, GL_MODELVIEW24_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW25_ARB', CardinalSymbol, GL_MODELVIEW25_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW26_ARB', CardinalSymbol, GL_MODELVIEW26_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW27_ARB', CardinalSymbol, GL_MODELVIEW27_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW28_ARB', CardinalSymbol, GL_MODELVIEW28_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW29_ARB', CardinalSymbol, GL_MODELVIEW29_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW30_ARB', CardinalSymbol, GL_MODELVIEW30_ARB));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW31_ARB', CardinalSymbol, GL_MODELVIEW31_ARB));
-
-  // GL_SGIS_texture_lod
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_MIN_LOD_SGIS', CardinalSymbol, GL_TEXTURE_MIN_LOD_SGIS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_MAX_LOD_SGIS', CardinalSymbol, GL_TEXTURE_MAX_LOD_SGIS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_BASE_LEVEL_SGIS', CardinalSymbol, GL_TEXTURE_BASE_LEVEL_SGIS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_MAX_LEVEL_SGIS', CardinalSymbol, GL_TEXTURE_MAX_LEVEL_SGIS));
-
-  // GL_SGIS_multisample
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MULTISAMPLE_SGIS', CardinalSymbol, GL_MULTISAMPLE_SGIS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_ALPHA_TO_MASK_SGIS', CardinalSymbol, GL_SAMPLE_ALPHA_TO_MASK_SGIS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_ALPHA_TO_ONE_SGIS', CardinalSymbol, GL_SAMPLE_ALPHA_TO_ONE_SGIS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_MASK_SGIS', CardinalSymbol, GL_SAMPLE_MASK_SGIS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_1PASS_SGIS', CardinalSymbol, GL_1PASS_SGIS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_2PASS_0_SGIS', CardinalSymbol, GL_2PASS_0_SGIS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_2PASS_1_SGIS', CardinalSymbol, GL_2PASS_1_SGIS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_4PASS_0_SGIS', CardinalSymbol, GL_4PASS_0_SGIS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_4PASS_1_SGIS', CardinalSymbol, GL_4PASS_1_SGIS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_4PASS_2_SGIS', CardinalSymbol, GL_4PASS_2_SGIS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_4PASS_3_SGIS', CardinalSymbol, GL_4PASS_3_SGIS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_BUFFERS_SGIS', CardinalSymbol, GL_SAMPLE_BUFFERS_SGIS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLES_SGIS', CardinalSymbol, GL_SAMPLES_SGIS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_MASK_VALUE_SGIS', CardinalSymbol, GL_SAMPLE_MASK_VALUE_SGIS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_MASK_INVERT_SGIS', CardinalSymbol, GL_SAMPLE_MASK_INVERT_SGIS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_PATTERN_SGIS', CardinalSymbol, GL_SAMPLE_PATTERN_SGIS));
-
-  // GL_SGIS_generate_mipmap
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_GENERATE_MIPMAP_SGIS', CardinalSymbol, GL_GENERATE_MIPMAP_SGIS));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_GENERATE_MIPMAP_HINT_SGIS', CardinalSymbol, GL_GENERATE_MIPMAP_HINT_SGIS));
-
-  // GL_SGIX_shadow
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COMPARE_SGIX', CardinalSymbol, GL_TEXTURE_COMPARE_SGIX));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COMPARE_OPERATOR_SGIX', CardinalSymbol, GL_TEXTURE_COMPARE_OPERATOR_SGIX));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_LEQUAL_R_SGIX', CardinalSymbol, GL_TEXTURE_LEQUAL_R_SGIX));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_GEQUAL_R_SGIX', CardinalSymbol, GL_TEXTURE_GEQUAL_R_SGIX));
-
-  // GL_SGIS_texture_edge_clamp
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLAMP_TO_EDGE_SGIS', CardinalSymbol, GL_CLAMP_TO_EDGE_SGIS));
-
-  // GL_SGIS_texture_border_clamp
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLAMP_TO_BORDER_SGIS', CardinalSymbol, GL_CLAMP_TO_BORDER_SGIS));
-
-  // GL_EXT_paletted_texture
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_INDEX_SIZE_EXT', CardinalSymbol, GL_TEXTURE_INDEX_SIZE_EXT));
-
-  // GL_SGIX_shadow_ambient
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SHADOW_AMBIENT_SGIX', CardinalSymbol, GL_SHADOW_AMBIENT_SGIX));
-
-  // GL_IBM_rasterpos_clip
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RASTER_POSITION_UNCLIPPED_IBM', CardinalSymbol, GL_RASTER_POSITION_UNCLIPPED_IBM));
-
-  // GL_EXT_draw_range_elements
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_ELEMENTS_VERTICES_EXT', CardinalSymbol, GL_MAX_ELEMENTS_VERTICES_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_ELEMENTS_INDICES_EXT', CardinalSymbol, GL_MAX_ELEMENTS_INDICES_EXT));
-
-  // GL_HP_occlusion_test
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OCCLUSION_TEST_HP', CardinalSymbol, GL_OCCLUSION_TEST_HP));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OCCLUSION_TEST_RESULT_HP', CardinalSymbol, GL_OCCLUSION_TEST_RESULT_HP));
-
-  // GL_EXT_separate_specular_color
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHT_MODEL_COLOR_CONTROL_EXT', CardinalSymbol, GL_LIGHT_MODEL_COLOR_CONTROL_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SINGLE_COLOR_EXT', CardinalSymbol, GL_SINGLE_COLOR_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SEPARATE_SPECULAR_COLOR_EXT', CardinalSymbol, GL_SEPARATE_SPECULAR_COLOR_EXT));
-
-  // GL_EXT_secondary_color
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_SUM_EXT', CardinalSymbol, GL_COLOR_SUM_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_SECONDARY_COLOR_EXT', CardinalSymbol, GL_CURRENT_SECONDARY_COLOR_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SECONDARY_COLOR_ARRAY_SIZE_EXT', CardinalSymbol, GL_SECONDARY_COLOR_ARRAY_SIZE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SECONDARY_COLOR_ARRAY_TYPE_EXT', CardinalSymbol, GL_SECONDARY_COLOR_ARRAY_TYPE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT', CardinalSymbol, GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SECONDARY_COLOR_ARRAY_POINTER_EXT', CardinalSymbol, GL_SECONDARY_COLOR_ARRAY_POINTER_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SECONDARY_COLOR_ARRAY_EXT', CardinalSymbol, GL_SECONDARY_COLOR_ARRAY_EXT));
-
-  // GL_EXT_fog_coord
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_COORDINATE_SOURCE_EXT', CardinalSymbol, GL_FOG_COORDINATE_SOURCE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_COORDINATE_EXT', CardinalSymbol, GL_FOG_COORDINATE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FRAGMENT_DEPTH_EXT', CardinalSymbol, GL_FRAGMENT_DEPTH_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_FOG_COORDINATE_EXT', CardinalSymbol, GL_CURRENT_FOG_COORDINATE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_COORDINATE_ARRAY_TYPE_EXT', CardinalSymbol, GL_FOG_COORDINATE_ARRAY_TYPE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_COORDINATE_ARRAY_STRIDE_EXT', CardinalSymbol, GL_FOG_COORDINATE_ARRAY_STRIDE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_COORDINATE_ARRAY_POINTER_EXT', CardinalSymbol, GL_FOG_COORDINATE_ARRAY_POINTER_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_COORDINATE_ARRAY_EXT', CardinalSymbol, GL_FOG_COORDINATE_ARRAY_EXT));
-
-  // GL_EXT_texture_env_combine
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE3_RGB_EXT', CardinalSymbol, GL_SOURCE3_RGB_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE4_RGB_EXT', CardinalSymbol, GL_SOURCE4_RGB_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE5_RGB_EXT', CardinalSymbol, GL_SOURCE5_RGB_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE6_RGB_EXT', CardinalSymbol, GL_SOURCE6_RGB_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE7_RGB_EXT', CardinalSymbol, GL_SOURCE7_RGB_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE3_ALPHA_EXT', CardinalSymbol, GL_SOURCE3_ALPHA_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE4_ALPHA_EXT', CardinalSymbol, GL_SOURCE4_ALPHA_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE5_ALPHA_EXT', CardinalSymbol, GL_SOURCE5_ALPHA_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE6_ALPHA_EXT', CardinalSymbol, GL_SOURCE6_ALPHA_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE7_ALPHA_EXT', CardinalSymbol, GL_SOURCE7_ALPHA_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND3_RGB_EXT', CardinalSymbol, GL_OPERAND3_RGB_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND4_RGB_EXT', CardinalSymbol, GL_OPERAND4_RGB_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND5_RGB_EXT', CardinalSymbol, GL_OPERAND5_RGB_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND6_RGB_EXT', CardinalSymbol, GL_OPERAND6_RGB_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND7_RGB_EXT', CardinalSymbol, GL_OPERAND7_RGB_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND3_ALPHA_EXT', CardinalSymbol, GL_OPERAND3_ALPHA_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND4_ALPHA_EXT', CardinalSymbol, GL_OPERAND4_ALPHA_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND5_ALPHA_EXT', CardinalSymbol, GL_OPERAND5_ALPHA_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND6_ALPHA_EXT', CardinalSymbol, GL_OPERAND6_ALPHA_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND7_ALPHA_EXT', CardinalSymbol, GL_OPERAND7_ALPHA_EXT));
-
-  // GL_EXT_blend_func_separate
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLEND_DST_RGB_EXT', CardinalSymbol, GL_BLEND_DST_RGB_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLEND_SRC_RGB_EXT', CardinalSymbol, GL_BLEND_SRC_RGB_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLEND_DST_ALPHA_EXT', CardinalSymbol, GL_BLEND_DST_ALPHA_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLEND_SRC_ALPHA_EXT', CardinalSymbol, GL_BLEND_SRC_ALPHA_EXT));
-
-  // GL_EXT_texture_cube_map
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NORMAL_MAP_EXT', CardinalSymbol, GL_NORMAL_MAP_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_REFLECTION_MAP_EXT', CardinalSymbol, GL_REFLECTION_MAP_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_CUBE_MAP_EXT', CardinalSymbol, GL_TEXTURE_CUBE_MAP_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_BINDING_CUBE_MAP_EXT', CardinalSymbol, GL_TEXTURE_BINDING_CUBE_MAP_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT', CardinalSymbol, GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT', CardinalSymbol, GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT', CardinalSymbol, GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT', CardinalSymbol, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT', CardinalSymbol, GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT', CardinalSymbol, GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROXY_TEXTURE_CUBE_MAP_EXT', CardinalSymbol, GL_PROXY_TEXTURE_CUBE_MAP_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT', CardinalSymbol, GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT));
-
-  // GL_EXT_texture_lod_bias
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_TEXTURE_LOD_BIAS_EXT', CardinalSymbol, GL_MAX_TEXTURE_LOD_BIAS_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_FILTER_CONTROL_EXT', CardinalSymbol, GL_TEXTURE_FILTER_CONTROL_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_LOD_BIAS_EXT', CardinalSymbol, GL_TEXTURE_LOD_BIAS_EXT));
-
-  // GL_EXT_texture_filter_anisotropic
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_MAX_ANISOTROPY_EXT', CardinalSymbol, GL_TEXTURE_MAX_ANISOTROPY_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT', CardinalSymbol, GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT));
-
-  // GL_NV_light_max_exponent
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_SHININESS_NV', CardinalSymbol, GL_MAX_SHININESS_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_SPOT_EXPONENT_NV', CardinalSymbol, GL_MAX_SPOT_EXPONENT_NV));
-
-  // GL_NV_vertex_array_range
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ARRAY_RANGE_NV', CardinalSymbol, GL_VERTEX_ARRAY_RANGE_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ARRAY_RANGE_LENGTH_NV', CardinalSymbol, GL_VERTEX_ARRAY_RANGE_LENGTH_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ARRAY_RANGE_VALID_NV', CardinalSymbol, GL_VERTEX_ARRAY_RANGE_VALID_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV', CardinalSymbol, GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ARRAY_RANGE_POINTER_NV', CardinalSymbol, GL_VERTEX_ARRAY_RANGE_POINTER_NV));
-
-  // GL_NV_vertex_array_range2
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV', CardinalSymbol, GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV));
-
-  // GL_NV_register_combiners
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_REGISTER_COMBINERS_NV', CardinalSymbol, GL_REGISTER_COMBINERS_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VARIABLE_A_NV', CardinalSymbol, GL_VARIABLE_A_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VARIABLE_B_NV', CardinalSymbol, GL_VARIABLE_B_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VARIABLE_C_NV', CardinalSymbol, GL_VARIABLE_C_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VARIABLE_D_NV', CardinalSymbol, GL_VARIABLE_D_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VARIABLE_E_NV', CardinalSymbol, GL_VARIABLE_E_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VARIABLE_F_NV', CardinalSymbol, GL_VARIABLE_F_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VARIABLE_G_NV', CardinalSymbol, GL_VARIABLE_G_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONSTANT_COLOR0_NV', CardinalSymbol, GL_CONSTANT_COLOR0_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONSTANT_COLOR1_NV', CardinalSymbol, GL_CONSTANT_COLOR1_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PRIMARY_COLOR_NV', CardinalSymbol, GL_PRIMARY_COLOR_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SECONDARY_COLOR_NV', CardinalSymbol, GL_SECONDARY_COLOR_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SPARE0_NV', CardinalSymbol, GL_SPARE0_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SPARE1_NV', CardinalSymbol, GL_SPARE1_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DISCARD_NV', CardinalSymbol, GL_DISCARD_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_E_TIMES_F_NV', CardinalSymbol, GL_E_TIMES_F_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SPARE0_PLUS_SECONDARY_COLOR_NV', CardinalSymbol, GL_SPARE0_PLUS_SECONDARY_COLOR_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_IDENTITY_NV', CardinalSymbol, GL_UNSIGNED_IDENTITY_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_INVERT_NV', CardinalSymbol, GL_UNSIGNED_INVERT_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EXPAND_NORMAL_NV', CardinalSymbol, GL_EXPAND_NORMAL_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EXPAND_NEGATE_NV', CardinalSymbol, GL_EXPAND_NEGATE_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HALF_BIAS_NORMAL_NV', CardinalSymbol, GL_HALF_BIAS_NORMAL_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HALF_BIAS_NEGATE_NV', CardinalSymbol, GL_HALF_BIAS_NEGATE_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SIGNED_IDENTITY_NV', CardinalSymbol, GL_SIGNED_IDENTITY_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SIGNED_NEGATE_NV', CardinalSymbol, GL_SIGNED_NEGATE_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SCALE_BY_TWO_NV', CardinalSymbol, GL_SCALE_BY_TWO_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SCALE_BY_FOUR_NV', CardinalSymbol, GL_SCALE_BY_FOUR_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SCALE_BY_ONE_HALF_NV', CardinalSymbol, GL_SCALE_BY_ONE_HALF_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BIAS_BY_NEGATIVE_ONE_HALF_NV', CardinalSymbol, GL_BIAS_BY_NEGATIVE_ONE_HALF_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER_INPUT_NV', CardinalSymbol, GL_COMBINER_INPUT_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER_MAPPING_NV', CardinalSymbol, GL_COMBINER_MAPPING_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER_COMPONENT_USAGE_NV', CardinalSymbol, GL_COMBINER_COMPONENT_USAGE_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER_AB_DOT_PRODUCT_NV', CardinalSymbol, GL_COMBINER_AB_DOT_PRODUCT_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER_CD_DOT_PRODUCT_NV', CardinalSymbol, GL_COMBINER_CD_DOT_PRODUCT_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER_MUX_SUM_NV', CardinalSymbol, GL_COMBINER_MUX_SUM_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER_SCALE_NV', CardinalSymbol, GL_COMBINER_SCALE_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER_BIAS_NV', CardinalSymbol, GL_COMBINER_BIAS_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER_AB_OUTPUT_NV', CardinalSymbol, GL_COMBINER_AB_OUTPUT_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER_CD_OUTPUT_NV', CardinalSymbol, GL_COMBINER_CD_OUTPUT_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER_SUM_OUTPUT_NV', CardinalSymbol, GL_COMBINER_SUM_OUTPUT_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_GENERAL_COMBINERS_NV', CardinalSymbol, GL_MAX_GENERAL_COMBINERS_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NUM_GENERAL_COMBINERS_NV', CardinalSymbol, GL_NUM_GENERAL_COMBINERS_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_SUM_CLAMP_NV', CardinalSymbol, GL_COLOR_SUM_CLAMP_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER0_NV', CardinalSymbol, GL_COMBINER0_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER1_NV', CardinalSymbol, GL_COMBINER1_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER2_NV', CardinalSymbol, GL_COMBINER2_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER3_NV', CardinalSymbol, GL_COMBINER3_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER4_NV', CardinalSymbol, GL_COMBINER4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER5_NV', CardinalSymbol, GL_COMBINER5_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER6_NV', CardinalSymbol, GL_COMBINER6_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER7_NV', CardinalSymbol, GL_COMBINER7_NV));
-
-  // GL_NV_fog_distance
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_DISTANCE_MODE_NV', CardinalSymbol, GL_FOG_DISTANCE_MODE_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EYE_RADIAL_NV', CardinalSymbol, GL_EYE_RADIAL_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EYE_PLANE_ABSOLUTE_NV', CardinalSymbol, GL_EYE_PLANE_ABSOLUTE_NV));
-
-  // GL_EXT_texture_compression_s3tc
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPRESSED_RGB_S3TC_DXT1_EXT', CardinalSymbol, GL_COMPRESSED_RGB_S3TC_DXT1_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPRESSED_RGBA_S3TC_DXT1_EXT', CardinalSymbol, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPRESSED_RGBA_S3TC_DXT3_EXT', CardinalSymbol, GL_COMPRESSED_RGBA_S3TC_DXT3_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPRESSED_RGBA_S3TC_DXT5_EXT', CardinalSymbol, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT));
-
-  // GL_3DFX_texture_compression_FXT1
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPRESSED_RGB_FXT1_3DFX', CardinalSymbol, GL_COMPRESSED_RGB_FXT1_3DFX));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPRESSED_RGBA_FXT1_3DFX', CardinalSymbol, GL_COMPRESSED_RGBA_FXT1_3DFX));
-
-  // GL_3DFX_multisample
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MULTISAMPLE_3DFX', CardinalSymbol, GL_MULTISAMPLE_3DFX));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_BUFFERS_3DFX', CardinalSymbol, GL_SAMPLE_BUFFERS_3DFX));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLES_3DFX', CardinalSymbol, GL_SAMPLES_3DFX));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MULTISAMPLE_BIT_3DFX', CardinalSymbol, GL_MULTISAMPLE_BIT_3DFX));
-
-  // GL_EXT_multisample
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MULTISAMPLE_EXT', CardinalSymbol, GL_MULTISAMPLE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_ALPHA_TO_MASK_EXT', CardinalSymbol, GL_SAMPLE_ALPHA_TO_MASK_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_ALPHA_TO_ONE_EXT', CardinalSymbol, GL_SAMPLE_ALPHA_TO_ONE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_MASK_EXT', CardinalSymbol, GL_SAMPLE_MASK_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_1PASS_EXT', CardinalSymbol, GL_1PASS_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_2PASS_0_EXT', CardinalSymbol, GL_2PASS_0_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_2PASS_1_EXT', CardinalSymbol, GL_2PASS_1_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_4PASS_0_EXT', CardinalSymbol, GL_4PASS_0_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_4PASS_1_EXT', CardinalSymbol, GL_4PASS_1_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_4PASS_2_EXT', CardinalSymbol, GL_4PASS_2_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_4PASS_3_EXT', CardinalSymbol, GL_4PASS_3_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_BUFFERS_EXT', CardinalSymbol, GL_SAMPLE_BUFFERS_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLES_EXT', CardinalSymbol, GL_SAMPLES_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_MASK_VALUE_EXT', CardinalSymbol, GL_SAMPLE_MASK_VALUE_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_MASK_INVERT_EXT', CardinalSymbol, GL_SAMPLE_MASK_INVERT_EXT));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_PATTERN_EXT', CardinalSymbol, GL_SAMPLE_PATTERN_EXT));
-
-  // GL_EXT_clip_volume_hint
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLIP_VOLUME_CLIPPING_HINT_EXT', CardinalSymbol, GL_CLIP_VOLUME_CLIPPING_HINT_EXT));
-
-  // GL_SGIS_texture_color_mask
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COLOR_WRITEMASK_SGIS', CardinalSymbol, GL_TEXTURE_COLOR_WRITEMASK_SGIS));
-
-  // GL_NV_vertex_program
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_PROGRAM_NV', CardinalSymbol, GL_VERTEX_PROGRAM_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_STATE_PROGRAM_NV', CardinalSymbol, GL_VERTEX_STATE_PROGRAM_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ATTRIB_ARRAY_SIZE_NV', CardinalSymbol, GL_ATTRIB_ARRAY_SIZE_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ATTRIB_ARRAY_STRIDE_NV', CardinalSymbol, GL_ATTRIB_ARRAY_STRIDE_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ATTRIB_ARRAY_TYPE_NV', CardinalSymbol, GL_ATTRIB_ARRAY_TYPE_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_ATTRIB_NV', CardinalSymbol, GL_CURRENT_ATTRIB_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_LENGTH_NV', CardinalSymbol, GL_PROGRAM_LENGTH_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_STRING_NV', CardinalSymbol, GL_PROGRAM_STRING_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW_PROJECTION_NV', CardinalSymbol, GL_MODELVIEW_PROJECTION_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_IDENTITY_NV', CardinalSymbol, GL_IDENTITY_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INVERSE_NV', CardinalSymbol, GL_INVERSE_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TRANSPOSE_NV', CardinalSymbol, GL_TRANSPOSE_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INVERSE_TRANSPOSE_NV', CardinalSymbol, GL_INVERSE_TRANSPOSE_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV', CardinalSymbol, GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_TRACK_MATRICES_NV', CardinalSymbol, GL_MAX_TRACK_MATRICES_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX0_NV', CardinalSymbol, GL_MATRIX0_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX1_NV', CardinalSymbol, GL_MATRIX1_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX2_NV', CardinalSymbol, GL_MATRIX2_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX3_NV', CardinalSymbol, GL_MATRIX3_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX4_NV', CardinalSymbol, GL_MATRIX4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX5_NV', CardinalSymbol, GL_MATRIX5_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX6_NV', CardinalSymbol, GL_MATRIX6_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX7_NV', CardinalSymbol, GL_MATRIX7_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_MATRIX_STACK_DEPTH_NV', CardinalSymbol, GL_CURRENT_MATRIX_STACK_DEPTH_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_MATRIX_NV', CardinalSymbol, GL_CURRENT_MATRIX_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_PROGRAM_POINT_SIZE_NV', CardinalSymbol, GL_VERTEX_PROGRAM_POINT_SIZE_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_PROGRAM_TWO_SIDE_NV', CardinalSymbol, GL_VERTEX_PROGRAM_TWO_SIDE_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_PARAMETER_NV', CardinalSymbol, GL_PROGRAM_PARAMETER_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ATTRIB_ARRAY_POINTER_NV', CardinalSymbol, GL_ATTRIB_ARRAY_POINTER_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_TARGET_NV', CardinalSymbol, GL_PROGRAM_TARGET_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_RESIDENT_NV', CardinalSymbol, GL_PROGRAM_RESIDENT_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TRACK_MATRIX_NV', CardinalSymbol, GL_TRACK_MATRIX_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TRACK_MATRIX_TRANSFORM_NV', CardinalSymbol, GL_TRACK_MATRIX_TRANSFORM_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_PROGRAM_BINDING_NV', CardinalSymbol, GL_VERTEX_PROGRAM_BINDING_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_ERROR_POSITION_NV', CardinalSymbol, GL_PROGRAM_ERROR_POSITION_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY0_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY0_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY1_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY1_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY2_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY2_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY3_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY3_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY4_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY5_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY5_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY6_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY6_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY7_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY7_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY8_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY8_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY9_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY9_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY10_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY10_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY11_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY11_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY12_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY12_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY13_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY13_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY14_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY14_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY15_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY15_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB0_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB0_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB1_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB1_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB2_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB2_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB3_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB3_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB4_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB4_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB5_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB5_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB6_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB6_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB7_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB7_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB8_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB8_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB9_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB9_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB10_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB10_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB11_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB11_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB12_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB12_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB13_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB13_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB14_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB14_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB15_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB15_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB0_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB0_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB1_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB1_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB2_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB2_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB3_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB3_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB4_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB4_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB5_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB5_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB6_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB6_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB7_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB7_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB8_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB8_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB9_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB9_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB10_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB10_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB11_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB11_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB12_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB12_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB13_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB13_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB14_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB14_4_NV));
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB15_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB15_4_NV));
-
-  // NV_multisample_filter_hint
-  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MULTISAMPLE_FILTER_HINT_NV', CardinalSymbol, GL_MULTISAMPLE_FILTER_HINT_NV));
-
-end;
-
-constructor TdwsOpenGLUnit.Create(AOwner: TComponent);
-begin
-  inherited;
-  FUnitName := 'OpenGLx';
-  FDependencies.Add('GLContext');
-  FDependencies.Add('GLVectorGeometry');
-end;
-
-procedure TGLPushAttrib.Execute;
-var
-  mask: Cardinal;
-begin
-  mask := Info['mask'];
-  glPushAttrib(mask);
-end;
-
-procedure TGLPopAttrib.Execute;
-begin
-  glPopAttrib;
-end;
-
-procedure TGLPushClientAttrib.Execute;
-var
-  mask: Cardinal;
-begin
-  mask := Info['mask'];
-  glPushClientAttrib(mask);
-end;
-
-procedure TGLPopClientAttrib.Execute;
-begin
-  glPopClientAttrib;
-end;
-
-procedure TGLEnable.Execute;
-var
-  cap: Cardinal;
-begin
-  cap := Info['cap'];
-  glEnable(cap);
-end;
-
-procedure TGLDisable.Execute;
-var
-  cap: Cardinal;
-begin
-  cap := Info['cap'];
-  glDisable(cap);
-end;
-
-procedure TGLEnableClientState.Execute;
-var
-  aarray: Cardinal;
-begin
-  aarray := Info['aarray'];
-  glEnableClientState(aarray);
-end;
-
-procedure TGLDisableClientState.Execute;
-var
-  aarray: Cardinal;
-begin
-  aarray := Info['aarray'];
-  glDisableClientState(aarray);
-end;
-
-procedure TGLMatrixMode.Execute;
-var
-  mode: Cardinal;
-begin
-  mode := Info['mode'];
-  glMatrixMode(mode);
-end;
-
-procedure TGLPushMatrix.Execute;
-begin
-  glPushMatrix;
-end;
-
-procedure TGLPopMatrix.Execute;
-begin
-  glPopMatrix;
-end;
-
-procedure TGLLoadIdentity.Execute;
-begin
-  glLoadIdentity;
-end;
-
-procedure TGLLoadMatrixf.Execute;
-var
-  m: TMatrix;
-begin
-  m := GetMatrixFromInfo(Info.Vars['m']);
-  glLoadMatrixf(@m[0]);
-end;
-
-procedure TGLTranslatef.Execute;
-var
-  x, y, z: Single;
-begin
-  x := Info['x'];
-  y := Info['y'];
-  z := Info['z'];
-  glTranslatef(x, y, z);
-end;
-
-procedure TGLRotatef.Execute;
-var
-  angle, x, y, z: Single;
-begin
-  angle := Info['angle'];
-  x := Info['x'];
-  y := Info['y'];
-  z := Info['z'];
-  glRotatef(angle, x, y, z);
-end;
-
-procedure TGLScalef.Execute;
-var
-  x, y, z: Single;
-begin
-  x := Info['x'];
-  y := Info['y'];
-  z := Info['z'];
-  glScalef(x, y, z);
-end;
-
-procedure TGLShadeModel.Execute;
-var
-  mode: Cardinal;
-begin
-  mode := Info['mode'];
-  glShadeModel(mode);
-end;
-
-procedure TGLCullFace.Execute;
-var
-  mode: Cardinal;
-begin
-  mode := Info['mode'];
-  glCullFace(mode);
-end;
-
-procedure TGLFrontFace.Execute;
-var
-  mode: Cardinal;
-begin
-  mode := Info['mode'];
-  glFrontFace(mode);
-end;
-
-procedure TGLPolygonMode.Execute;
-var
-  face, mode: Cardinal;
-begin
-  face := Info['face'];
-  mode := Info['mode'];
-  glPolygonMode(face, mode);
-end;
-
-procedure TGLBegin.Execute;
-var
-  mode: Cardinal;
-begin
-  mode := Info['mode'];
-  glBegin(mode);
-end;
-
-procedure TGLEnd.Execute;
-begin
-  glEnd;
-end;
-
-procedure TGLColor3f.Execute;
-var
-  red, green, blue: Single;
-begin
-  red := Info['red'];
-  green := Info['green'];
-  blue := Info['blue'];
-  glColor3f(red, green, blue);
-end;
-
-procedure TGLColor4f.Execute;
-var
-  red, green, blue, alpha: Single;
-begin
-  red := Info['red'];
-  green := Info['green'];
-  blue := Info['blue'];
-  alpha := Info['alpha'];
-  glColor4f(red, green, blue, alpha);
-end;
-
-procedure TGLNormal3f.Execute;
-var
-  x, y, z: Single;
-begin
-  x := Info['x'];
-  y := Info['y'];
-  z := Info['z'];
-  glNormal3f(x, y, z);
-end;
-
-procedure TGLVertex3f.Execute;
-var
-  x, y, z: Single;
-begin
-  x := Info['x'];
-  y := Info['y'];
-  z := Info['z'];
-  glVertex3f(x, y, z);
-end;
-
-procedure TGLTexCoord1f.Execute;
-var
-  s: Single;
-begin
-  s := Info['s'];
-  glTexCoord1f(s);
-end;
-
-procedure TGLTexCoord2f.Execute;
-var
-  s, t: Single;
-begin
-  s := Info['s'];
-  t := Info['t'];
-  glTexCoord2f(s, t);
-end;
-
-procedure TGLTexCoord3f.Execute;
-var
-  s, t, r: Single;
-begin
-  s := Info['s'];
-  t := Info['t'];
-  r := Info['r'];
-  glTexCoord3f(s, t, r);
-end;
-
-procedure TGLTexCoord4f.Execute;
-var
-  s, t, r, q: Single;
-begin
-  s := Info['s'];
-  t := Info['t'];
-  r := Info['r'];
-  q := Info['q'];
-  glTexCoord4f(s, t, r, q);
-end;
-
-procedure TGLLineWidth.Execute;
-var
-  width: Single;
-begin
-  width := Info['width'];
-  glLineWidth(width);
-end;
-
-procedure TGLMultiTexCoord1f.Execute;
-var
-  target: Cardinal;
-  s: Single;
-begin
-  target := Info['target'];
-  s := Info['s'];
-  glMultiTexCoord1f(target, s);
-end;
-
-procedure TGLMultiTexCoord2f.Execute;
-var
-  target: Cardinal;
-  s, t: Single;
-begin
-  target := Info['target'];
-  s := Info['s'];
-  t := Info['t'];
-  glMultiTexCoord2f(target, s, t);
-end;
-
-procedure TGLMultiTexCoord3f.Execute;
-var
-  target: Cardinal;
-  s, t, r: Single;
-begin
-  target := Info['target'];
-  s := Info['s'];
-  t := Info['t'];
-  r := Info['r'];
-  glMultiTexCoord3f(target, s, t, r);
-end;
-
-procedure TGLMultiTexCoord4f.Execute;
-var
-  target: Cardinal;
-  s, t, r, q: Single;
-begin
-  target := Info['target'];
-  s := Info['s'];
-  t := Info['t'];
-  r := Info['r'];
-  q := Info['q'];
-  glMultiTexCoord4f(target, s, t, r, q);
-end;
-
-procedure TGLActiveTexture.Execute;
-var
-  target: Cardinal;
-begin
-  target := Info['target'];
-  glActiveTexture(target);
-end;
-
-procedure TGLClientActiveTexture.Execute;
-var
-  target: Cardinal;
-begin
-  target := Info['target'];
-  glClientActiveTexture(target);
-end;
-
-procedure TGLTexEnvf.Execute;
-var
-  target, pname: Cardinal;
-  param: Single;
-begin
-  target := Info['target'];
-  pname := Info['pname'];
-  param := Info['param'];
-  glTexEnvf(target, pname, param);
-end;
-
-procedure TGLTexEnvi.Execute;
-var
-  target, pname: Cardinal;
-  param: Integer;
-begin
-  target := Info['target'];
-  pname := Info['pname'];
-  param := Info['param'];
-  glTexEnvi(target, pname, param);
-end;
-
-procedure TGLBlendFunc.Execute;
-var
-  sfactor, dfactor: Cardinal;
-begin
-  sfactor := Info['sfactor'];
-  dfactor := Info['dfactor'];
-  glBlendFunc(sfactor, dfactor);
-end;
-
-procedure TGLDepthFunc.Execute;
-var
-  func: Cardinal;
-begin
-  func := Info['func'];
-  glDepthFunc(func);
-end;
-
-procedure TGLDepthMask.Execute;
-var
-  flag: Byte;
-begin
-  flag := Info['flag'];
-  glDepthMask(BYTEBOOL(flag));
-end;
-
-procedure TGLDepthRange.Execute;
-var
-  znear, zfar: Double;
-begin
-  znear := Info['znear'];
-  zfar := Info['zfar'];
-  glDepthRange(znear, zfar);
-end;
-
-procedure TGLStencilFunc.Execute;
-var
-  func, mask: Cardinal;
-  ref: Integer;
-begin
-  func := Info['func'];
-  ref := Info['ref'];
-  mask := Info['mask'];
-  glStencilFunc(func, ref, mask);
-end;
-
-procedure TGLStencilMask.Execute;
-var
-  mask: Cardinal;
-begin
-  mask := Info['mask'];
-  glStencilMask(mask);
-end;
-
-procedure TGLStencilOp.Execute;
-var
-  fail, zfail, zpass: Cardinal;
-begin
-  fail := Info['fail'];
-  zfail := Info['zfail'];
-  zpass := Info['zpass'];
-  glStencilOp(fail, zfail, zpass);
-end;
-
-procedure TGLLogicOp.Execute;
-var
-  opcode: Cardinal;
-begin
-  opcode := Info['opcode'];
-  glLogicOp(opcode);
-end;
-
-
-end.
+//
+// This unit is part of the GLScene Engine, http://glscene.org
+//
+
+unit GLS.dwsOpenGL;
+
+(*
+   DelphiWebScript symbol creation for OpenGL procedures and functions.
+   This unit is still under development.
+*)
+
+interface
+
+{$I GLScene.inc}
+
+uses
+  System.Classes,
+  System.Variants,
+  
+  GLS.OpenGLx,
+  GLContext,
+  GLVectorGeometry,
+  
+  DWS.Exprs,
+  DWS.Symbols,
+  DWS.Comp,
+  DWS.Functions;
+
+type
+  TdwsOpenGLUnit = class(TdwsUnitComponent)
+    protected
+      procedure AddUnitSymbols(SymbolTable: TSymbolTable); override;
+      procedure AddExtensionUnitSymbols(SymbolTable: TSymbolTable);
+    public
+      constructor Create(AOwner: TComponent); override;
+  end;
+
+const
+  TypCardinalID : TBaseTypeId = 10;
+  TypByteID     : TBaseTypeId = 11;
+
+
+procedure Register;
+
+//===========================================================
+implementation
+//===========================================================
+
+type
+  TGLPushAttrib = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLPopAttrib = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLPushClientAttrib = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLPopClientAttrib = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLEnable = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLDisable = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLEnableClientState = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLDisableClientState = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLMatrixMode = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLPushMatrix = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLPopMatrix = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLLoadIdentity = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLLoadMatrixf = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLTranslatef = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLRotatef = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLScalef = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLBegin = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLCullFace = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLShadeModel = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLFrontFace = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLPolygonMode = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLEnd = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLColor3f = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLColor4f = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLNormal3f = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLVertex3f = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLTexCoord1f = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLTexCoord2f = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLTexCoord3f = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLTexCoord4f = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLMultiTexCoord1f = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLMultiTexCoord2f = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLMultiTexCoord3f = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLMultiTexCoord4f = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLActiveTexture = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLClientActiveTexture = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLTexEnvf = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLTexEnvi = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLBlendFunc = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLDepthFunc = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLDepthMask = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLDepthRange = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLStencilFunc = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+  
+  TGLStencilMask = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+  
+  TGLStencilOp = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLLogicOp = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TGLLineWidth = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+
+procedure Register;
+begin
+  RegisterComponents('GLScene DWS', [TdwsOpenGLUnit]);
+end;
+
+function GetMatrixFromInfo(Info : IInfo) : TMatrix;
+var
+  i : Integer;
+begin
+  for i:=0 to 3 do
+    Result[i]:=VectorMake(Info.Element([i]).Element([0]).Value,
+                          Info.Element([i]).Element([1]).Value,
+                          Info.Element([i]).Element([2]).Value,
+                          Info.Element([i]).Element([3]).Value);
+end;
+
+
+// ----------
+// ---------- TdwsOpenGLUnit ----------
+// ----------
+
+procedure TdwsOpenGLUnit.AddUnitSymbols(SymbolTable: TSymbolTable);
+var
+  CardinalSymbol,
+  ByteSymbol : TSymbol;
+begin
+  CardinalSymbol:=SymbolTable.FindSymbol('Cardinal');
+  if not Assigned(CardinalSymbol) then 
+  begin
+    CardinalSymbol:=TBaseSymbol.Create('Cardinal', TypCardinalID, VarAsType(0, varLongWord));
+    SymbolTable.AddSymbol(CardinalSymbol);
+  end;
+
+  ByteSymbol:=SymbolTable.FindSymbol('Byte');
+  if not Assigned(ByteSymbol) then 
+  begin
+    ByteSymbol:=TBaseSymbol.Create('Byte', TypByteID, VarAsType(0, varByte));
+    SymbolTable.AddSymbol(ByteSymbol);
+  end;
+
+  // ---------- GL generic constants ----------
+
+  // errors
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NO_ERROR', CardinalSymbol, GL_NO_ERROR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INVALID_ENUM', CardinalSymbol, GL_INVALID_ENUM));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INVALID_VALUE', CardinalSymbol, GL_INVALID_VALUE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INVALID_OPERATION', CardinalSymbol, GL_INVALID_OPERATION));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STACK_OVERFLOW', CardinalSymbol, GL_STACK_OVERFLOW));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STACK_UNDERFLOW', CardinalSymbol, GL_STACK_UNDERFLOW));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OUT_OF_MEMORY', CardinalSymbol, GL_OUT_OF_MEMORY));
+
+  // attribute bits
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_BIT', CardinalSymbol, GL_CURRENT_BIT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POINT_BIT', CardinalSymbol, GL_POINT_BIT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINE_BIT', CardinalSymbol, GL_LINE_BIT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_BIT', CardinalSymbol, GL_POLYGON_BIT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_STIPPLE_BIT', CardinalSymbol, GL_POLYGON_STIPPLE_BIT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MODE_BIT', CardinalSymbol, GL_PIXEL_MODE_BIT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHTING_BIT', CardinalSymbol, GL_LIGHTING_BIT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_BIT', CardinalSymbol, GL_FOG_BIT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH_BUFFER_BIT', CardinalSymbol, GL_DEPTH_BUFFER_BIT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ACCUM_BUFFER_BIT', CardinalSymbol, GL_ACCUM_BUFFER_BIT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STENCIL_BUFFER_BIT', CardinalSymbol, GL_STENCIL_BUFFER_BIT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VIEWPORT_BIT', CardinalSymbol, GL_VIEWPORT_BIT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TRANSFORM_BIT', CardinalSymbol, GL_TRANSFORM_BIT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ENABLE_BIT', CardinalSymbol, GL_ENABLE_BIT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_BUFFER_BIT', CardinalSymbol, GL_COLOR_BUFFER_BIT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HINT_BIT', CardinalSymbol, GL_HINT_BIT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EVAL_BIT', CardinalSymbol, GL_EVAL_BIT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIST_BIT', CardinalSymbol, GL_LIST_BIT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_BIT', CardinalSymbol, GL_TEXTURE_BIT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SCISSOR_BIT', CardinalSymbol, GL_SCISSOR_BIT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALL_ATTRIB_BITS', CardinalSymbol, GL_ALL_ATTRIB_BITS));
+
+  // client attribute bits
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLIENT_PIXEL_STORE_BIT', CardinalSymbol, GL_CLIENT_PIXEL_STORE_BIT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLIENT_VERTEX_ARRAY_BIT', CardinalSymbol, GL_CLIENT_VERTEX_ARRAY_BIT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLIENT_ALL_ATTRIB_BITS', CardinalSymbol, GL_CLIENT_ALL_ATTRIB_BITS));
+
+  // boolean values
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FALSE', CardinalSymbol, GL_FALSE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TRUE', CardinalSymbol, GL_TRUE));
+
+  // primitives
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POINTS', CardinalSymbol, GL_POINTS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINES', CardinalSymbol, GL_LINES));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINE_LOOP', CardinalSymbol, GL_LINE_LOOP));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINE_STRIP', CardinalSymbol, GL_LINE_STRIP));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TRIANGLES', CardinalSymbol, GL_TRIANGLES));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TRIANGLE_STRIP', CardinalSymbol, GL_TRIANGLE_STRIP));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TRIANGLE_FAN', CardinalSymbol, GL_TRIANGLE_FAN));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_QUADS', CardinalSymbol, GL_QUADS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_QUAD_STRIP', CardinalSymbol, GL_QUAD_STRIP));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON', CardinalSymbol, GL_POLYGON));
+
+  // blending
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ZERO', CardinalSymbol, GL_ZERO));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ONE', CardinalSymbol, GL_ONE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SRC_COLOR', CardinalSymbol, GL_SRC_COLOR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ONE_MINUS_SRC_COLOR', CardinalSymbol, GL_ONE_MINUS_SRC_COLOR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SRC_ALPHA', CardinalSymbol, GL_SRC_ALPHA));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ONE_MINUS_SRC_ALPHA', CardinalSymbol, GL_ONE_MINUS_SRC_ALPHA));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DST_ALPHA', CardinalSymbol, GL_DST_ALPHA));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ONE_MINUS_DST_ALPHA', CardinalSymbol, GL_ONE_MINUS_DST_ALPHA));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DST_COLOR', CardinalSymbol, GL_DST_COLOR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ONE_MINUS_DST_COLOR', CardinalSymbol, GL_ONE_MINUS_DST_COLOR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SRC_ALPHA_SATURATE', CardinalSymbol, GL_SRC_ALPHA_SATURATE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLEND_DST', CardinalSymbol, GL_BLEND_DST));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLEND_SRC', CardinalSymbol, GL_BLEND_SRC));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLEND', CardinalSymbol, GL_BLEND));
+
+  // blending (GL 1.2 ARB imaging)
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLEND_COLOR', CardinalSymbol, GL_BLEND_COLOR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONSTANT_COLOR', CardinalSymbol, GL_CONSTANT_COLOR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ONE_MINUS_CONSTANT_COLOR', CardinalSymbol, GL_ONE_MINUS_CONSTANT_COLOR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONSTANT_ALPHA', CardinalSymbol, GL_CONSTANT_ALPHA));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ONE_MINUS_CONSTANT_ALPHA', CardinalSymbol, GL_ONE_MINUS_CONSTANT_ALPHA));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FUNC_ADD', CardinalSymbol, GL_FUNC_ADD));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MIN', CardinalSymbol, GL_MIN));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX', CardinalSymbol, GL_MAX));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FUNC_SUBTRACT', CardinalSymbol, GL_FUNC_SUBTRACT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FUNC_REVERSE_SUBTRACT', CardinalSymbol, GL_FUNC_REVERSE_SUBTRACT));
+
+  // color table GL 1.2 ARB imaging
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_TABLE', CardinalSymbol, GL_COLOR_TABLE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_COLOR_TABLE', CardinalSymbol, GL_POST_CONVOLUTION_COLOR_TABLE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_COLOR_TABLE', CardinalSymbol, GL_POST_COLOR_MATRIX_COLOR_TABLE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROXY_COLOR_TABLE', CardinalSymbol, GL_PROXY_COLOR_TABLE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROXY_POST_CONVOLUTION_COLOR_TABLE', CardinalSymbol, GL_PROXY_POST_CONVOLUTION_COLOR_TABLE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE', CardinalSymbol, GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_TABLE_SCALE', CardinalSymbol, GL_COLOR_TABLE_SCALE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_TABLE_BIAS', CardinalSymbol, GL_COLOR_TABLE_BIAS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_TABLE_FORMAT', CardinalSymbol, GL_COLOR_TABLE_FORMAT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_TABLE_WIDTH', CardinalSymbol, GL_COLOR_TABLE_WIDTH));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_TABLE_RED_SIZE', CardinalSymbol, GL_COLOR_TABLE_RED_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_TABLE_GREEN_SIZE', CardinalSymbol, GL_COLOR_TABLE_GREEN_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_TABLE_BLUE_SIZE', CardinalSymbol, GL_COLOR_TABLE_BLUE_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_TABLE_ALPHA_SIZE', CardinalSymbol, GL_COLOR_TABLE_ALPHA_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_TABLE_LUMINANCE_SIZE', CardinalSymbol, GL_COLOR_TABLE_LUMINANCE_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_TABLE_INTENSITY_SIZE', CardinalSymbol, GL_COLOR_TABLE_INTENSITY_SIZE));
+
+  // convolutions GL 1.2 ARB imaging
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_1D', CardinalSymbol, GL_CONVOLUTION_1D));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_2D', CardinalSymbol, GL_CONVOLUTION_2D));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SEPARABLE_2D', CardinalSymbol, GL_SEPARABLE_2D));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_BORDER_MODE', CardinalSymbol, GL_CONVOLUTION_BORDER_MODE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_FILTER_SCALE', CardinalSymbol, GL_CONVOLUTION_FILTER_SCALE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_FILTER_BIAS', CardinalSymbol, GL_CONVOLUTION_FILTER_BIAS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_REDUCE', CardinalSymbol, GL_REDUCE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_FORMAT', CardinalSymbol, GL_CONVOLUTION_FORMAT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_WIDTH', CardinalSymbol, GL_CONVOLUTION_WIDTH));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_HEIGHT', CardinalSymbol, GL_CONVOLUTION_HEIGHT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_CONVOLUTION_WIDTH', CardinalSymbol, GL_MAX_CONVOLUTION_WIDTH));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_CONVOLUTION_HEIGHT', CardinalSymbol, GL_MAX_CONVOLUTION_HEIGHT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_RED_SCALE', CardinalSymbol, GL_POST_CONVOLUTION_RED_SCALE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_GREEN_SCALE', CardinalSymbol, GL_POST_CONVOLUTION_GREEN_SCALE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_BLUE_SCALE', CardinalSymbol, GL_POST_CONVOLUTION_BLUE_SCALE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_ALPHA_SCALE', CardinalSymbol, GL_POST_CONVOLUTION_ALPHA_SCALE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_RED_BIAS', CardinalSymbol, GL_POST_CONVOLUTION_RED_BIAS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_GREEN_BIAS', CardinalSymbol, GL_POST_CONVOLUTION_GREEN_BIAS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_BLUE_BIAS', CardinalSymbol, GL_POST_CONVOLUTION_BLUE_BIAS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_ALPHA_BIAS', CardinalSymbol, GL_POST_CONVOLUTION_ALPHA_BIAS));
+
+  // histogram GL 1.2 ARB imaging
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM', CardinalSymbol, GL_HISTOGRAM));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROXY_HISTOGRAM', CardinalSymbol, GL_PROXY_HISTOGRAM));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_WIDTH', CardinalSymbol, GL_HISTOGRAM_WIDTH));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_FORMAT', CardinalSymbol, GL_HISTOGRAM_FORMAT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_RED_SIZE', CardinalSymbol, GL_HISTOGRAM_RED_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_GREEN_SIZE', CardinalSymbol, GL_HISTOGRAM_GREEN_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_BLUE_SIZE', CardinalSymbol, GL_HISTOGRAM_BLUE_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_ALPHA_SIZE', CardinalSymbol, GL_HISTOGRAM_ALPHA_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_LUMINANCE_SIZE', CardinalSymbol, GL_HISTOGRAM_LUMINANCE_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_SINK', CardinalSymbol, GL_HISTOGRAM_SINK));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MINMAX', CardinalSymbol, GL_MINMAX));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MINMAX_FORMAT', CardinalSymbol, GL_MINMAX_FORMAT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MINMAX_SINK', CardinalSymbol, GL_MINMAX_SINK));
+
+  // buffers
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NONE', CardinalSymbol, GL_NONE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FRONT_LEFT', CardinalSymbol, GL_FRONT_LEFT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FRONT_RIGHT', CardinalSymbol, GL_FRONT_RIGHT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BACK_LEFT', CardinalSymbol, GL_BACK_LEFT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BACK_RIGHT', CardinalSymbol, GL_BACK_RIGHT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FRONT', CardinalSymbol, GL_FRONT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BACK', CardinalSymbol, GL_BACK));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LEFT', CardinalSymbol, GL_LEFT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RIGHT', CardinalSymbol, GL_RIGHT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FRONT_AND_BACK', CardinalSymbol, GL_FRONT_AND_BACK));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_AUX0', CardinalSymbol, GL_AUX0));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_AUX1', CardinalSymbol, GL_AUX1));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_AUX2', CardinalSymbol, GL_AUX2));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_AUX3', CardinalSymbol, GL_AUX3));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_AUX_BUFFERS', CardinalSymbol, GL_AUX_BUFFERS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DRAW_BUFFER', CardinalSymbol, GL_DRAW_BUFFER));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_READ_BUFFER', CardinalSymbol, GL_READ_BUFFER));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DOUBLEBUFFER', CardinalSymbol, GL_DOUBLEBUFFER));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STEREO', CardinalSymbol, GL_STEREO));
+
+  // depth buffer
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH_RANGE', CardinalSymbol, GL_DEPTH_RANGE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH_TEST', CardinalSymbol, GL_DEPTH_TEST));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH_WRITEMASK', CardinalSymbol, GL_DEPTH_WRITEMASK));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH_CLEAR_VALUE', CardinalSymbol, GL_DEPTH_CLEAR_VALUE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH_FUNC', CardinalSymbol, GL_DEPTH_FUNC));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NEVER', CardinalSymbol, GL_NEVER));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LESS', CardinalSymbol, GL_LESS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EQUAL', CardinalSymbol, GL_EQUAL));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LEQUAL', CardinalSymbol, GL_LEQUAL));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_GREATER', CardinalSymbol, GL_GREATER));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NOTEQUAL', CardinalSymbol, GL_NOTEQUAL));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_GEQUAL', CardinalSymbol, GL_GEQUAL));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALWAYS', CardinalSymbol, GL_ALWAYS));
+
+  // accumulation buffer
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ACCUM', CardinalSymbol, GL_ACCUM));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LOAD', CardinalSymbol, GL_LOAD));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RETURN', CardinalSymbol, GL_RETURN));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MULT', CardinalSymbol, GL_MULT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ADD', CardinalSymbol, GL_ADD));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ACCUM_CLEAR_VALUE', CardinalSymbol, GL_ACCUM_CLEAR_VALUE));
+
+  // feedback buffer
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FEEDBACK_BUFFER_POINTER', CardinalSymbol, GL_FEEDBACK_BUFFER_POINTER));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FEEDBACK_BUFFER_SIZE', CardinalSymbol, GL_FEEDBACK_BUFFER_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FEEDBACK_BUFFER_TYPE', CardinalSymbol, GL_FEEDBACK_BUFFER_TYPE));
+
+  // feedback types
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_2D', CardinalSymbol, GL_2D));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_3D', CardinalSymbol, GL_3D));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_3D_COLOR', CardinalSymbol, GL_3D_COLOR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_3D_COLOR_TEXTURE', CardinalSymbol, GL_3D_COLOR_TEXTURE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_4D_COLOR_TEXTURE', CardinalSymbol, GL_4D_COLOR_TEXTURE));
+
+  // feedback tokens
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PASS_THROUGH_TOKEN', CardinalSymbol, GL_PASS_THROUGH_TOKEN));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POINT_TOKEN', CardinalSymbol, GL_POINT_TOKEN));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINE_TOKEN', CardinalSymbol, GL_LINE_TOKEN));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_TOKEN', CardinalSymbol, GL_POLYGON_TOKEN));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BITMAP_TOKEN', CardinalSymbol, GL_BITMAP_TOKEN));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DRAW_PIXEL_TOKEN', CardinalSymbol, GL_DRAW_PIXEL_TOKEN));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COPY_PIXEL_TOKEN', CardinalSymbol, GL_COPY_PIXEL_TOKEN));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINE_RESET_TOKEN', CardinalSymbol, GL_LINE_RESET_TOKEN));
+
+  // fog
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EXP', CardinalSymbol, GL_EXP));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EXP2', CardinalSymbol, GL_EXP2));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG', CardinalSymbol, GL_FOG));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_INDEX', CardinalSymbol, GL_FOG_INDEX));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_DENSITY', CardinalSymbol, GL_FOG_DENSITY));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_START', CardinalSymbol, GL_FOG_START));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_END', CardinalSymbol, GL_FOG_END));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_MODE', CardinalSymbol, GL_FOG_MODE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_COLOR', CardinalSymbol, GL_FOG_COLOR));
+
+  // pixel mode, transfer
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_I_TO_I', CardinalSymbol, GL_PIXEL_MAP_I_TO_I));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_S_TO_S', CardinalSymbol, GL_PIXEL_MAP_S_TO_S));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_I_TO_R', CardinalSymbol, GL_PIXEL_MAP_I_TO_R));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_I_TO_G', CardinalSymbol, GL_PIXEL_MAP_I_TO_G));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_I_TO_B', CardinalSymbol, GL_PIXEL_MAP_I_TO_B));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_I_TO_A', CardinalSymbol, GL_PIXEL_MAP_I_TO_A));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_R_TO_R', CardinalSymbol, GL_PIXEL_MAP_R_TO_R));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_G_TO_G', CardinalSymbol, GL_PIXEL_MAP_G_TO_G));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_B_TO_B', CardinalSymbol, GL_PIXEL_MAP_B_TO_B));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_A_TO_A', CardinalSymbol, GL_PIXEL_MAP_A_TO_A));
+
+  // vertex arrays
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ARRAY_POINTER', CardinalSymbol, GL_VERTEX_ARRAY_POINTER));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NORMAL_ARRAY_POINTER', CardinalSymbol, GL_NORMAL_ARRAY_POINTER));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_ARRAY_POINTER', CardinalSymbol, GL_COLOR_ARRAY_POINTER));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INDEX_ARRAY_POINTER', CardinalSymbol, GL_INDEX_ARRAY_POINTER));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COORD_ARRAY_POINTER', CardinalSymbol, GL_TEXTURE_COORD_ARRAY_POINTER));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EDGE_FLAG_ARRAY_POINTER', CardinalSymbol, GL_EDGE_FLAG_ARRAY_POINTER));
+
+  // stenciling
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STENCIL_TEST', CardinalSymbol, GL_STENCIL_TEST));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STENCIL_CLEAR_VALUE', CardinalSymbol, GL_STENCIL_CLEAR_VALUE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STENCIL_FUNC', CardinalSymbol, GL_STENCIL_FUNC));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STENCIL_VALUE_MASK', CardinalSymbol, GL_STENCIL_VALUE_MASK));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STENCIL_FAIL', CardinalSymbol, GL_STENCIL_FAIL));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STENCIL_PASS_DEPTH_FAIL', CardinalSymbol, GL_STENCIL_PASS_DEPTH_FAIL));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STENCIL_PASS_DEPTH_PASS', CardinalSymbol, GL_STENCIL_PASS_DEPTH_PASS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STENCIL_REF', CardinalSymbol, GL_STENCIL_REF));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STENCIL_WRITEMASK', CardinalSymbol, GL_STENCIL_WRITEMASK));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_KEEP', CardinalSymbol, GL_KEEP));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_REPLACE', CardinalSymbol, GL_REPLACE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INCR', CardinalSymbol, GL_INCR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DECR', CardinalSymbol, GL_DECR));
+
+  // color material
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_MATERIAL_FACE', CardinalSymbol, GL_COLOR_MATERIAL_FACE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_MATERIAL_PARAMETER', CardinalSymbol, GL_COLOR_MATERIAL_PARAMETER));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_MATERIAL', CardinalSymbol, GL_COLOR_MATERIAL));
+
+  // points
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POINT_SMOOTH', CardinalSymbol, GL_POINT_SMOOTH));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POINT_SIZE', CardinalSymbol, GL_POINT_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POINT_SIZE_RANGE', CardinalSymbol, GL_POINT_SIZE_RANGE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POINT_SIZE_GRANULARITY', CardinalSymbol, GL_POINT_SIZE_GRANULARITY));
+
+  // lines
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINE_SMOOTH', CardinalSymbol, GL_LINE_SMOOTH));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINE_WIDTH', CardinalSymbol, GL_LINE_WIDTH));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINE_WIDTH_RANGE', CardinalSymbol, GL_LINE_WIDTH_RANGE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINE_WIDTH_GRANULARITY', CardinalSymbol, GL_LINE_WIDTH_GRANULARITY));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINE_STIPPLE', CardinalSymbol, GL_LINE_STIPPLE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINE_STIPPLE_PATTERN', CardinalSymbol, GL_LINE_STIPPLE_PATTERN));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINE_STIPPLE_REPEAT', CardinalSymbol, GL_LINE_STIPPLE_REPEAT));
+
+  // polygons
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_MODE', CardinalSymbol, GL_POLYGON_MODE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_SMOOTH', CardinalSymbol, GL_POLYGON_SMOOTH));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_STIPPLE', CardinalSymbol, GL_POLYGON_STIPPLE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EDGE_FLAG', CardinalSymbol, GL_EDGE_FLAG));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CULL_FACE', CardinalSymbol, GL_CULL_FACE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CULL_FACE_MODE', CardinalSymbol, GL_CULL_FACE_MODE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FRONT_FACE', CardinalSymbol, GL_FRONT_FACE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CW', CardinalSymbol, GL_CW));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CCW', CardinalSymbol, GL_CCW));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POINT', CardinalSymbol, GL_POINT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINE', CardinalSymbol, GL_LINE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FILL', CardinalSymbol, GL_FILL));
+
+  // display lists
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIST_MODE', CardinalSymbol, GL_LIST_MODE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIST_BASE', CardinalSymbol, GL_LIST_BASE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIST_INDEX', CardinalSymbol, GL_LIST_INDEX));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPILE', CardinalSymbol, GL_COMPILE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPILE_AND_EXECUTE', CardinalSymbol, GL_COMPILE_AND_EXECUTE));
+
+  // lighting
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHTING', CardinalSymbol, GL_LIGHTING));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHT_MODEL_LOCAL_VIEWER', CardinalSymbol, GL_LIGHT_MODEL_LOCAL_VIEWER));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHT_MODEL_TWO_SIDE', CardinalSymbol, GL_LIGHT_MODEL_TWO_SIDE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHT_MODEL_AMBIENT', CardinalSymbol, GL_LIGHT_MODEL_AMBIENT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHT_MODEL_COLOR_CONTROL', CardinalSymbol, GL_LIGHT_MODEL_COLOR_CONTROL));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SHADE_MODEL', CardinalSymbol, GL_SHADE_MODEL));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NORMALIZE', CardinalSymbol, GL_NORMALIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_AMBIENT', CardinalSymbol, GL_AMBIENT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DIFFUSE', CardinalSymbol, GL_DIFFUSE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SPECULAR', CardinalSymbol, GL_SPECULAR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POSITION', CardinalSymbol, GL_POSITION));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SPOT_DIRECTION', CardinalSymbol, GL_SPOT_DIRECTION));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SPOT_EXPONENT', CardinalSymbol, GL_SPOT_EXPONENT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SPOT_CUTOFF', CardinalSymbol, GL_SPOT_CUTOFF));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONSTANT_ATTENUATION', CardinalSymbol, GL_CONSTANT_ATTENUATION));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINEAR_ATTENUATION', CardinalSymbol, GL_LINEAR_ATTENUATION));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_QUADRATIC_ATTENUATION', CardinalSymbol, GL_QUADRATIC_ATTENUATION));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EMISSION', CardinalSymbol, GL_EMISSION));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SHININESS', CardinalSymbol, GL_SHININESS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_AMBIENT_AND_DIFFUSE', CardinalSymbol, GL_AMBIENT_AND_DIFFUSE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_INDEXES', CardinalSymbol, GL_COLOR_INDEXES));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FLAT', CardinalSymbol, GL_FLAT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SMOOTH', CardinalSymbol, GL_SMOOTH));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHT0', CardinalSymbol, GL_LIGHT0));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHT1', CardinalSymbol, GL_LIGHT1));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHT2', CardinalSymbol, GL_LIGHT2));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHT3', CardinalSymbol, GL_LIGHT3));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHT4', CardinalSymbol, GL_LIGHT4));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHT5', CardinalSymbol, GL_LIGHT5));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHT6', CardinalSymbol, GL_LIGHT6));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHT7', CardinalSymbol, GL_LIGHT7));
+
+  // matrix modes
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX_MODE', CardinalSymbol, GL_MATRIX_MODE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW', CardinalSymbol, GL_MODELVIEW));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROJECTION', CardinalSymbol, GL_PROJECTION));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE', CardinalSymbol, GL_TEXTURE));
+
+  // gets
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_COLOR', CardinalSymbol, GL_CURRENT_COLOR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_INDEX', CardinalSymbol, GL_CURRENT_INDEX));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_NORMAL', CardinalSymbol, GL_CURRENT_NORMAL));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_TEXTURE_COORDS', CardinalSymbol, GL_CURRENT_TEXTURE_COORDS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_RASTER_COLOR', CardinalSymbol, GL_CURRENT_RASTER_COLOR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_RASTER_INDEX', CardinalSymbol, GL_CURRENT_RASTER_INDEX));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_RASTER_TEXTURE_COORDS', CardinalSymbol, GL_CURRENT_RASTER_TEXTURE_COORDS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_RASTER_POSITION', CardinalSymbol, GL_CURRENT_RASTER_POSITION));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_RASTER_POSITION_VALID', CardinalSymbol, GL_CURRENT_RASTER_POSITION_VALID));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_RASTER_DISTANCE', CardinalSymbol, GL_CURRENT_RASTER_DISTANCE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_LIST_NESTING', CardinalSymbol, GL_MAX_LIST_NESTING));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VIEWPORT', CardinalSymbol, GL_VIEWPORT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW_STACK_DEPTH', CardinalSymbol, GL_MODELVIEW_STACK_DEPTH));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROJECTION_STACK_DEPTH', CardinalSymbol, GL_PROJECTION_STACK_DEPTH));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_STACK_DEPTH', CardinalSymbol, GL_TEXTURE_STACK_DEPTH));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW_MATRIX', CardinalSymbol, GL_MODELVIEW_MATRIX));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROJECTION_MATRIX', CardinalSymbol, GL_PROJECTION_MATRIX));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_MATRIX', CardinalSymbol, GL_TEXTURE_MATRIX));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ATTRIB_STACK_DEPTH', CardinalSymbol, GL_ATTRIB_STACK_DEPTH));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLIENT_ATTRIB_STACK_DEPTH', CardinalSymbol, GL_CLIENT_ATTRIB_STACK_DEPTH));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SINGLE_COLOR', CardinalSymbol, GL_SINGLE_COLOR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SEPARATE_SPECULAR_COLOR', CardinalSymbol, GL_SEPARATE_SPECULAR_COLOR));
+
+  // alpha testing
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA_TEST', CardinalSymbol, GL_ALPHA_TEST));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA_TEST_FUNC', CardinalSymbol, GL_ALPHA_TEST_FUNC));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA_TEST_REF', CardinalSymbol, GL_ALPHA_TEST_REF));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LOGIC_OP_MODE', CardinalSymbol, GL_LOGIC_OP_MODE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INDEX_LOGIC_OP', CardinalSymbol, GL_INDEX_LOGIC_OP));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LOGIC_OP', CardinalSymbol, GL_LOGIC_OP));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_LOGIC_OP', CardinalSymbol, GL_COLOR_LOGIC_OP));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SCISSOR_BOX', CardinalSymbol, GL_SCISSOR_BOX));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SCISSOR_TEST', CardinalSymbol, GL_SCISSOR_TEST));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INDEX_CLEAR_VALUE', CardinalSymbol, GL_INDEX_CLEAR_VALUE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INDEX_WRITEMASK', CardinalSymbol, GL_INDEX_WRITEMASK));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_CLEAR_VALUE', CardinalSymbol, GL_COLOR_CLEAR_VALUE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_WRITEMASK', CardinalSymbol, GL_COLOR_WRITEMASK));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INDEX_MODE', CardinalSymbol, GL_INDEX_MODE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGBA_MODE', CardinalSymbol, GL_RGBA_MODE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RENDER_MODE', CardinalSymbol, GL_RENDER_MODE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PERSPECTIVE_CORRECTION_HINT', CardinalSymbol, GL_PERSPECTIVE_CORRECTION_HINT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POINT_SMOOTH_HINT', CardinalSymbol, GL_POINT_SMOOTH_HINT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINE_SMOOTH_HINT', CardinalSymbol, GL_LINE_SMOOTH_HINT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_SMOOTH_HINT', CardinalSymbol, GL_POLYGON_SMOOTH_HINT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_HINT', CardinalSymbol, GL_FOG_HINT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_GEN_S', CardinalSymbol, GL_TEXTURE_GEN_S));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_GEN_T', CardinalSymbol, GL_TEXTURE_GEN_T));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_GEN_R', CardinalSymbol, GL_TEXTURE_GEN_R));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_GEN_Q', CardinalSymbol, GL_TEXTURE_GEN_Q));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_I_TO_I_SIZE', CardinalSymbol, GL_PIXEL_MAP_I_TO_I_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_S_TO_S_SIZE', CardinalSymbol, GL_PIXEL_MAP_S_TO_S_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_I_TO_R_SIZE', CardinalSymbol, GL_PIXEL_MAP_I_TO_R_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_I_TO_G_SIZE', CardinalSymbol, GL_PIXEL_MAP_I_TO_G_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_I_TO_B_SIZE', CardinalSymbol, GL_PIXEL_MAP_I_TO_B_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_I_TO_A_SIZE', CardinalSymbol, GL_PIXEL_MAP_I_TO_A_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_R_TO_R_SIZE', CardinalSymbol, GL_PIXEL_MAP_R_TO_R_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_G_TO_G_SIZE', CardinalSymbol, GL_PIXEL_MAP_G_TO_G_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_B_TO_B_SIZE', CardinalSymbol, GL_PIXEL_MAP_B_TO_B_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_MAP_A_TO_A_SIZE', CardinalSymbol, GL_PIXEL_MAP_A_TO_A_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNPACK_SWAP_BYTES', CardinalSymbol, GL_UNPACK_SWAP_BYTES));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNPACK_LSB_FIRST', CardinalSymbol, GL_UNPACK_LSB_FIRST));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNPACK_ROW_LENGTH', CardinalSymbol, GL_UNPACK_ROW_LENGTH));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNPACK_SKIP_ROWS', CardinalSymbol, GL_UNPACK_SKIP_ROWS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNPACK_SKIP_PIXELS', CardinalSymbol, GL_UNPACK_SKIP_PIXELS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNPACK_ALIGNMENT', CardinalSymbol, GL_UNPACK_ALIGNMENT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PACK_SWAP_BYTES', CardinalSymbol, GL_PACK_SWAP_BYTES));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PACK_LSB_FIRST', CardinalSymbol, GL_PACK_LSB_FIRST));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PACK_ROW_LENGTH', CardinalSymbol, GL_PACK_ROW_LENGTH));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PACK_SKIP_ROWS', CardinalSymbol, GL_PACK_SKIP_ROWS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PACK_SKIP_PIXELS', CardinalSymbol, GL_PACK_SKIP_PIXELS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PACK_ALIGNMENT', CardinalSymbol, GL_PACK_ALIGNMENT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PACK_SKIP_IMAGES', CardinalSymbol, GL_PACK_SKIP_IMAGES));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PACK_IMAGE_HEIGHT', CardinalSymbol, GL_PACK_IMAGE_HEIGHT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNPACK_SKIP_IMAGES', CardinalSymbol, GL_UNPACK_SKIP_IMAGES));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNPACK_IMAGE_HEIGHT', CardinalSymbol, GL_UNPACK_IMAGE_HEIGHT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP_COLOR', CardinalSymbol, GL_MAP_COLOR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP_STENCIL', CardinalSymbol, GL_MAP_STENCIL));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INDEX_SHIFT', CardinalSymbol, GL_INDEX_SHIFT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INDEX_OFFSET', CardinalSymbol, GL_INDEX_OFFSET));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RED_SCALE', CardinalSymbol, GL_RED_SCALE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RED_BIAS', CardinalSymbol, GL_RED_BIAS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ZOOM_X', CardinalSymbol, GL_ZOOM_X));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ZOOM_Y', CardinalSymbol, GL_ZOOM_Y));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_GREEN_SCALE', CardinalSymbol, GL_GREEN_SCALE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_GREEN_BIAS', CardinalSymbol, GL_GREEN_BIAS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLUE_SCALE', CardinalSymbol, GL_BLUE_SCALE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLUE_BIAS', CardinalSymbol, GL_BLUE_BIAS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA_SCALE', CardinalSymbol, GL_ALPHA_SCALE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA_BIAS', CardinalSymbol, GL_ALPHA_BIAS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH_SCALE', CardinalSymbol, GL_DEPTH_SCALE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH_BIAS', CardinalSymbol, GL_DEPTH_BIAS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_EVAL_ORDER', CardinalSymbol, GL_MAX_EVAL_ORDER));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_LIGHTS', CardinalSymbol, GL_MAX_LIGHTS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_CLIP_PLANES', CardinalSymbol, GL_MAX_CLIP_PLANES));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_TEXTURE_SIZE', CardinalSymbol, GL_MAX_TEXTURE_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_3D_TEXTURE_SIZE', CardinalSymbol, GL_MAX_3D_TEXTURE_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PIXEL_MAP_TABLE', CardinalSymbol, GL_MAX_PIXEL_MAP_TABLE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_ATTRIB_STACK_DEPTH', CardinalSymbol, GL_MAX_ATTRIB_STACK_DEPTH));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_MODELVIEW_STACK_DEPTH', CardinalSymbol, GL_MAX_MODELVIEW_STACK_DEPTH));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_NAME_STACK_DEPTH', CardinalSymbol, GL_MAX_NAME_STACK_DEPTH));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROJECTION_STACK_DEPTH', CardinalSymbol, GL_MAX_PROJECTION_STACK_DEPTH));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_TEXTURE_STACK_DEPTH', CardinalSymbol, GL_MAX_TEXTURE_STACK_DEPTH));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_VIEWPORT_DIMS', CardinalSymbol, GL_MAX_VIEWPORT_DIMS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_CLIENT_ATTRIB_STACK_DEPTH', CardinalSymbol, GL_MAX_CLIENT_ATTRIB_STACK_DEPTH));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_ELEMENTS_VERTICES', CardinalSymbol, GL_MAX_ELEMENTS_VERTICES));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_ELEMENTS_INDICES', CardinalSymbol, GL_MAX_ELEMENTS_INDICES));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RESCALE_NORMAL', CardinalSymbol, GL_RESCALE_NORMAL));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SUBPIXEL_BITS', CardinalSymbol, GL_SUBPIXEL_BITS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INDEX_BITS', CardinalSymbol, GL_INDEX_BITS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RED_BITS', CardinalSymbol, GL_RED_BITS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_GREEN_BITS', CardinalSymbol, GL_GREEN_BITS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLUE_BITS', CardinalSymbol, GL_BLUE_BITS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA_BITS', CardinalSymbol, GL_ALPHA_BITS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH_BITS', CardinalSymbol, GL_DEPTH_BITS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STENCIL_BITS', CardinalSymbol, GL_STENCIL_BITS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ACCUM_RED_BITS', CardinalSymbol, GL_ACCUM_RED_BITS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ACCUM_GREEN_BITS', CardinalSymbol, GL_ACCUM_GREEN_BITS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ACCUM_BLUE_BITS', CardinalSymbol, GL_ACCUM_BLUE_BITS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ACCUM_ALPHA_BITS', CardinalSymbol, GL_ACCUM_ALPHA_BITS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NAME_STACK_DEPTH', CardinalSymbol, GL_NAME_STACK_DEPTH));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_AUTO_NORMAL', CardinalSymbol, GL_AUTO_NORMAL));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_COLOR_4', CardinalSymbol, GL_MAP1_COLOR_4));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_INDEX', CardinalSymbol, GL_MAP1_INDEX));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_NORMAL', CardinalSymbol, GL_MAP1_NORMAL));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_TEXTURE_COORD_1', CardinalSymbol, GL_MAP1_TEXTURE_COORD_1));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_TEXTURE_COORD_2', CardinalSymbol, GL_MAP1_TEXTURE_COORD_2));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_TEXTURE_COORD_3', CardinalSymbol, GL_MAP1_TEXTURE_COORD_3));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_TEXTURE_COORD_4', CardinalSymbol, GL_MAP1_TEXTURE_COORD_4));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_3', CardinalSymbol, GL_MAP1_VERTEX_3));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_4', CardinalSymbol, GL_MAP1_VERTEX_4));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_COLOR_4', CardinalSymbol, GL_MAP2_COLOR_4));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_INDEX', CardinalSymbol, GL_MAP2_INDEX));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_NORMAL', CardinalSymbol, GL_MAP2_NORMAL));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_TEXTURE_COORD_1', CardinalSymbol, GL_MAP2_TEXTURE_COORD_1));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_TEXTURE_COORD_2', CardinalSymbol, GL_MAP2_TEXTURE_COORD_2));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_TEXTURE_COORD_3', CardinalSymbol, GL_MAP2_TEXTURE_COORD_3));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_TEXTURE_COORD_4', CardinalSymbol, GL_MAP2_TEXTURE_COORD_4));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_3', CardinalSymbol, GL_MAP2_VERTEX_3));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_4', CardinalSymbol, GL_MAP2_VERTEX_4));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_GRID_DOMAIN', CardinalSymbol, GL_MAP1_GRID_DOMAIN));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_GRID_SEGMENTS', CardinalSymbol, GL_MAP1_GRID_SEGMENTS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_GRID_DOMAIN', CardinalSymbol, GL_MAP2_GRID_DOMAIN));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_GRID_SEGMENTS', CardinalSymbol, GL_MAP2_GRID_SEGMENTS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_1D', CardinalSymbol, GL_TEXTURE_1D));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_2D', CardinalSymbol, GL_TEXTURE_2D));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_3D', CardinalSymbol, GL_TEXTURE_3D));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SELECTION_BUFFER_POINTER', CardinalSymbol, GL_SELECTION_BUFFER_POINTER));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SELECTION_BUFFER_SIZE', CardinalSymbol, GL_SELECTION_BUFFER_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_OFFSET_UNITS', CardinalSymbol, GL_POLYGON_OFFSET_UNITS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_OFFSET_POINT', CardinalSymbol, GL_POLYGON_OFFSET_POINT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_OFFSET_LINE', CardinalSymbol, GL_POLYGON_OFFSET_LINE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_OFFSET_FILL', CardinalSymbol, GL_POLYGON_OFFSET_FILL));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_OFFSET_FACTOR', CardinalSymbol, GL_POLYGON_OFFSET_FACTOR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_BINDING_1D', CardinalSymbol, GL_TEXTURE_BINDING_1D));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_BINDING_2D', CardinalSymbol, GL_TEXTURE_BINDING_2D));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ARRAY', CardinalSymbol, GL_VERTEX_ARRAY));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NORMAL_ARRAY', CardinalSymbol, GL_NORMAL_ARRAY));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_ARRAY', CardinalSymbol, GL_COLOR_ARRAY));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INDEX_ARRAY', CardinalSymbol, GL_INDEX_ARRAY));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COORD_ARRAY', CardinalSymbol, GL_TEXTURE_COORD_ARRAY));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EDGE_FLAG_ARRAY', CardinalSymbol, GL_EDGE_FLAG_ARRAY));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ARRAY_SIZE', CardinalSymbol, GL_VERTEX_ARRAY_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ARRAY_TYPE', CardinalSymbol, GL_VERTEX_ARRAY_TYPE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ARRAY_STRIDE', CardinalSymbol, GL_VERTEX_ARRAY_STRIDE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NORMAL_ARRAY_TYPE', CardinalSymbol, GL_NORMAL_ARRAY_TYPE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NORMAL_ARRAY_STRIDE', CardinalSymbol, GL_NORMAL_ARRAY_STRIDE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_ARRAY_SIZE', CardinalSymbol, GL_COLOR_ARRAY_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_ARRAY_TYPE', CardinalSymbol, GL_COLOR_ARRAY_TYPE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_ARRAY_STRIDE', CardinalSymbol, GL_COLOR_ARRAY_STRIDE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INDEX_ARRAY_TYPE', CardinalSymbol, GL_INDEX_ARRAY_TYPE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INDEX_ARRAY_STRIDE', CardinalSymbol, GL_INDEX_ARRAY_STRIDE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COORD_ARRAY_SIZE', CardinalSymbol, GL_TEXTURE_COORD_ARRAY_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COORD_ARRAY_TYPE', CardinalSymbol, GL_TEXTURE_COORD_ARRAY_TYPE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COORD_ARRAY_STRIDE', CardinalSymbol, GL_TEXTURE_COORD_ARRAY_STRIDE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EDGE_FLAG_ARRAY_STRIDE', CardinalSymbol, GL_EDGE_FLAG_ARRAY_STRIDE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_MATRIX', CardinalSymbol, GL_COLOR_MATRIX));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_MATRIX_STACK_DEPTH', CardinalSymbol, GL_COLOR_MATRIX_STACK_DEPTH));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_COLOR_MATRIX_STACK_DEPTH', CardinalSymbol, GL_MAX_COLOR_MATRIX_STACK_DEPTH));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_RED_SCALE', CardinalSymbol, GL_POST_COLOR_MATRIX_RED_SCALE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_GREEN_SCALE', CardinalSymbol, GL_POST_COLOR_MATRIX_GREEN_SCALE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_BLUE_SCALE', CardinalSymbol, GL_POST_COLOR_MATRIX_BLUE_SCALE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_ALPHA_SCALE', CardinalSymbol, GL_POST_COLOR_MATRIX_ALPHA_SCALE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_RED_BIAS', CardinalSymbol, GL_POST_COLOR_MATRIX_RED_BIAS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_GREEN_BIAS', CardinalSymbol, GL_POST_COLOR_MATRIX_GREEN_BIAS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_BLUE_BIAS', CardinalSymbol, GL_POST_COLOR_MATRIX_BLUE_BIAS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_ALPHA_BIAS', CardinalSymbol, GL_POST_COLOR_MATRIX_ALPHA_BIAS));
+
+  // evaluators
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COEFF', CardinalSymbol, GL_COEFF));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ORDER', CardinalSymbol, GL_ORDER));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DOMAIN', CardinalSymbol, GL_DOMAIN));
+
+  // texture mapping
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_WIDTH', CardinalSymbol, GL_TEXTURE_WIDTH));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_HEIGHT', CardinalSymbol, GL_TEXTURE_HEIGHT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_INTERNAL_FORMAT', CardinalSymbol, GL_TEXTURE_INTERNAL_FORMAT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COMPONENTS', CardinalSymbol, GL_TEXTURE_COMPONENTS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_BORDER_COLOR', CardinalSymbol, GL_TEXTURE_BORDER_COLOR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_BORDER', CardinalSymbol, GL_TEXTURE_BORDER));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_RED_SIZE', CardinalSymbol, GL_TEXTURE_RED_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_GREEN_SIZE', CardinalSymbol, GL_TEXTURE_GREEN_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_BLUE_SIZE', CardinalSymbol, GL_TEXTURE_BLUE_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_ALPHA_SIZE', CardinalSymbol, GL_TEXTURE_ALPHA_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_LUMINANCE_SIZE', CardinalSymbol, GL_TEXTURE_LUMINANCE_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_INTENSITY_SIZE', CardinalSymbol, GL_TEXTURE_INTENSITY_SIZE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_PRIORITY', CardinalSymbol, GL_TEXTURE_PRIORITY));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_RESIDENT', CardinalSymbol, GL_TEXTURE_RESIDENT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BGR', CardinalSymbol, GL_BGR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BGRA', CardinalSymbol, GL_BGRA));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_S', CardinalSymbol, GL_S));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_T', CardinalSymbol, GL_T));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_R', CardinalSymbol, GL_R));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_Q', CardinalSymbol, GL_Q));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODULATE', CardinalSymbol, GL_MODULATE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DECAL', CardinalSymbol, GL_DECAL));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_ENV_MODE', CardinalSymbol, GL_TEXTURE_ENV_MODE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_ENV_COLOR', CardinalSymbol, GL_TEXTURE_ENV_COLOR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_ENV', CardinalSymbol, GL_TEXTURE_ENV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EYE_LINEAR', CardinalSymbol, GL_EYE_LINEAR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_LINEAR', CardinalSymbol, GL_OBJECT_LINEAR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SPHERE_MAP', CardinalSymbol, GL_SPHERE_MAP));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_GEN_MODE', CardinalSymbol, GL_TEXTURE_GEN_MODE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_PLANE', CardinalSymbol, GL_OBJECT_PLANE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EYE_PLANE', CardinalSymbol, GL_EYE_PLANE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NEAREST', CardinalSymbol, GL_NEAREST));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINEAR', CardinalSymbol, GL_LINEAR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NEAREST_MIPMAP_NEAREST', CardinalSymbol, GL_NEAREST_MIPMAP_NEAREST));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINEAR_MIPMAP_NEAREST', CardinalSymbol, GL_LINEAR_MIPMAP_NEAREST));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NEAREST_MIPMAP_LINEAR', CardinalSymbol, GL_NEAREST_MIPMAP_LINEAR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LINEAR_MIPMAP_LINEAR', CardinalSymbol, GL_LINEAR_MIPMAP_LINEAR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_MAG_FILTER', CardinalSymbol, GL_TEXTURE_MAG_FILTER));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_MIN_FILTER', CardinalSymbol, GL_TEXTURE_MIN_FILTER));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_WRAP_R', CardinalSymbol, GL_TEXTURE_WRAP_R));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_WRAP_S', CardinalSymbol, GL_TEXTURE_WRAP_S));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_WRAP_T', CardinalSymbol, GL_TEXTURE_WRAP_T));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLAMP_TO_EDGE', CardinalSymbol, GL_CLAMP_TO_EDGE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_MIN_LOD', CardinalSymbol, GL_TEXTURE_MIN_LOD));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_MAX_LOD', CardinalSymbol, GL_TEXTURE_MAX_LOD));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_BASE_LEVEL', CardinalSymbol, GL_TEXTURE_BASE_LEVEL));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_MAX_LEVEL', CardinalSymbol, GL_TEXTURE_MAX_LEVEL));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_DEPTH', CardinalSymbol, GL_TEXTURE_DEPTH));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROXY_TEXTURE_1D', CardinalSymbol, GL_PROXY_TEXTURE_1D));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROXY_TEXTURE_2D', CardinalSymbol, GL_PROXY_TEXTURE_2D));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROXY_TEXTURE_3D', CardinalSymbol, GL_PROXY_TEXTURE_3D));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLAMP', CardinalSymbol, GL_CLAMP));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_REPEAT', CardinalSymbol, GL_REPEAT));
+
+  // hints
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DONT_CARE', CardinalSymbol, GL_DONT_CARE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FASTEST', CardinalSymbol, GL_FASTEST));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NICEST', CardinalSymbol, GL_NICEST));
+
+  // data types
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BYTE', CardinalSymbol, GL_BYTE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_BYTE', CardinalSymbol, GL_UNSIGNED_BYTE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SHORT', CardinalSymbol, GL_SHORT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_SHORT', CardinalSymbol, GL_UNSIGNED_SHORT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INT', CardinalSymbol, GL_INT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_INT', CardinalSymbol, GL_UNSIGNED_INT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FLOAT', CardinalSymbol, GL_FLOAT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_2_BYTES', CardinalSymbol, GL_2_BYTES));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_3_BYTES', CardinalSymbol, GL_3_BYTES));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_4_BYTES', CardinalSymbol, GL_4_BYTES));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DOUBLE', CardinalSymbol, GL_DOUBLE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DOUBLE_EXT', CardinalSymbol, GL_DOUBLE_EXT));
+
+  // logic operations
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLEAR', CardinalSymbol, GL_CLEAR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_AND', CardinalSymbol, GL_AND));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_AND_REVERSE', CardinalSymbol, GL_AND_REVERSE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COPY', CardinalSymbol, GL_COPY));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_AND_INVERTED', CardinalSymbol, GL_AND_INVERTED));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NOOP', CardinalSymbol, GL_NOOP));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_XOR', CardinalSymbol, GL_XOR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OR', CardinalSymbol, GL_OR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NOR', CardinalSymbol, GL_NOR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EQUIV', CardinalSymbol, GL_EQUIV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INVERT', CardinalSymbol, GL_INVERT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OR_REVERSE', CardinalSymbol, GL_OR_REVERSE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COPY_INVERTED', CardinalSymbol, GL_COPY_INVERTED));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OR_INVERTED', CardinalSymbol, GL_OR_INVERTED));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NAND', CardinalSymbol, GL_NAND));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SET', CardinalSymbol, GL_SET));
+
+  // PixelCopyType
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR', CardinalSymbol, GL_COLOR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH', CardinalSymbol, GL_DEPTH));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STENCIL', CardinalSymbol, GL_STENCIL));
+
+  // pixel formats
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_INDEX', CardinalSymbol, GL_COLOR_INDEX));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STENCIL_INDEX', CardinalSymbol, GL_STENCIL_INDEX));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH_COMPONENT', CardinalSymbol, GL_DEPTH_COMPONENT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RED', CardinalSymbol, GL_RED));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_GREEN', CardinalSymbol, GL_GREEN));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLUE', CardinalSymbol, GL_BLUE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA', CardinalSymbol, GL_ALPHA));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB', CardinalSymbol, GL_RGB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGBA', CardinalSymbol, GL_RGBA));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE', CardinalSymbol, GL_LUMINANCE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE_ALPHA', CardinalSymbol, GL_LUMINANCE_ALPHA));
+
+  // pixel type
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BITMAP', CardinalSymbol, GL_BITMAP));
+
+  // rendering modes
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RENDER', CardinalSymbol, GL_RENDER));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FEEDBACK', CardinalSymbol, GL_FEEDBACK));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SELECT', CardinalSymbol, GL_SELECT));
+
+  // implementation strings
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VENDOR', CardinalSymbol, GL_VENDOR));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RENDERER', CardinalSymbol, GL_RENDERER));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERSION', CardinalSymbol, GL_VERSION));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EXTENSIONS', CardinalSymbol, GL_EXTENSIONS));
+
+  // pixel formats
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_R3_G3_B2', CardinalSymbol, GL_R3_G3_B2));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA4', CardinalSymbol, GL_ALPHA4));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA8', CardinalSymbol, GL_ALPHA8));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA12', CardinalSymbol, GL_ALPHA12));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA16', CardinalSymbol, GL_ALPHA16));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE4', CardinalSymbol, GL_LUMINANCE4));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE8', CardinalSymbol, GL_LUMINANCE8));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE12', CardinalSymbol, GL_LUMINANCE12));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE16', CardinalSymbol, GL_LUMINANCE16));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE4_ALPHA4', CardinalSymbol, GL_LUMINANCE4_ALPHA4));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE6_ALPHA2', CardinalSymbol, GL_LUMINANCE6_ALPHA2));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE8_ALPHA8', CardinalSymbol, GL_LUMINANCE8_ALPHA8));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE12_ALPHA4', CardinalSymbol, GL_LUMINANCE12_ALPHA4));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE12_ALPHA12', CardinalSymbol, GL_LUMINANCE12_ALPHA12));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE16_ALPHA16', CardinalSymbol, GL_LUMINANCE16_ALPHA16));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INTENSITY', CardinalSymbol, GL_INTENSITY));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INTENSITY4', CardinalSymbol, GL_INTENSITY4));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INTENSITY8', CardinalSymbol, GL_INTENSITY8));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INTENSITY12', CardinalSymbol, GL_INTENSITY12));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INTENSITY16', CardinalSymbol, GL_INTENSITY16));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB4', CardinalSymbol, GL_RGB4));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB5', CardinalSymbol, GL_RGB5));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB8', CardinalSymbol, GL_RGB8));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB10', CardinalSymbol, GL_RGB10));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB12', CardinalSymbol, GL_RGB12));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB16', CardinalSymbol, GL_RGB16));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGBA2', CardinalSymbol, GL_RGBA2));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGBA4', CardinalSymbol, GL_RGBA4));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB5_A1', CardinalSymbol, GL_RGB5_A1));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGBA8', CardinalSymbol, GL_RGBA8));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB10_A2', CardinalSymbol, GL_RGB10_A2));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGBA12', CardinalSymbol, GL_RGBA12));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGBA16', CardinalSymbol, GL_RGBA16));
+
+  // interleaved arrays formats
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_V2F', CardinalSymbol, GL_V2F));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_V3F', CardinalSymbol, GL_V3F));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_C4UB_V2F', CardinalSymbol, GL_C4UB_V2F));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_C4UB_V3F', CardinalSymbol, GL_C4UB_V3F));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_C3F_V3F', CardinalSymbol, GL_C3F_V3F));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_N3F_V3F', CardinalSymbol, GL_N3F_V3F));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_C4F_N3F_V3F', CardinalSymbol, GL_C4F_N3F_V3F));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_T2F_V3F', CardinalSymbol, GL_T2F_V3F));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_T4F_V4F', CardinalSymbol, GL_T4F_V4F));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_T2F_C4UB_V3F', CardinalSymbol, GL_T2F_C4UB_V3F));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_T2F_C3F_V3F', CardinalSymbol, GL_T2F_C3F_V3F));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_T2F_N3F_V3F', CardinalSymbol, GL_T2F_N3F_V3F));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_T2F_C4F_N3F_V3F', CardinalSymbol, GL_T2F_C4F_N3F_V3F));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_T4F_C4F_N3F_V4F', CardinalSymbol, GL_T4F_C4F_N3F_V4F));
+
+  // clip planes
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLIP_PLANE0', CardinalSymbol, GL_CLIP_PLANE0));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLIP_PLANE1', CardinalSymbol, GL_CLIP_PLANE1));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLIP_PLANE2', CardinalSymbol, GL_CLIP_PLANE2));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLIP_PLANE3', CardinalSymbol, GL_CLIP_PLANE3));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLIP_PLANE4', CardinalSymbol, GL_CLIP_PLANE4));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLIP_PLANE5', CardinalSymbol, GL_CLIP_PLANE5));
+
+  // miscellaneous
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DITHER', CardinalSymbol, GL_DITHER));
+
+  // Add extensions
+  AddExtensionUnitSymbols(SymbolTable);
+
+  // ---------- GL procedures ----------
+
+  TGLPushAttrib.Create(SymbolTable, 'glPushAttrib', ['mask', 'Cardinal'], '');
+  TGLPopAttrib.Create(SymbolTable, 'glPopAttrib', [], '');
+  TGLPushClientAttrib.Create(SymbolTable, 'glPushClientAttrib', ['mask', 'Cardinal'], '');
+  TGLPopClientAttrib.Create(SymbolTable, 'glPopClientAttrib', [], '');
+
+  TGLEnable.Create(SymbolTable, 'glEnable', ['cap', 'Cardinal'], '');
+  TGLDisable.Create(SymbolTable, 'glDisable', ['cap', 'Cardinal'], '');
+  TGLEnableClientState.Create(SymbolTable, 'glEnableClientState', ['aarray', 'Cardinal'], '');
+  TGLDisableClientState.Create(SymbolTable, 'glDisableClientState', ['aarray', 'Cardinal'], '');
+
+  TGLMatrixMode.Create(SymbolTable, 'glMatrixMode', ['mode', 'Cardinal'], '');
+  TGLPushMatrix.Create(SymbolTable, 'glPushMatrix', [], '');
+  TGLPopMatrix.Create(SymbolTable, 'glPopMatrix', [], '');
+  TGLLoadIdentity.Create(SymbolTable, 'glLoadIdentity', [], '');
+  TGLLoadMatrixf.Create(SymbolTable, 'glLoadMatrixf', ['m', 'TMatrix'], '');
+  TGLTranslatef.Create(SymbolTable, 'glTranslatef', ['x', 'Float', 'y', 'Float', 'z', 'Float'], '');
+  TGLRotatef.Create(SymbolTable, 'glRotatef', ['angle', 'Float', 'x', 'Float', 'y', 'Float', 'z', 'Float'], '');
+  TGLScalef.Create(SymbolTable, 'glScalef', ['x', 'Float', 'y', 'Float', 'z', 'Float'], '');
+
+  TGLShadeModel.Create(SymbolTable, 'glShadeModel', ['mode', 'Cardinal'], '');
+  TGLCullFace.Create(SymbolTable, 'glCullFace', ['mode', 'Cardinal'], '');
+  TGLFrontFace.Create(SymbolTable, 'glFrontFace', ['mode', 'Cardinal'], '');
+  TGLPolygonMode.Create(SymbolTable, 'glPolygonMode', ['face', 'Cardinal', 'mode', 'Cardinal'], '');
+  TGLBegin.Create(SymbolTable, 'glBegin', ['mode', 'Cardinal'], '');
+  TGLEnd.Create(SymbolTable, 'glEnd', [], '');
+  TGLColor3f.Create(SymbolTable, 'glColor3f', ['red', 'Float', 'green', 'Float', 'blue', 'Float'], '');
+  TGLColor4f.Create(SymbolTable, 'glColor4f', ['red', 'Float', 'green', 'Float', 'blue', 'Float', 'alpha', 'Float'], '');
+  TGLNormal3f.Create(SymbolTable, 'glNormal3f', ['x', 'Float', 'y', 'Float', 'z', 'Float'], '');
+  TGLVertex3f.Create(SymbolTable, 'glVertex3f', ['x', 'Float', 'y', 'Float', 'z', 'Float'], '');
+  TGLTexCoord1f.Create(SymbolTable, 'glTexCoord1f', ['s', 'Float'], '');
+  TGLTexCoord2f.Create(SymbolTable, 'glTexCoord2f', ['s', 'Float', 't', 'Float'], '');
+  TGLTexCoord3f.Create(SymbolTable, 'glTexCoord3f', ['s', 'Float', 't', 'Float', 'r', 'Float'], '');
+  TGLTexCoord4f.Create(SymbolTable, 'glTexCoord4f', ['s', 'Float', 't', 'Float', 'r', 'Float', 'q', 'Float'], '');
+  TGLLineWidth.Create(SymbolTable, 'glLineWidth', ['width', 'Float'], '');
+
+  TGLMultiTexCoord1f.Create(SymbolTable, 'glMultiTexCoord1f', ['target', 'Cardinal', 's', 'Float'], '');
+  TGLMultiTexCoord2f.Create(SymbolTable, 'glMultiTexCoord2f', ['target', 'Cardinal', 's', 'Float', 't', 'Float'], '');
+  TGLMultiTexCoord3f.Create(SymbolTable, 'glMultiTexCoord3f', ['target', 'Cardinal', 's', 'Float', 't', 'Float', 'r', 'Float'], '');
+  TGLMultiTexCoord4f.Create(SymbolTable, 'glMultiTexCoord4f', ['target', 'Cardinal', 's', 'Float', 't', 'Float', 'r', 'Float', 'q', 'Float'], '');
+  TGLActiveTexture.Create(SymbolTable, 'glActiveTexture', ['target', 'Cardinal'], '');
+  TGLClientActiveTexture.Create(SymbolTable, 'glClientActiveTexture', ['target', 'Cardinal'], '');
+
+  TGLTexEnvf.Create(SymbolTable, 'glTexEnvf', ['target', 'Cardinal', 'pname', 'Cardinal', 'param', 'Float'], '');
+  TGLTexEnvi.Create(SymbolTable, 'glTexEnvi', ['target', 'Cardinal', 'pname', 'Cardinal', 'param', 'Integer'], '');
+
+  TGLBlendFunc.Create(SymbolTable, 'glBlendFunc', ['sfactor', 'Cardinal', 'dfactor', 'Cardinal'], '');
+
+  TGLDepthFunc.Create(SymbolTable, 'glDepthFunc', ['func', 'Cardinal'], '');
+  TGLDepthMask.Create(SymbolTable, 'glDepthMask', ['flag', 'Byte'], '');
+  TGLDepthRange.Create(SymbolTable, 'glDepthRange', ['znear', 'Float', 'zfar', 'Float'], '');
+
+  TGLStencilFunc.Create(SymbolTable, 'glStencilFunc', ['func', 'Cardinal', 'ref', 'Integer', 'mask', 'Cardinal'], '');
+  TGLStencilMask.Create(SymbolTable, 'glStencilMask', ['mask', 'Cardinal'], '');
+  TGLStencilOp.Create(SymbolTable, 'glStencilOp', ['fail', 'Cardinal', 'zfail', 'Cardinal', 'zpass', 'Cardinal'], '');
+
+  TGLLogicOp.Create(SymbolTable, 'glLogicOp', ['opcode', 'Cardinal'], '');
+end;
+
+procedure TdwsOpenGLUnit.AddExtensionUnitSymbols(SymbolTable: TSymbolTable);
+var
+  CardinalSymbol,
+  ByteSymbol : TSymbol;
+begin
+  CardinalSymbol:=SymbolTable.FindSymbol('Cardinal');
+  if not Assigned(CardinalSymbol) then 
+  begin
+    CardinalSymbol:=TBaseSymbol.Create('Cardinal', TypCardinalID, VarAsType(0, varLongWord));
+    SymbolTable.AddSymbol(CardinalSymbol);
+  end;
+
+  ByteSymbol:=SymbolTable.FindSymbol('Byte');
+  if not Assigned(ByteSymbol) then 
+  begin
+    ByteSymbol:=TBaseSymbol.Create('Byte', TypByteID, VarAsType(0, varByte));
+    SymbolTable.AddSymbol(ByteSymbol);
+  end;
+
+  // ---------- extensions enumerants ----------
+
+  // EXT_abgr
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ABGR_EXT', CardinalSymbol, GL_ABGR_EXT));
+
+  // EXT_packed_pixels
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_BYTE_3_3_2_EXT', CardinalSymbol, GL_UNSIGNED_BYTE_3_3_2_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_SHORT_4_4_4_4_EXT', CardinalSymbol, GL_UNSIGNED_SHORT_4_4_4_4_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_SHORT_5_5_5_1_EXT', CardinalSymbol, GL_UNSIGNED_SHORT_5_5_5_1_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_INT_8_8_8_8_EXT', CardinalSymbol, GL_UNSIGNED_INT_8_8_8_8_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_INT_10_10_10_2_EXT', CardinalSymbol, GL_UNSIGNED_INT_10_10_10_2_EXT));
+
+  // EXT_bgra
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BGR_EXT', CardinalSymbol, GL_BGR_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BGRA_EXT', CardinalSymbol, GL_BGRA_EXT));
+
+  // EXT_paletted_texture
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_INDEX1_EXT', CardinalSymbol, GL_COLOR_INDEX1_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_INDEX2_EXT', CardinalSymbol, GL_COLOR_INDEX2_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_INDEX4_EXT', CardinalSymbol, GL_COLOR_INDEX4_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_INDEX8_EXT', CardinalSymbol, GL_COLOR_INDEX8_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_INDEX12_EXT', CardinalSymbol, GL_COLOR_INDEX12_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_INDEX16_EXT', CardinalSymbol, GL_COLOR_INDEX16_EXT));
+
+  // EXT_blend_color
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONSTANT_COLOR_EXT', CardinalSymbol, GL_CONSTANT_COLOR_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ONE_MINUS_CONSTANT_COLOR_EXT', CardinalSymbol, GL_ONE_MINUS_CONSTANT_COLOR_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONSTANT_ALPHA_EXT', CardinalSymbol, GL_CONSTANT_ALPHA_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ONE_MINUS_CONSTANT_ALPHA_EXT', CardinalSymbol, GL_ONE_MINUS_CONSTANT_ALPHA_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLEND_COLOR_EXT', CardinalSymbol, GL_BLEND_COLOR_EXT));
+
+  // EXT_blend_minmax
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FUNC_ADD_EXT', CardinalSymbol, GL_FUNC_ADD_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MIN_EXT', CardinalSymbol, GL_MIN_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_EXT', CardinalSymbol, GL_MAX_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLEND_EQUATION_EXT', CardinalSymbol, GL_BLEND_EQUATION_EXT));
+
+  // EXT_blend_subtract
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FUNC_SUBTRACT_EXT', CardinalSymbol, GL_FUNC_SUBTRACT_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FUNC_REVERSE_SUBTRACT_EXT', CardinalSymbol, GL_FUNC_REVERSE_SUBTRACT_EXT));
+
+  // EXT_convolution
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_1D_EXT', CardinalSymbol, GL_CONVOLUTION_1D_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_2D_EXT', CardinalSymbol, GL_CONVOLUTION_2D_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SEPARABLE_2D_EXT', CardinalSymbol, GL_SEPARABLE_2D_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_BORDER_MODE_EXT', CardinalSymbol, GL_CONVOLUTION_BORDER_MODE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_FILTER_SCALE_EXT', CardinalSymbol, GL_CONVOLUTION_FILTER_SCALE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_FILTER_BIAS_EXT', CardinalSymbol, GL_CONVOLUTION_FILTER_BIAS_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_REDUCE_EXT', CardinalSymbol, GL_REDUCE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_FORMAT_EXT', CardinalSymbol, GL_CONVOLUTION_FORMAT_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_WIDTH_EXT', CardinalSymbol, GL_CONVOLUTION_WIDTH_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONVOLUTION_HEIGHT_EXT', CardinalSymbol, GL_CONVOLUTION_HEIGHT_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_CONVOLUTION_WIDTH_EXT', CardinalSymbol, GL_MAX_CONVOLUTION_WIDTH_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_CONVOLUTION_HEIGHT_EXT', CardinalSymbol, GL_MAX_CONVOLUTION_HEIGHT_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_RED_SCALE_EXT', CardinalSymbol, GL_POST_CONVOLUTION_RED_SCALE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_GREEN_SCALE_EXT', CardinalSymbol, GL_POST_CONVOLUTION_GREEN_SCALE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_BLUE_SCALE_EXT', CardinalSymbol, GL_POST_CONVOLUTION_BLUE_SCALE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_ALPHA_SCALE_EXT', CardinalSymbol, GL_POST_CONVOLUTION_ALPHA_SCALE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_RED_BIAS_EXT', CardinalSymbol, GL_POST_CONVOLUTION_RED_BIAS_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_GREEN_BIAS_EXT', CardinalSymbol, GL_POST_CONVOLUTION_GREEN_BIAS_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_BLUE_BIAS_EXT', CardinalSymbol, GL_POST_CONVOLUTION_BLUE_BIAS_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_CONVOLUTION_ALPHA_BIAS_EXT', CardinalSymbol, GL_POST_CONVOLUTION_ALPHA_BIAS_EXT));
+
+  // EXT_histogram
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_EXT', CardinalSymbol, GL_HISTOGRAM_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROXY_HISTOGRAM_EXT', CardinalSymbol, GL_PROXY_HISTOGRAM_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_WIDTH_EXT', CardinalSymbol, GL_HISTOGRAM_WIDTH_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_FORMAT_EXT', CardinalSymbol, GL_HISTOGRAM_FORMAT_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_RED_SIZE_EXT', CardinalSymbol, GL_HISTOGRAM_RED_SIZE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_GREEN_SIZE_EXT', CardinalSymbol, GL_HISTOGRAM_GREEN_SIZE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_BLUE_SIZE_EXT', CardinalSymbol, GL_HISTOGRAM_BLUE_SIZE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_ALPHA_SIZE_EXT', CardinalSymbol, GL_HISTOGRAM_ALPHA_SIZE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_LUMINANCE_SIZE_EXT', CardinalSymbol, GL_HISTOGRAM_LUMINANCE_SIZE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HISTOGRAM_SINK_EXT', CardinalSymbol, GL_HISTOGRAM_SINK_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MINMAX_EXT', CardinalSymbol, GL_MINMAX_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MINMAX_FORMAT_EXT', CardinalSymbol, GL_MINMAX_FORMAT_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MINMAX_SINK_EXT', CardinalSymbol, GL_MINMAX_SINK_EXT));
+
+  // EXT_polygon_offset
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_OFFSET_EXT', CardinalSymbol, GL_POLYGON_OFFSET_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_OFFSET_FACTOR_EXT', CardinalSymbol, GL_POLYGON_OFFSET_FACTOR_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POLYGON_OFFSET_BIAS_EXT', CardinalSymbol, GL_POLYGON_OFFSET_BIAS_EXT));
+
+  // EXT_texture
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA4_EXT', CardinalSymbol, GL_ALPHA4_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA8_EXT', CardinalSymbol, GL_ALPHA8_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA12_EXT', CardinalSymbol, GL_ALPHA12_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALPHA16_EXT', CardinalSymbol, GL_ALPHA16_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE4_EXT', CardinalSymbol, GL_LUMINANCE4_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE8_EXT', CardinalSymbol, GL_LUMINANCE8_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE12_EXT', CardinalSymbol, GL_LUMINANCE12_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE16_EXT', CardinalSymbol, GL_LUMINANCE16_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE4_ALPHA4_EXT', CardinalSymbol, GL_LUMINANCE4_ALPHA4_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE6_ALPHA2_EXT', CardinalSymbol, GL_LUMINANCE6_ALPHA2_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE8_ALPHA8_EXT', CardinalSymbol, GL_LUMINANCE8_ALPHA8_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE12_ALPHA4_EXT', CardinalSymbol, GL_LUMINANCE12_ALPHA4_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE12_ALPHA12_EXT', CardinalSymbol, GL_LUMINANCE12_ALPHA12_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LUMINANCE16_ALPHA16_EXT', CardinalSymbol, GL_LUMINANCE16_ALPHA16_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INTENSITY_EXT', CardinalSymbol, GL_INTENSITY_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INTENSITY4_EXT', CardinalSymbol, GL_INTENSITY4_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INTENSITY8_EXT', CardinalSymbol, GL_INTENSITY8_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INTENSITY12_EXT', CardinalSymbol, GL_INTENSITY12_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INTENSITY16_EXT', CardinalSymbol, GL_INTENSITY16_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB2_EXT', CardinalSymbol, GL_RGB2_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB4_EXT', CardinalSymbol, GL_RGB4_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB5_EXT', CardinalSymbol, GL_RGB5_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB8_EXT', CardinalSymbol, GL_RGB8_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB10_EXT', CardinalSymbol, GL_RGB10_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB12_EXT', CardinalSymbol, GL_RGB12_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB16_EXT', CardinalSymbol, GL_RGB16_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGBA2_EXT', CardinalSymbol, GL_RGBA2_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGBA4_EXT', CardinalSymbol, GL_RGBA4_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB5_A1_EXT', CardinalSymbol, GL_RGB5_A1_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGBA8_EXT', CardinalSymbol, GL_RGBA8_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB10_A2_EXT', CardinalSymbol, GL_RGB10_A2_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGBA12_EXT', CardinalSymbol, GL_RGBA12_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGBA16_EXT', CardinalSymbol, GL_RGBA16_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_RED_SIZE_EXT', CardinalSymbol, GL_TEXTURE_RED_SIZE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_GREEN_SIZE_EXT', CardinalSymbol, GL_TEXTURE_GREEN_SIZE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_BLUE_SIZE_EXT', CardinalSymbol, GL_TEXTURE_BLUE_SIZE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_ALPHA_SIZE_EXT', CardinalSymbol, GL_TEXTURE_ALPHA_SIZE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_LUMINANCE_SIZE_EXT', CardinalSymbol, GL_TEXTURE_LUMINANCE_SIZE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_INTENSITY_SIZE_EXT', CardinalSymbol, GL_TEXTURE_INTENSITY_SIZE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_REPLACE_EXT', CardinalSymbol, GL_REPLACE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROXY_TEXTURE_1D_EXT', CardinalSymbol, GL_PROXY_TEXTURE_1D_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROXY_TEXTURE_2D_EXT', CardinalSymbol, GL_PROXY_TEXTURE_2D_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_TOO_LARGE_EXT', CardinalSymbol, GL_TEXTURE_TOO_LARGE_EXT));
+
+  // EXT_texture_object
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_PRIORITY_EXT', CardinalSymbol, GL_TEXTURE_PRIORITY_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_RESIDENT_EXT', CardinalSymbol, GL_TEXTURE_RESIDENT_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_1D_BINDING_EXT', CardinalSymbol, GL_TEXTURE_1D_BINDING_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_2D_BINDING_EXT', CardinalSymbol, GL_TEXTURE_2D_BINDING_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_3D_BINDING_EXT', CardinalSymbol, GL_TEXTURE_3D_BINDING_EXT));
+
+  // EXT_texture3D
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PACK_SKIP_IMAGES_EXT', CardinalSymbol, GL_PACK_SKIP_IMAGES_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PACK_IMAGE_HEIGHT_EXT', CardinalSymbol, GL_PACK_IMAGE_HEIGHT_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNPACK_SKIP_IMAGES_EXT', CardinalSymbol, GL_UNPACK_SKIP_IMAGES_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNPACK_IMAGE_HEIGHT_EXT', CardinalSymbol, GL_UNPACK_IMAGE_HEIGHT_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_3D_EXT', CardinalSymbol, GL_TEXTURE_3D_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROXY_TEXTURE_3D_EXT', CardinalSymbol, GL_PROXY_TEXTURE_3D_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_DEPTH_EXT', CardinalSymbol, GL_TEXTURE_DEPTH_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_WRAP_R_EXT', CardinalSymbol, GL_TEXTURE_WRAP_R_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_3D_TEXTURE_SIZE_EXT', CardinalSymbol, GL_MAX_3D_TEXTURE_SIZE_EXT));
+
+  // SGI_color_matrix
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_MATRIX_SGI', CardinalSymbol, GL_COLOR_MATRIX_SGI));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_MATRIX_STACK_DEPTH_SGI', CardinalSymbol, GL_COLOR_MATRIX_STACK_DEPTH_SGI));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI', CardinalSymbol, GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_RED_SCALE_SGI', CardinalSymbol, GL_POST_COLOR_MATRIX_RED_SCALE_SGI));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI', CardinalSymbol, GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI', CardinalSymbol, GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI', CardinalSymbol, GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_RED_BIAS_SGI', CardinalSymbol, GL_POST_COLOR_MATRIX_RED_BIAS_SGI));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI', CardinalSymbol, GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI', CardinalSymbol, GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI', CardinalSymbol, GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI));
+
+  // ARB_point_parameters
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POINT_SIZE_MIN_ARB', CardinalSymbol, GL_POINT_SIZE_MIN_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POINT_SIZE_MAX_ARB', CardinalSymbol, GL_POINT_SIZE_MAX_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_POINT_FADE_THRESHOLD_SIZE_ARB', CardinalSymbol, GL_POINT_FADE_THRESHOLD_SIZE_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DISTANCE_ATTENUATION_ARB', CardinalSymbol, GL_DISTANCE_ATTENUATION_ARB));
+
+  // EXT_rescale_normal
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RESCALE_NORMAL_EXT', CardinalSymbol, GL_RESCALE_NORMAL_EXT));
+
+  // EXT_shared_texture_palette
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SHARED_TEXTURE_PALETTE_EXT', CardinalSymbol, GL_SHARED_TEXTURE_PALETTE_EXT));
+
+  // EXT_compiled_vertex_array
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ARRAY_ELEMENT_LOCK_FIRST_EXT', CardinalSymbol, GL_ARRAY_ELEMENT_LOCK_FIRST_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ARRAY_ELEMENT_LOCK_COUNT_EXT', CardinalSymbol, GL_ARRAY_ELEMENT_LOCK_COUNT_EXT));
+
+  // ARB_multitexture
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ACTIVE_TEXTURE_ARB', CardinalSymbol, GL_ACTIVE_TEXTURE_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLIENT_ACTIVE_TEXTURE_ARB', CardinalSymbol, GL_CLIENT_ACTIVE_TEXTURE_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_TEXTURE_UNITS_ARB', CardinalSymbol, GL_MAX_TEXTURE_UNITS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE0_ARB', CardinalSymbol, GL_TEXTURE0_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE1_ARB', CardinalSymbol, GL_TEXTURE1_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE2_ARB', CardinalSymbol, GL_TEXTURE2_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE3_ARB', CardinalSymbol, GL_TEXTURE3_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE4_ARB', CardinalSymbol, GL_TEXTURE4_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE5_ARB', CardinalSymbol, GL_TEXTURE5_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE6_ARB', CardinalSymbol, GL_TEXTURE6_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE7_ARB', CardinalSymbol, GL_TEXTURE7_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE8_ARB', CardinalSymbol, GL_TEXTURE8_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE9_ARB', CardinalSymbol, GL_TEXTURE9_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE10_ARB', CardinalSymbol, GL_TEXTURE10_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE11_ARB', CardinalSymbol, GL_TEXTURE11_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE12_ARB', CardinalSymbol, GL_TEXTURE12_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE13_ARB', CardinalSymbol, GL_TEXTURE13_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE14_ARB', CardinalSymbol, GL_TEXTURE14_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE15_ARB', CardinalSymbol, GL_TEXTURE15_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE16_ARB', CardinalSymbol, GL_TEXTURE16_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE17_ARB', CardinalSymbol, GL_TEXTURE17_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE18_ARB', CardinalSymbol, GL_TEXTURE18_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE19_ARB', CardinalSymbol, GL_TEXTURE19_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE20_ARB', CardinalSymbol, GL_TEXTURE20_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE21_ARB', CardinalSymbol, GL_TEXTURE21_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE22_ARB', CardinalSymbol, GL_TEXTURE22_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE23_ARB', CardinalSymbol, GL_TEXTURE23_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE24_ARB', CardinalSymbol, GL_TEXTURE24_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE25_ARB', CardinalSymbol, GL_TEXTURE25_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE26_ARB', CardinalSymbol, GL_TEXTURE26_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE27_ARB', CardinalSymbol, GL_TEXTURE27_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE28_ARB', CardinalSymbol, GL_TEXTURE28_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE29_ARB', CardinalSymbol, GL_TEXTURE29_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE30_ARB', CardinalSymbol, GL_TEXTURE30_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE31_ARB', CardinalSymbol, GL_TEXTURE31_ARB));
+
+  // EXT_stencil_wrap
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INCR_WRAP_EXT', CardinalSymbol, GL_INCR_WRAP_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DECR_WRAP_EXT', CardinalSymbol, GL_DECR_WRAP_EXT));
+
+  // EXT_stencil_two_side
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STENCIL_TEST_TWO_SIDE_EXT', CardinalSymbol, GL_STENCIL_TEST_TWO_SIDE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ACTIVE_STENCIL_FACE_EXT', CardinalSymbol, GL_ACTIVE_STENCIL_FACE_EXT));
+
+  // NV_texgen_reflection
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NORMAL_MAP_NV', CardinalSymbol, GL_NORMAL_MAP_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_REFLECTION_MAP_NV', CardinalSymbol, GL_REFLECTION_MAP_NV));
+
+  // NV_fence
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ALL_COMPLETED_NV', CardinalSymbol, GL_ALL_COMPLETED_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FENCE_STATUS_NV', CardinalSymbol, GL_FENCE_STATUS_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FENCE_CONDITION_NV', CardinalSymbol, GL_FENCE_CONDITION_NV));
+
+  // NV_occlusion_query
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_COUNTER_BITS_NV', CardinalSymbol, GL_PIXEL_COUNTER_BITS_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_OCCLUSION_QUERY_ID_NV', CardinalSymbol, GL_CURRENT_OCCLUSION_QUERY_ID_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_COUNT_NV', CardinalSymbol, GL_PIXEL_COUNT_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PIXEL_COUNT_AVAILABLE_NV', CardinalSymbol, GL_PIXEL_COUNT_AVAILABLE_NV));
+
+  // NV_texture_rectangle
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_RECTANGLE_NV', CardinalSymbol, GL_TEXTURE_RECTANGLE_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_BINDING_RECTANGLE_NV', CardinalSymbol, GL_TEXTURE_BINDING_RECTANGLE_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROXY_TEXTURE_RECTANGLE_NV', CardinalSymbol, GL_PROXY_TEXTURE_RECTANGLE_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_RECTANGLE_TEXTURE_SIZE_NV', CardinalSymbol, GL_MAX_RECTANGLE_TEXTURE_SIZE_NV));
+
+  // EXT_texture_env_combine
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINE_EXT', CardinalSymbol, GL_COMBINE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINE_RGB_EXT', CardinalSymbol, GL_COMBINE_RGB_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINE_ALPHA_EXT', CardinalSymbol, GL_COMBINE_ALPHA_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB_SCALE_EXT', CardinalSymbol, GL_RGB_SCALE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ADD_SIGNED_EXT', CardinalSymbol, GL_ADD_SIGNED_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INTERPOLATE_EXT', CardinalSymbol, GL_INTERPOLATE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONSTANT_EXT', CardinalSymbol, GL_CONSTANT_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PRIMARY_COLOR_EXT', CardinalSymbol, GL_PRIMARY_COLOR_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PREVIOUS_EXT', CardinalSymbol, GL_PREVIOUS_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE0_RGB_EXT', CardinalSymbol, GL_SOURCE0_RGB_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE1_RGB_EXT', CardinalSymbol, GL_SOURCE1_RGB_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE2_RGB_EXT', CardinalSymbol, GL_SOURCE2_RGB_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE0_ALPHA_EXT', CardinalSymbol, GL_SOURCE0_ALPHA_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE1_ALPHA_EXT', CardinalSymbol, GL_SOURCE1_ALPHA_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE2_ALPHA_EXT', CardinalSymbol, GL_SOURCE2_ALPHA_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND0_RGB_EXT', CardinalSymbol, GL_OPERAND0_RGB_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND1_RGB_EXT', CardinalSymbol, GL_OPERAND1_RGB_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND2_RGB_EXT', CardinalSymbol, GL_OPERAND2_RGB_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND0_ALPHA_EXT', CardinalSymbol, GL_OPERAND0_ALPHA_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND1_ALPHA_EXT', CardinalSymbol, GL_OPERAND1_ALPHA_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND2_ALPHA_EXT', CardinalSymbol, GL_OPERAND2_ALPHA_EXT));
+
+  // ARB_texture_env_combine
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINE_ARB', CardinalSymbol, GL_COMBINE_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINE_RGB_ARB', CardinalSymbol, GL_COMBINE_RGB_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINE_ALPHA_ARB', CardinalSymbol, GL_COMBINE_ALPHA_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE0_RGB_ARB', CardinalSymbol, GL_SOURCE0_RGB_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE1_RGB_ARB', CardinalSymbol, GL_SOURCE1_RGB_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE2_RGB_ARB', CardinalSymbol, GL_SOURCE2_RGB_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE0_ALPHA_ARB', CardinalSymbol, GL_SOURCE0_ALPHA_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE1_ALPHA_ARB', CardinalSymbol, GL_SOURCE1_ALPHA_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE2_ALPHA_ARB', CardinalSymbol, GL_SOURCE2_ALPHA_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND0_RGB_ARB', CardinalSymbol, GL_OPERAND0_RGB_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND1_RGB_ARB', CardinalSymbol, GL_OPERAND1_RGB_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND2_RGB_ARB', CardinalSymbol, GL_OPERAND2_RGB_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND0_ALPHA_ARB', CardinalSymbol, GL_OPERAND0_ALPHA_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND1_ALPHA_ARB', CardinalSymbol, GL_OPERAND1_ALPHA_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND2_ALPHA_ARB', CardinalSymbol, GL_OPERAND2_ALPHA_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RGB_SCALE_ARB', CardinalSymbol, GL_RGB_SCALE_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ADD_SIGNED_ARB', CardinalSymbol, GL_ADD_SIGNED_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INTERPOLATE_ARB', CardinalSymbol, GL_INTERPOLATE_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SUBTRACT_ARB', CardinalSymbol, GL_SUBTRACT_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONSTANT_ARB', CardinalSymbol, GL_CONSTANT_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONSTANT_COLOR_ARB', CardinalSymbol, GL_CONSTANT_COLOR_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PRIMARY_COLOR_ARB', CardinalSymbol, GL_PRIMARY_COLOR_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PREVIOUS_ARB', CardinalSymbol, GL_PREVIOUS_ARB));
+
+  // ARB_texture_env_dot3
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DOT3_RGB_ARB', CardinalSymbol, GL_DOT3_RGB_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DOT3_RGBA_ARB', CardinalSymbol, GL_DOT3_RGBA_ARB));
+
+  // ARB_vertex_program
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_PROGRAM_ARB', CardinalSymbol, GL_VERTEX_PROGRAM_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_PROGRAM_POINT_SIZE_ARB', CardinalSymbol, GL_VERTEX_PROGRAM_POINT_SIZE_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_PROGRAM_TWO_SIDE_ARB', CardinalSymbol, GL_VERTEX_PROGRAM_TWO_SIDE_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_SUM_ARB', CardinalSymbol, GL_COLOR_SUM_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_FORMAT_ASCII_ARB', CardinalSymbol, GL_PROGRAM_FORMAT_ASCII_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_VERTEX_ATTRIB_ARB', CardinalSymbol, GL_CURRENT_VERTEX_ATTRIB_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_LENGTH_ARB', CardinalSymbol, GL_PROGRAM_LENGTH_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_FORMAT_ARB', CardinalSymbol, GL_PROGRAM_FORMAT_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_BINDING_ARB', CardinalSymbol, GL_PROGRAM_BINDING_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_INSTRUCTIONS_ARB', CardinalSymbol, GL_PROGRAM_INSTRUCTIONS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROGRAM_INSTRUCTIONS_ARB', CardinalSymbol, GL_MAX_PROGRAM_INSTRUCTIONS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB', CardinalSymbol, GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB', CardinalSymbol, GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_TEMPORARIES_ARB', CardinalSymbol, GL_PROGRAM_TEMPORARIES_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROGRAM_TEMPORARIES_ARB', CardinalSymbol, GL_MAX_PROGRAM_TEMPORARIES_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_NATIVE_TEMPORARIES_ARB', CardinalSymbol, GL_PROGRAM_NATIVE_TEMPORARIES_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB', CardinalSymbol, GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_PARAMETERS_ARB', CardinalSymbol, GL_PROGRAM_PARAMETERS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROGRAM_PARAMETERS_ARB', CardinalSymbol, GL_MAX_PROGRAM_PARAMETERS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_NATIVE_PARAMETERS_ARB', CardinalSymbol, GL_PROGRAM_NATIVE_PARAMETERS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB', CardinalSymbol, GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_ATTRIBS_ARB', CardinalSymbol, GL_PROGRAM_ATTRIBS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROGRAM_ATTRIBS_ARB', CardinalSymbol, GL_MAX_PROGRAM_ATTRIBS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_NATIVE_ATTRIBS_ARB', CardinalSymbol, GL_PROGRAM_NATIVE_ATTRIBS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB', CardinalSymbol, GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_ADDRESS_REGISTERS_ARB', CardinalSymbol, GL_PROGRAM_ADDRESS_REGISTERS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB', CardinalSymbol, GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB', CardinalSymbol, GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB', CardinalSymbol, GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB', CardinalSymbol, GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROGRAM_ENV_PARAMETERS_ARB', CardinalSymbol, GL_MAX_PROGRAM_ENV_PARAMETERS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB', CardinalSymbol, GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_STRING_ARB', CardinalSymbol, GL_PROGRAM_STRING_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_ERROR_POSITION_ARB', CardinalSymbol, GL_PROGRAM_ERROR_POSITION_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_MATRIX_ARB', CardinalSymbol, GL_CURRENT_MATRIX_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TRANSPOSE_CURRENT_MATRIX_ARB', CardinalSymbol, GL_TRANSPOSE_CURRENT_MATRIX_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_MATRIX_STACK_DEPTH_ARB', CardinalSymbol, GL_CURRENT_MATRIX_STACK_DEPTH_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_VERTEX_ATTRIBS_ARB', CardinalSymbol, GL_MAX_VERTEX_ATTRIBS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROGRAM_MATRICES_ARB', CardinalSymbol, GL_MAX_PROGRAM_MATRICES_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB', CardinalSymbol, GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_ERROR_STRING_ARB', CardinalSymbol, GL_PROGRAM_ERROR_STRING_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX0_ARB', CardinalSymbol, GL_MATRIX0_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX1_ARB', CardinalSymbol, GL_MATRIX1_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX2_ARB', CardinalSymbol, GL_MATRIX2_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX3_ARB', CardinalSymbol, GL_MATRIX3_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX4_ARB', CardinalSymbol, GL_MATRIX4_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX5_ARB', CardinalSymbol, GL_MATRIX5_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX6_ARB', CardinalSymbol, GL_MATRIX6_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX7_ARB', CardinalSymbol, GL_MATRIX7_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX8_ARB', CardinalSymbol, GL_MATRIX8_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX9_ARB', CardinalSymbol, GL_MATRIX9_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX10_ARB', CardinalSymbol, GL_MATRIX10_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX11_ARB', CardinalSymbol, GL_MATRIX11_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX12_ARB', CardinalSymbol, GL_MATRIX12_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX13_ARB', CardinalSymbol, GL_MATRIX13_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX14_ARB', CardinalSymbol, GL_MATRIX14_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX15_ARB', CardinalSymbol, GL_MATRIX15_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX16_ARB', CardinalSymbol, GL_MATRIX16_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX17_ARB', CardinalSymbol, GL_MATRIX17_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX18_ARB', CardinalSymbol, GL_MATRIX18_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX19_ARB', CardinalSymbol, GL_MATRIX19_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX20_ARB', CardinalSymbol, GL_MATRIX20_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX21_ARB', CardinalSymbol, GL_MATRIX21_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX22_ARB', CardinalSymbol, GL_MATRIX22_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX23_ARB', CardinalSymbol, GL_MATRIX23_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX24_ARB', CardinalSymbol, GL_MATRIX24_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX25_ARB', CardinalSymbol, GL_MATRIX25_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX26_ARB', CardinalSymbol, GL_MATRIX26_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX27_ARB', CardinalSymbol, GL_MATRIX27_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX28_ARB', CardinalSymbol, GL_MATRIX28_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX29_ARB', CardinalSymbol, GL_MATRIX29_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX30_ARB', CardinalSymbol, GL_MATRIX30_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX31_ARB', CardinalSymbol, GL_MATRIX31_ARB));
+
+  // ARB_vertex_buffer_object
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ARRAY_BUFFER_ARB', CardinalSymbol, GL_ARRAY_BUFFER_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ELEMENT_ARRAY_BUFFER_ARB', CardinalSymbol, GL_ELEMENT_ARRAY_BUFFER_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ARRAY_BUFFER_BINDING_ARB', CardinalSymbol, GL_ARRAY_BUFFER_BINDING_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB', CardinalSymbol, GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ARRAY_BUFFER_BINDING_ARB', CardinalSymbol, GL_VERTEX_ARRAY_BUFFER_BINDING_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NORMAL_ARRAY_BUFFER_BINDING_ARB', CardinalSymbol, GL_NORMAL_ARRAY_BUFFER_BINDING_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_ARRAY_BUFFER_BINDING_ARB', CardinalSymbol, GL_COLOR_ARRAY_BUFFER_BINDING_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INDEX_ARRAY_BUFFER_BINDING_ARB', CardinalSymbol, GL_INDEX_ARRAY_BUFFER_BINDING_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB', CardinalSymbol, GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB', CardinalSymbol, GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB', CardinalSymbol, GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB', CardinalSymbol, GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB', CardinalSymbol, GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STREAM_DRAW_ARB', CardinalSymbol, GL_STREAM_DRAW_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STREAM_READ_ARB', CardinalSymbol, GL_STREAM_READ_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STREAM_COPY_ARB', CardinalSymbol, GL_STREAM_COPY_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STATIC_DRAW_ARB', CardinalSymbol, GL_STATIC_DRAW_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STATIC_READ_ARB', CardinalSymbol, GL_STATIC_READ_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_STATIC_COPY_ARB', CardinalSymbol, GL_STATIC_COPY_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DYNAMIC_DRAW_ARB', CardinalSymbol, GL_DYNAMIC_DRAW_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DYNAMIC_READ_ARB', CardinalSymbol, GL_DYNAMIC_READ_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DYNAMIC_COPY_ARB', CardinalSymbol, GL_DYNAMIC_COPY_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_READ_ONLY_ARB', CardinalSymbol, GL_READ_ONLY_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_WRITE_ONLY_ARB', CardinalSymbol, GL_WRITE_ONLY_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_READ_WRITE_ARB', CardinalSymbol, GL_READ_WRITE_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BUFFER_SIZE_ARB', CardinalSymbol, GL_BUFFER_SIZE_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BUFFER_USAGE_ARB', CardinalSymbol, GL_BUFFER_USAGE_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BUFFER_ACCESS_ARB', CardinalSymbol, GL_BUFFER_ACCESS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BUFFER_MAPPED_ARB', CardinalSymbol, GL_BUFFER_MAPPED_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BUFFER_MAP_POINTER_ARB', CardinalSymbol, GL_BUFFER_MAP_POINTER_ARB));
+
+  // ARB_shader_objects
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_OBJECT_ARB', CardinalSymbol, GL_PROGRAM_OBJECT_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_TYPE_ARB', CardinalSymbol, GL_OBJECT_TYPE_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_SUBTYPE_ARB', CardinalSymbol, GL_OBJECT_SUBTYPE_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_DELETE_STATUS_ARB', CardinalSymbol, GL_OBJECT_DELETE_STATUS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_COMPILE_STATUS_ARB', CardinalSymbol, GL_OBJECT_COMPILE_STATUS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_LINK_STATUS_ARB', CardinalSymbol, GL_OBJECT_LINK_STATUS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_VALIDATE_STATUS_ARB', CardinalSymbol, GL_OBJECT_VALIDATE_STATUS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_INFO_LOG_LENGTH_ARB', CardinalSymbol, GL_OBJECT_INFO_LOG_LENGTH_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_ATTACHED_OBJECTS_ARB', CardinalSymbol, GL_OBJECT_ATTACHED_OBJECTS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_ACTIVE_UNIFORMS_ARB', CardinalSymbol, GL_OBJECT_ACTIVE_UNIFORMS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB', CardinalSymbol, GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_SHADER_SOURCE_LENGTH_ARB', CardinalSymbol, GL_OBJECT_SHADER_SOURCE_LENGTH_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SHADER_OBJECT_ARB', CardinalSymbol, GL_SHADER_OBJECT_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FLOAT_VEC2_ARB', CardinalSymbol, GL_FLOAT_VEC2_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FLOAT_VEC3_ARB', CardinalSymbol, GL_FLOAT_VEC3_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FLOAT_VEC4_ARB', CardinalSymbol, GL_FLOAT_VEC4_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INT_VEC2_ARB', CardinalSymbol, GL_INT_VEC2_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INT_VEC3_ARB', CardinalSymbol, GL_INT_VEC3_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INT_VEC4_ARB', CardinalSymbol, GL_INT_VEC4_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BOOL_ARB', CardinalSymbol, GL_BOOL_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BOOL_VEC2_ARB', CardinalSymbol, GL_BOOL_VEC2_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BOOL_VEC3_ARB', CardinalSymbol, GL_BOOL_VEC3_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BOOL_VEC4_ARB', CardinalSymbol, GL_BOOL_VEC4_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FLOAT_MAT2_ARB', CardinalSymbol, GL_FLOAT_MAT2_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FLOAT_MAT3_ARB', CardinalSymbol, GL_FLOAT_MAT3_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FLOAT_MAT4_ARB', CardinalSymbol, GL_FLOAT_MAT4_ARB));
+
+  // ARB_vertex_shader
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_SHADER_ARB', CardinalSymbol, GL_VERTEX_SHADER_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB', CardinalSymbol, GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_VARYING_FLOATS_ARB', CardinalSymbol, GL_MAX_VARYING_FLOATS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB', CardinalSymbol, GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB', CardinalSymbol, GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_ACTIVE_ATTRIBUTES_ARB', CardinalSymbol, GL_OBJECT_ACTIVE_ATTRIBUTES_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB', CardinalSymbol, GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB));
+
+  // ARB_fragment_shader
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FRAGMENT_SHADER_ARB', CardinalSymbol, GL_FRAGMENT_SHADER_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB', CardinalSymbol, GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB));
+
+  // ARB_fragment_program
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FRAGMENT_PROGRAM_ARB', CardinalSymbol, GL_FRAGMENT_PROGRAM_ARB));
+
+  // NV_texture_env_combine4
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINE4_NV', CardinalSymbol, GL_COMBINE4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE3_RGB_NV', CardinalSymbol, GL_SOURCE3_RGB_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE3_ALPHA_NV', CardinalSymbol, GL_SOURCE3_ALPHA_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND3_RGB_NV', CardinalSymbol, GL_OPERAND3_RGB_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND3_ALPHA_NV', CardinalSymbol, GL_OPERAND3_ALPHA_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLEND_EQUATION', CardinalSymbol, GL_BLEND_EQUATION));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TABLE_TOO_LARGE', CardinalSymbol, GL_TABLE_TOO_LARGE));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_BYTE_3_3_2', CardinalSymbol, GL_UNSIGNED_BYTE_3_3_2));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_SHORT_4_4_4_4', CardinalSymbol, GL_UNSIGNED_SHORT_4_4_4_4));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_SHORT_5_5_5_1', CardinalSymbol, GL_UNSIGNED_SHORT_5_5_5_1));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_INT_8_8_8_8', CardinalSymbol, GL_UNSIGNED_INT_8_8_8_8));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_INT_10_10_10_2', CardinalSymbol, GL_UNSIGNED_INT_10_10_10_2));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_BYTE_2_3_3_REV', CardinalSymbol, GL_UNSIGNED_BYTE_2_3_3_REV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_SHORT_5_6_5', CardinalSymbol, GL_UNSIGNED_SHORT_5_6_5));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_SHORT_5_6_5_REV', CardinalSymbol, GL_UNSIGNED_SHORT_5_6_5_REV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_SHORT_4_4_4_4_REV', CardinalSymbol, GL_UNSIGNED_SHORT_4_4_4_4_REV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_SHORT_1_5_5_5_REV', CardinalSymbol, GL_UNSIGNED_SHORT_1_5_5_5_REV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_INT_8_8_8_8_REV', CardinalSymbol, GL_UNSIGNED_INT_8_8_8_8_REV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_INT_2_10_10_10_REV', CardinalSymbol, GL_UNSIGNED_INT_2_10_10_10_REV));
+
+  // GL_ARB_transpose_matrix
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TRANSPOSE_MODELVIEW_MATRIX_ARB', CardinalSymbol, GL_TRANSPOSE_MODELVIEW_MATRIX_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TRANSPOSE_PROJECTION_MATRIX_ARB', CardinalSymbol, GL_TRANSPOSE_PROJECTION_MATRIX_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TRANSPOSE_TEXTURE_MATRIX_ARB', CardinalSymbol, GL_TRANSPOSE_TEXTURE_MATRIX_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TRANSPOSE_COLOR_MATRIX_ARB', CardinalSymbol, GL_TRANSPOSE_COLOR_MATRIX_ARB));
+
+  // GL_ARB_multisample
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MULTISAMPLE_ARB', CardinalSymbol, GL_MULTISAMPLE_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_ALPHA_TO_COVERAGE_ARB', CardinalSymbol, GL_SAMPLE_ALPHA_TO_COVERAGE_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_ALPHA_TO_ONE_ARB', CardinalSymbol, GL_SAMPLE_ALPHA_TO_ONE_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_COVERAGE_ARB', CardinalSymbol, GL_SAMPLE_COVERAGE_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_BUFFERS_ARB', CardinalSymbol, GL_SAMPLE_BUFFERS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLES_ARB', CardinalSymbol, GL_SAMPLES_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_COVERAGE_VALUE_ARB', CardinalSymbol, GL_SAMPLE_COVERAGE_VALUE_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_COVERAGE_INVERT_ARB', CardinalSymbol, GL_SAMPLE_COVERAGE_INVERT_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MULTISAMPLE_BIT_ARB', CardinalSymbol, GL_MULTISAMPLE_BIT_ARB));
+
+  // GL_ARB_depth_texture
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH_COMPONENT16_ARB', CardinalSymbol, GL_DEPTH_COMPONENT16_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH_COMPONENT24_ARB', CardinalSymbol, GL_DEPTH_COMPONENT24_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH_COMPONENT32_ARB', CardinalSymbol, GL_DEPTH_COMPONENT32_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_DEPTH_SIZE_ARB', CardinalSymbol, GL_TEXTURE_DEPTH_SIZE_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DEPTH_TEXTURE_MODE_ARB', CardinalSymbol, GL_DEPTH_TEXTURE_MODE_ARB));
+
+  // GL_ARB_shadow
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COMPARE_MODE_ARB', CardinalSymbol, GL_TEXTURE_COMPARE_MODE_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COMPARE_FUNC_ARB', CardinalSymbol, GL_TEXTURE_COMPARE_FUNC_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPARE_R_TO_TEXTURE_ARB', CardinalSymbol, GL_COMPARE_R_TO_TEXTURE_ARB));
+
+  // GL_ARB_texture_cube_map
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NORMAL_MAP_ARB', CardinalSymbol, GL_NORMAL_MAP_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_REFLECTION_MAP_ARB', CardinalSymbol, GL_REFLECTION_MAP_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_CUBE_MAP_ARB', CardinalSymbol, GL_TEXTURE_CUBE_MAP_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_BINDING_CUBE_MAP_ARB', CardinalSymbol, GL_TEXTURE_BINDING_CUBE_MAP_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB', CardinalSymbol, GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB', CardinalSymbol, GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB', CardinalSymbol, GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB', CardinalSymbol, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB', CardinalSymbol, GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB', CardinalSymbol, GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROXY_TEXTURE_CUBE_MAP_ARB', CardinalSymbol, GL_PROXY_TEXTURE_CUBE_MAP_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB', CardinalSymbol, GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB));
+
+  // GL_ARB_texture_border_clamp
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLAMP_TO_BORDER_ARB', CardinalSymbol, GL_CLAMP_TO_BORDER_ARB));
+
+  // GL_ARB_texture_compression
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPRESSED_ALPHA_ARB', CardinalSymbol, GL_COMPRESSED_ALPHA_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPRESSED_LUMINANCE_ARB', CardinalSymbol, GL_COMPRESSED_LUMINANCE_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPRESSED_LUMINANCE_ALPHA_ARB', CardinalSymbol, GL_COMPRESSED_LUMINANCE_ALPHA_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPRESSED_INTENSITY_ARB', CardinalSymbol, GL_COMPRESSED_INTENSITY_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPRESSED_RGB_ARB', CardinalSymbol, GL_COMPRESSED_RGB_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPRESSED_RGBA_ARB', CardinalSymbol, GL_COMPRESSED_RGBA_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COMPRESSION_HINT_ARB', CardinalSymbol, GL_TEXTURE_COMPRESSION_HINT_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB', CardinalSymbol, GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COMPRESSED_ARB', CardinalSymbol, GL_TEXTURE_COMPRESSED_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB', CardinalSymbol, GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPRESSED_TEXTURE_FORMATS_ARB', CardinalSymbol, GL_COMPRESSED_TEXTURE_FORMATS_ARB));
+
+  // GL_ARB_vertex_blend
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_VERTEX_UNITS_ARB', CardinalSymbol, GL_MAX_VERTEX_UNITS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ACTIVE_VERTEX_UNITS_ARB', CardinalSymbol, GL_ACTIVE_VERTEX_UNITS_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_WEIGHT_SUM_UNITY_ARB', CardinalSymbol, GL_WEIGHT_SUM_UNITY_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_BLEND_ARB', CardinalSymbol, GL_VERTEX_BLEND_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_WEIGHT_ARB', CardinalSymbol, GL_CURRENT_WEIGHT_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_WEIGHT_ARRAY_TYPE_ARB', CardinalSymbol, GL_WEIGHT_ARRAY_TYPE_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_WEIGHT_ARRAY_STRIDE_ARB', CardinalSymbol, GL_WEIGHT_ARRAY_STRIDE_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_WEIGHT_ARRAY_SIZE_ARB', CardinalSymbol, GL_WEIGHT_ARRAY_SIZE_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_WEIGHT_ARRAY_POINTER_ARB', CardinalSymbol, GL_WEIGHT_ARRAY_POINTER_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_WEIGHT_ARRAY_ARB', CardinalSymbol, GL_WEIGHT_ARRAY_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW0_ARB', CardinalSymbol, GL_MODELVIEW0_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW1_ARB', CardinalSymbol, GL_MODELVIEW1_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW2_ARB', CardinalSymbol, GL_MODELVIEW2_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW3_ARB', CardinalSymbol, GL_MODELVIEW3_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW4_ARB', CardinalSymbol, GL_MODELVIEW4_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW5_ARB', CardinalSymbol, GL_MODELVIEW5_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW6_ARB', CardinalSymbol, GL_MODELVIEW6_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW7_ARB', CardinalSymbol, GL_MODELVIEW7_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW8_ARB', CardinalSymbol, GL_MODELVIEW8_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW9_ARB', CardinalSymbol, GL_MODELVIEW9_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW10_ARB', CardinalSymbol, GL_MODELVIEW10_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW11_ARB', CardinalSymbol, GL_MODELVIEW11_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW12_ARB', CardinalSymbol, GL_MODELVIEW12_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW13_ARB', CardinalSymbol, GL_MODELVIEW13_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW14_ARB', CardinalSymbol, GL_MODELVIEW14_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW15_ARB', CardinalSymbol, GL_MODELVIEW15_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW16_ARB', CardinalSymbol, GL_MODELVIEW16_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW17_ARB', CardinalSymbol, GL_MODELVIEW17_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW18_ARB', CardinalSymbol, GL_MODELVIEW18_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW19_ARB', CardinalSymbol, GL_MODELVIEW19_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW20_ARB', CardinalSymbol, GL_MODELVIEW20_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW21_ARB', CardinalSymbol, GL_MODELVIEW21_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW22_ARB', CardinalSymbol, GL_MODELVIEW22_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW23_ARB', CardinalSymbol, GL_MODELVIEW23_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW24_ARB', CardinalSymbol, GL_MODELVIEW24_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW25_ARB', CardinalSymbol, GL_MODELVIEW25_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW26_ARB', CardinalSymbol, GL_MODELVIEW26_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW27_ARB', CardinalSymbol, GL_MODELVIEW27_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW28_ARB', CardinalSymbol, GL_MODELVIEW28_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW29_ARB', CardinalSymbol, GL_MODELVIEW29_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW30_ARB', CardinalSymbol, GL_MODELVIEW30_ARB));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW31_ARB', CardinalSymbol, GL_MODELVIEW31_ARB));
+
+  // GL_SGIS_texture_lod
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_MIN_LOD_SGIS', CardinalSymbol, GL_TEXTURE_MIN_LOD_SGIS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_MAX_LOD_SGIS', CardinalSymbol, GL_TEXTURE_MAX_LOD_SGIS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_BASE_LEVEL_SGIS', CardinalSymbol, GL_TEXTURE_BASE_LEVEL_SGIS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_MAX_LEVEL_SGIS', CardinalSymbol, GL_TEXTURE_MAX_LEVEL_SGIS));
+
+  // GL_SGIS_multisample
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MULTISAMPLE_SGIS', CardinalSymbol, GL_MULTISAMPLE_SGIS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_ALPHA_TO_MASK_SGIS', CardinalSymbol, GL_SAMPLE_ALPHA_TO_MASK_SGIS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_ALPHA_TO_ONE_SGIS', CardinalSymbol, GL_SAMPLE_ALPHA_TO_ONE_SGIS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_MASK_SGIS', CardinalSymbol, GL_SAMPLE_MASK_SGIS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_1PASS_SGIS', CardinalSymbol, GL_1PASS_SGIS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_2PASS_0_SGIS', CardinalSymbol, GL_2PASS_0_SGIS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_2PASS_1_SGIS', CardinalSymbol, GL_2PASS_1_SGIS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_4PASS_0_SGIS', CardinalSymbol, GL_4PASS_0_SGIS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_4PASS_1_SGIS', CardinalSymbol, GL_4PASS_1_SGIS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_4PASS_2_SGIS', CardinalSymbol, GL_4PASS_2_SGIS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_4PASS_3_SGIS', CardinalSymbol, GL_4PASS_3_SGIS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_BUFFERS_SGIS', CardinalSymbol, GL_SAMPLE_BUFFERS_SGIS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLES_SGIS', CardinalSymbol, GL_SAMPLES_SGIS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_MASK_VALUE_SGIS', CardinalSymbol, GL_SAMPLE_MASK_VALUE_SGIS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_MASK_INVERT_SGIS', CardinalSymbol, GL_SAMPLE_MASK_INVERT_SGIS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_PATTERN_SGIS', CardinalSymbol, GL_SAMPLE_PATTERN_SGIS));
+
+  // GL_SGIS_generate_mipmap
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_GENERATE_MIPMAP_SGIS', CardinalSymbol, GL_GENERATE_MIPMAP_SGIS));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_GENERATE_MIPMAP_HINT_SGIS', CardinalSymbol, GL_GENERATE_MIPMAP_HINT_SGIS));
+
+  // GL_SGIX_shadow
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COMPARE_SGIX', CardinalSymbol, GL_TEXTURE_COMPARE_SGIX));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COMPARE_OPERATOR_SGIX', CardinalSymbol, GL_TEXTURE_COMPARE_OPERATOR_SGIX));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_LEQUAL_R_SGIX', CardinalSymbol, GL_TEXTURE_LEQUAL_R_SGIX));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_GEQUAL_R_SGIX', CardinalSymbol, GL_TEXTURE_GEQUAL_R_SGIX));
+
+  // GL_SGIS_texture_edge_clamp
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLAMP_TO_EDGE_SGIS', CardinalSymbol, GL_CLAMP_TO_EDGE_SGIS));
+
+  // GL_SGIS_texture_border_clamp
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLAMP_TO_BORDER_SGIS', CardinalSymbol, GL_CLAMP_TO_BORDER_SGIS));
+
+  // GL_EXT_paletted_texture
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_INDEX_SIZE_EXT', CardinalSymbol, GL_TEXTURE_INDEX_SIZE_EXT));
+
+  // GL_SGIX_shadow_ambient
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SHADOW_AMBIENT_SGIX', CardinalSymbol, GL_SHADOW_AMBIENT_SGIX));
+
+  // GL_IBM_rasterpos_clip
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_RASTER_POSITION_UNCLIPPED_IBM', CardinalSymbol, GL_RASTER_POSITION_UNCLIPPED_IBM));
+
+  // GL_EXT_draw_range_elements
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_ELEMENTS_VERTICES_EXT', CardinalSymbol, GL_MAX_ELEMENTS_VERTICES_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_ELEMENTS_INDICES_EXT', CardinalSymbol, GL_MAX_ELEMENTS_INDICES_EXT));
+
+  // GL_HP_occlusion_test
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OCCLUSION_TEST_HP', CardinalSymbol, GL_OCCLUSION_TEST_HP));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OCCLUSION_TEST_RESULT_HP', CardinalSymbol, GL_OCCLUSION_TEST_RESULT_HP));
+
+  // GL_EXT_separate_specular_color
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_LIGHT_MODEL_COLOR_CONTROL_EXT', CardinalSymbol, GL_LIGHT_MODEL_COLOR_CONTROL_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SINGLE_COLOR_EXT', CardinalSymbol, GL_SINGLE_COLOR_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SEPARATE_SPECULAR_COLOR_EXT', CardinalSymbol, GL_SEPARATE_SPECULAR_COLOR_EXT));
+
+  // GL_EXT_secondary_color
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_SUM_EXT', CardinalSymbol, GL_COLOR_SUM_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_SECONDARY_COLOR_EXT', CardinalSymbol, GL_CURRENT_SECONDARY_COLOR_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SECONDARY_COLOR_ARRAY_SIZE_EXT', CardinalSymbol, GL_SECONDARY_COLOR_ARRAY_SIZE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SECONDARY_COLOR_ARRAY_TYPE_EXT', CardinalSymbol, GL_SECONDARY_COLOR_ARRAY_TYPE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT', CardinalSymbol, GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SECONDARY_COLOR_ARRAY_POINTER_EXT', CardinalSymbol, GL_SECONDARY_COLOR_ARRAY_POINTER_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SECONDARY_COLOR_ARRAY_EXT', CardinalSymbol, GL_SECONDARY_COLOR_ARRAY_EXT));
+
+  // GL_EXT_fog_coord
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_COORDINATE_SOURCE_EXT', CardinalSymbol, GL_FOG_COORDINATE_SOURCE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_COORDINATE_EXT', CardinalSymbol, GL_FOG_COORDINATE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FRAGMENT_DEPTH_EXT', CardinalSymbol, GL_FRAGMENT_DEPTH_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_FOG_COORDINATE_EXT', CardinalSymbol, GL_CURRENT_FOG_COORDINATE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_COORDINATE_ARRAY_TYPE_EXT', CardinalSymbol, GL_FOG_COORDINATE_ARRAY_TYPE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_COORDINATE_ARRAY_STRIDE_EXT', CardinalSymbol, GL_FOG_COORDINATE_ARRAY_STRIDE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_COORDINATE_ARRAY_POINTER_EXT', CardinalSymbol, GL_FOG_COORDINATE_ARRAY_POINTER_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_COORDINATE_ARRAY_EXT', CardinalSymbol, GL_FOG_COORDINATE_ARRAY_EXT));
+
+  // GL_EXT_texture_env_combine
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE3_RGB_EXT', CardinalSymbol, GL_SOURCE3_RGB_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE4_RGB_EXT', CardinalSymbol, GL_SOURCE4_RGB_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE5_RGB_EXT', CardinalSymbol, GL_SOURCE5_RGB_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE6_RGB_EXT', CardinalSymbol, GL_SOURCE6_RGB_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE7_RGB_EXT', CardinalSymbol, GL_SOURCE7_RGB_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE3_ALPHA_EXT', CardinalSymbol, GL_SOURCE3_ALPHA_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE4_ALPHA_EXT', CardinalSymbol, GL_SOURCE4_ALPHA_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE5_ALPHA_EXT', CardinalSymbol, GL_SOURCE5_ALPHA_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE6_ALPHA_EXT', CardinalSymbol, GL_SOURCE6_ALPHA_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SOURCE7_ALPHA_EXT', CardinalSymbol, GL_SOURCE7_ALPHA_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND3_RGB_EXT', CardinalSymbol, GL_OPERAND3_RGB_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND4_RGB_EXT', CardinalSymbol, GL_OPERAND4_RGB_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND5_RGB_EXT', CardinalSymbol, GL_OPERAND5_RGB_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND6_RGB_EXT', CardinalSymbol, GL_OPERAND6_RGB_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND7_RGB_EXT', CardinalSymbol, GL_OPERAND7_RGB_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND3_ALPHA_EXT', CardinalSymbol, GL_OPERAND3_ALPHA_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND4_ALPHA_EXT', CardinalSymbol, GL_OPERAND4_ALPHA_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND5_ALPHA_EXT', CardinalSymbol, GL_OPERAND5_ALPHA_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND6_ALPHA_EXT', CardinalSymbol, GL_OPERAND6_ALPHA_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_OPERAND7_ALPHA_EXT', CardinalSymbol, GL_OPERAND7_ALPHA_EXT));
+
+  // GL_EXT_blend_func_separate
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLEND_DST_RGB_EXT', CardinalSymbol, GL_BLEND_DST_RGB_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLEND_SRC_RGB_EXT', CardinalSymbol, GL_BLEND_SRC_RGB_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLEND_DST_ALPHA_EXT', CardinalSymbol, GL_BLEND_DST_ALPHA_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BLEND_SRC_ALPHA_EXT', CardinalSymbol, GL_BLEND_SRC_ALPHA_EXT));
+
+  // GL_EXT_texture_cube_map
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NORMAL_MAP_EXT', CardinalSymbol, GL_NORMAL_MAP_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_REFLECTION_MAP_EXT', CardinalSymbol, GL_REFLECTION_MAP_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_CUBE_MAP_EXT', CardinalSymbol, GL_TEXTURE_CUBE_MAP_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_BINDING_CUBE_MAP_EXT', CardinalSymbol, GL_TEXTURE_BINDING_CUBE_MAP_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT', CardinalSymbol, GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT', CardinalSymbol, GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT', CardinalSymbol, GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT', CardinalSymbol, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT', CardinalSymbol, GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT', CardinalSymbol, GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROXY_TEXTURE_CUBE_MAP_EXT', CardinalSymbol, GL_PROXY_TEXTURE_CUBE_MAP_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT', CardinalSymbol, GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT));
+
+  // GL_EXT_texture_lod_bias
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_TEXTURE_LOD_BIAS_EXT', CardinalSymbol, GL_MAX_TEXTURE_LOD_BIAS_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_FILTER_CONTROL_EXT', CardinalSymbol, GL_TEXTURE_FILTER_CONTROL_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_LOD_BIAS_EXT', CardinalSymbol, GL_TEXTURE_LOD_BIAS_EXT));
+
+  // GL_EXT_texture_filter_anisotropic
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_MAX_ANISOTROPY_EXT', CardinalSymbol, GL_TEXTURE_MAX_ANISOTROPY_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT', CardinalSymbol, GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT));
+
+  // GL_NV_light_max_exponent
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_SHININESS_NV', CardinalSymbol, GL_MAX_SHININESS_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_SPOT_EXPONENT_NV', CardinalSymbol, GL_MAX_SPOT_EXPONENT_NV));
+
+  // GL_NV_vertex_array_range
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ARRAY_RANGE_NV', CardinalSymbol, GL_VERTEX_ARRAY_RANGE_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ARRAY_RANGE_LENGTH_NV', CardinalSymbol, GL_VERTEX_ARRAY_RANGE_LENGTH_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ARRAY_RANGE_VALID_NV', CardinalSymbol, GL_VERTEX_ARRAY_RANGE_VALID_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV', CardinalSymbol, GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ARRAY_RANGE_POINTER_NV', CardinalSymbol, GL_VERTEX_ARRAY_RANGE_POINTER_NV));
+
+  // GL_NV_vertex_array_range2
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV', CardinalSymbol, GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV));
+
+  // GL_NV_register_combiners
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_REGISTER_COMBINERS_NV', CardinalSymbol, GL_REGISTER_COMBINERS_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VARIABLE_A_NV', CardinalSymbol, GL_VARIABLE_A_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VARIABLE_B_NV', CardinalSymbol, GL_VARIABLE_B_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VARIABLE_C_NV', CardinalSymbol, GL_VARIABLE_C_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VARIABLE_D_NV', CardinalSymbol, GL_VARIABLE_D_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VARIABLE_E_NV', CardinalSymbol, GL_VARIABLE_E_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VARIABLE_F_NV', CardinalSymbol, GL_VARIABLE_F_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VARIABLE_G_NV', CardinalSymbol, GL_VARIABLE_G_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONSTANT_COLOR0_NV', CardinalSymbol, GL_CONSTANT_COLOR0_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CONSTANT_COLOR1_NV', CardinalSymbol, GL_CONSTANT_COLOR1_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PRIMARY_COLOR_NV', CardinalSymbol, GL_PRIMARY_COLOR_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SECONDARY_COLOR_NV', CardinalSymbol, GL_SECONDARY_COLOR_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SPARE0_NV', CardinalSymbol, GL_SPARE0_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SPARE1_NV', CardinalSymbol, GL_SPARE1_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_DISCARD_NV', CardinalSymbol, GL_DISCARD_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_E_TIMES_F_NV', CardinalSymbol, GL_E_TIMES_F_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SPARE0_PLUS_SECONDARY_COLOR_NV', CardinalSymbol, GL_SPARE0_PLUS_SECONDARY_COLOR_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_IDENTITY_NV', CardinalSymbol, GL_UNSIGNED_IDENTITY_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_UNSIGNED_INVERT_NV', CardinalSymbol, GL_UNSIGNED_INVERT_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EXPAND_NORMAL_NV', CardinalSymbol, GL_EXPAND_NORMAL_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EXPAND_NEGATE_NV', CardinalSymbol, GL_EXPAND_NEGATE_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HALF_BIAS_NORMAL_NV', CardinalSymbol, GL_HALF_BIAS_NORMAL_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_HALF_BIAS_NEGATE_NV', CardinalSymbol, GL_HALF_BIAS_NEGATE_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SIGNED_IDENTITY_NV', CardinalSymbol, GL_SIGNED_IDENTITY_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SIGNED_NEGATE_NV', CardinalSymbol, GL_SIGNED_NEGATE_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SCALE_BY_TWO_NV', CardinalSymbol, GL_SCALE_BY_TWO_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SCALE_BY_FOUR_NV', CardinalSymbol, GL_SCALE_BY_FOUR_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SCALE_BY_ONE_HALF_NV', CardinalSymbol, GL_SCALE_BY_ONE_HALF_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_BIAS_BY_NEGATIVE_ONE_HALF_NV', CardinalSymbol, GL_BIAS_BY_NEGATIVE_ONE_HALF_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER_INPUT_NV', CardinalSymbol, GL_COMBINER_INPUT_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER_MAPPING_NV', CardinalSymbol, GL_COMBINER_MAPPING_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER_COMPONENT_USAGE_NV', CardinalSymbol, GL_COMBINER_COMPONENT_USAGE_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER_AB_DOT_PRODUCT_NV', CardinalSymbol, GL_COMBINER_AB_DOT_PRODUCT_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER_CD_DOT_PRODUCT_NV', CardinalSymbol, GL_COMBINER_CD_DOT_PRODUCT_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER_MUX_SUM_NV', CardinalSymbol, GL_COMBINER_MUX_SUM_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER_SCALE_NV', CardinalSymbol, GL_COMBINER_SCALE_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER_BIAS_NV', CardinalSymbol, GL_COMBINER_BIAS_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER_AB_OUTPUT_NV', CardinalSymbol, GL_COMBINER_AB_OUTPUT_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER_CD_OUTPUT_NV', CardinalSymbol, GL_COMBINER_CD_OUTPUT_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER_SUM_OUTPUT_NV', CardinalSymbol, GL_COMBINER_SUM_OUTPUT_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_GENERAL_COMBINERS_NV', CardinalSymbol, GL_MAX_GENERAL_COMBINERS_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_NUM_GENERAL_COMBINERS_NV', CardinalSymbol, GL_NUM_GENERAL_COMBINERS_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COLOR_SUM_CLAMP_NV', CardinalSymbol, GL_COLOR_SUM_CLAMP_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER0_NV', CardinalSymbol, GL_COMBINER0_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER1_NV', CardinalSymbol, GL_COMBINER1_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER2_NV', CardinalSymbol, GL_COMBINER2_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER3_NV', CardinalSymbol, GL_COMBINER3_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER4_NV', CardinalSymbol, GL_COMBINER4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER5_NV', CardinalSymbol, GL_COMBINER5_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER6_NV', CardinalSymbol, GL_COMBINER6_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMBINER7_NV', CardinalSymbol, GL_COMBINER7_NV));
+
+  // GL_NV_fog_distance
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_FOG_DISTANCE_MODE_NV', CardinalSymbol, GL_FOG_DISTANCE_MODE_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EYE_RADIAL_NV', CardinalSymbol, GL_EYE_RADIAL_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_EYE_PLANE_ABSOLUTE_NV', CardinalSymbol, GL_EYE_PLANE_ABSOLUTE_NV));
+
+  // GL_EXT_texture_compression_s3tc
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPRESSED_RGB_S3TC_DXT1_EXT', CardinalSymbol, GL_COMPRESSED_RGB_S3TC_DXT1_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPRESSED_RGBA_S3TC_DXT1_EXT', CardinalSymbol, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPRESSED_RGBA_S3TC_DXT3_EXT', CardinalSymbol, GL_COMPRESSED_RGBA_S3TC_DXT3_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPRESSED_RGBA_S3TC_DXT5_EXT', CardinalSymbol, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT));
+
+  // GL_3DFX_texture_compression_FXT1
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPRESSED_RGB_FXT1_3DFX', CardinalSymbol, GL_COMPRESSED_RGB_FXT1_3DFX));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_COMPRESSED_RGBA_FXT1_3DFX', CardinalSymbol, GL_COMPRESSED_RGBA_FXT1_3DFX));
+
+  // GL_3DFX_multisample
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MULTISAMPLE_3DFX', CardinalSymbol, GL_MULTISAMPLE_3DFX));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_BUFFERS_3DFX', CardinalSymbol, GL_SAMPLE_BUFFERS_3DFX));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLES_3DFX', CardinalSymbol, GL_SAMPLES_3DFX));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MULTISAMPLE_BIT_3DFX', CardinalSymbol, GL_MULTISAMPLE_BIT_3DFX));
+
+  // GL_EXT_multisample
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MULTISAMPLE_EXT', CardinalSymbol, GL_MULTISAMPLE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_ALPHA_TO_MASK_EXT', CardinalSymbol, GL_SAMPLE_ALPHA_TO_MASK_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_ALPHA_TO_ONE_EXT', CardinalSymbol, GL_SAMPLE_ALPHA_TO_ONE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_MASK_EXT', CardinalSymbol, GL_SAMPLE_MASK_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_1PASS_EXT', CardinalSymbol, GL_1PASS_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_2PASS_0_EXT', CardinalSymbol, GL_2PASS_0_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_2PASS_1_EXT', CardinalSymbol, GL_2PASS_1_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_4PASS_0_EXT', CardinalSymbol, GL_4PASS_0_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_4PASS_1_EXT', CardinalSymbol, GL_4PASS_1_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_4PASS_2_EXT', CardinalSymbol, GL_4PASS_2_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_4PASS_3_EXT', CardinalSymbol, GL_4PASS_3_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_BUFFERS_EXT', CardinalSymbol, GL_SAMPLE_BUFFERS_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLES_EXT', CardinalSymbol, GL_SAMPLES_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_MASK_VALUE_EXT', CardinalSymbol, GL_SAMPLE_MASK_VALUE_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_MASK_INVERT_EXT', CardinalSymbol, GL_SAMPLE_MASK_INVERT_EXT));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_SAMPLE_PATTERN_EXT', CardinalSymbol, GL_SAMPLE_PATTERN_EXT));
+
+  // GL_EXT_clip_volume_hint
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CLIP_VOLUME_CLIPPING_HINT_EXT', CardinalSymbol, GL_CLIP_VOLUME_CLIPPING_HINT_EXT));
+
+  // GL_SGIS_texture_color_mask
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TEXTURE_COLOR_WRITEMASK_SGIS', CardinalSymbol, GL_TEXTURE_COLOR_WRITEMASK_SGIS));
+
+  // GL_NV_vertex_program
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_PROGRAM_NV', CardinalSymbol, GL_VERTEX_PROGRAM_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_STATE_PROGRAM_NV', CardinalSymbol, GL_VERTEX_STATE_PROGRAM_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ATTRIB_ARRAY_SIZE_NV', CardinalSymbol, GL_ATTRIB_ARRAY_SIZE_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ATTRIB_ARRAY_STRIDE_NV', CardinalSymbol, GL_ATTRIB_ARRAY_STRIDE_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ATTRIB_ARRAY_TYPE_NV', CardinalSymbol, GL_ATTRIB_ARRAY_TYPE_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_ATTRIB_NV', CardinalSymbol, GL_CURRENT_ATTRIB_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_LENGTH_NV', CardinalSymbol, GL_PROGRAM_LENGTH_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_STRING_NV', CardinalSymbol, GL_PROGRAM_STRING_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MODELVIEW_PROJECTION_NV', CardinalSymbol, GL_MODELVIEW_PROJECTION_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_IDENTITY_NV', CardinalSymbol, GL_IDENTITY_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INVERSE_NV', CardinalSymbol, GL_INVERSE_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TRANSPOSE_NV', CardinalSymbol, GL_TRANSPOSE_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_INVERSE_TRANSPOSE_NV', CardinalSymbol, GL_INVERSE_TRANSPOSE_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV', CardinalSymbol, GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAX_TRACK_MATRICES_NV', CardinalSymbol, GL_MAX_TRACK_MATRICES_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX0_NV', CardinalSymbol, GL_MATRIX0_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX1_NV', CardinalSymbol, GL_MATRIX1_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX2_NV', CardinalSymbol, GL_MATRIX2_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX3_NV', CardinalSymbol, GL_MATRIX3_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX4_NV', CardinalSymbol, GL_MATRIX4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX5_NV', CardinalSymbol, GL_MATRIX5_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX6_NV', CardinalSymbol, GL_MATRIX6_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MATRIX7_NV', CardinalSymbol, GL_MATRIX7_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_MATRIX_STACK_DEPTH_NV', CardinalSymbol, GL_CURRENT_MATRIX_STACK_DEPTH_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_CURRENT_MATRIX_NV', CardinalSymbol, GL_CURRENT_MATRIX_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_PROGRAM_POINT_SIZE_NV', CardinalSymbol, GL_VERTEX_PROGRAM_POINT_SIZE_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_PROGRAM_TWO_SIDE_NV', CardinalSymbol, GL_VERTEX_PROGRAM_TWO_SIDE_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_PARAMETER_NV', CardinalSymbol, GL_PROGRAM_PARAMETER_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_ATTRIB_ARRAY_POINTER_NV', CardinalSymbol, GL_ATTRIB_ARRAY_POINTER_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_TARGET_NV', CardinalSymbol, GL_PROGRAM_TARGET_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_RESIDENT_NV', CardinalSymbol, GL_PROGRAM_RESIDENT_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TRACK_MATRIX_NV', CardinalSymbol, GL_TRACK_MATRIX_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_TRACK_MATRIX_TRANSFORM_NV', CardinalSymbol, GL_TRACK_MATRIX_TRANSFORM_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_PROGRAM_BINDING_NV', CardinalSymbol, GL_VERTEX_PROGRAM_BINDING_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_PROGRAM_ERROR_POSITION_NV', CardinalSymbol, GL_PROGRAM_ERROR_POSITION_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY0_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY0_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY1_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY1_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY2_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY2_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY3_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY3_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY4_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY5_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY5_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY6_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY6_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY7_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY7_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY8_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY8_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY9_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY9_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY10_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY10_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY11_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY11_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY12_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY12_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY13_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY13_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY14_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY14_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_VERTEX_ATTRIB_ARRAY15_NV', CardinalSymbol, GL_VERTEX_ATTRIB_ARRAY15_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB0_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB0_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB1_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB1_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB2_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB2_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB3_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB3_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB4_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB4_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB5_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB5_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB6_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB6_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB7_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB7_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB8_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB8_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB9_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB9_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB10_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB10_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB11_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB11_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB12_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB12_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB13_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB13_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB14_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB14_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP1_VERTEX_ATTRIB15_4_NV', CardinalSymbol, GL_MAP1_VERTEX_ATTRIB15_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB0_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB0_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB1_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB1_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB2_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB2_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB3_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB3_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB4_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB4_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB5_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB5_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB6_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB6_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB7_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB7_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB8_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB8_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB9_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB9_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB10_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB10_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB11_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB11_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB12_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB12_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB13_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB13_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB14_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB14_4_NV));
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MAP2_VERTEX_ATTRIB15_4_NV', CardinalSymbol, GL_MAP2_VERTEX_ATTRIB15_4_NV));
+
+  // NV_multisample_filter_hint
+  SymbolTable.AddSymbol(TConstSymbol.Create('GL_MULTISAMPLE_FILTER_HINT_NV', CardinalSymbol, GL_MULTISAMPLE_FILTER_HINT_NV));
+
+end;
+
+constructor TdwsOpenGLUnit.Create(AOwner: TComponent);
+begin
+  inherited;
+  FUnitName := 'OpenGLx';
+  FDependencies.Add('GLContext');
+  FDependencies.Add('GLVectorGeometry');
+end;
+
+procedure TGLPushAttrib.Execute;
+var
+  mask: Cardinal;
+begin
+  mask := Info['mask'];
+  glPushAttrib(mask);
+end;
+
+procedure TGLPopAttrib.Execute;
+begin
+  glPopAttrib;
+end;
+
+procedure TGLPushClientAttrib.Execute;
+var
+  mask: Cardinal;
+begin
+  mask := Info['mask'];
+  glPushClientAttrib(mask);
+end;
+
+procedure TGLPopClientAttrib.Execute;
+begin
+  glPopClientAttrib;
+end;
+
+procedure TGLEnable.Execute;
+var
+  cap: Cardinal;
+begin
+  cap := Info['cap'];
+  glEnable(cap);
+end;
+
+procedure TGLDisable.Execute;
+var
+  cap: Cardinal;
+begin
+  cap := Info['cap'];
+  glDisable(cap);
+end;
+
+procedure TGLEnableClientState.Execute;
+var
+  aarray: Cardinal;
+begin
+  aarray := Info['aarray'];
+  glEnableClientState(aarray);
+end;
+
+procedure TGLDisableClientState.Execute;
+var
+  aarray: Cardinal;
+begin
+  aarray := Info['aarray'];
+  glDisableClientState(aarray);
+end;
+
+procedure TGLMatrixMode.Execute;
+var
+  mode: Cardinal;
+begin
+  mode := Info['mode'];
+  glMatrixMode(mode);
+end;
+
+procedure TGLPushMatrix.Execute;
+begin
+  glPushMatrix;
+end;
+
+procedure TGLPopMatrix.Execute;
+begin
+  glPopMatrix;
+end;
+
+procedure TGLLoadIdentity.Execute;
+begin
+  glLoadIdentity;
+end;
+
+procedure TGLLoadMatrixf.Execute;
+var
+  m: TMatrix;
+begin
+  m := GetMatrixFromInfo(Info.Vars['m']);
+  glLoadMatrixf(@m[0]);
+end;
+
+procedure TGLTranslatef.Execute;
+var
+  x, y, z: Single;
+begin
+  x := Info['x'];
+  y := Info['y'];
+  z := Info['z'];
+  glTranslatef(x, y, z);
+end;
+
+procedure TGLRotatef.Execute;
+var
+  angle, x, y, z: Single;
+begin
+  angle := Info['angle'];
+  x := Info['x'];
+  y := Info['y'];
+  z := Info['z'];
+  glRotatef(angle, x, y, z);
+end;
+
+procedure TGLScalef.Execute;
+var
+  x, y, z: Single;
+begin
+  x := Info['x'];
+  y := Info['y'];
+  z := Info['z'];
+  glScalef(x, y, z);
+end;
+
+procedure TGLShadeModel.Execute;
+var
+  mode: Cardinal;
+begin
+  mode := Info['mode'];
+  glShadeModel(mode);
+end;
+
+procedure TGLCullFace.Execute;
+var
+  mode: Cardinal;
+begin
+  mode := Info['mode'];
+  glCullFace(mode);
+end;
+
+procedure TGLFrontFace.Execute;
+var
+  mode: Cardinal;
+begin
+  mode := Info['mode'];
+  glFrontFace(mode);
+end;
+
+procedure TGLPolygonMode.Execute;
+var
+  face, mode: Cardinal;
+begin
+  face := Info['face'];
+  mode := Info['mode'];
+  glPolygonMode(face, mode);
+end;
+
+procedure TGLBegin.Execute;
+var
+  mode: Cardinal;
+begin
+  mode := Info['mode'];
+  glBegin(mode);
+end;
+
+procedure TGLEnd.Execute;
+begin
+  glEnd;
+end;
+
+procedure TGLColor3f.Execute;
+var
+  red, green, blue: Single;
+begin
+  red := Info['red'];
+  green := Info['green'];
+  blue := Info['blue'];
+  glColor3f(red, green, blue);
+end;
+
+procedure TGLColor4f.Execute;
+var
+  red, green, blue, alpha: Single;
+begin
+  red := Info['red'];
+  green := Info['green'];
+  blue := Info['blue'];
+  alpha := Info['alpha'];
+  glColor4f(red, green, blue, alpha);
+end;
+
+procedure TGLNormal3f.Execute;
+var
+  x, y, z: Single;
+begin
+  x := Info['x'];
+  y := Info['y'];
+  z := Info['z'];
+  glNormal3f(x, y, z);
+end;
+
+procedure TGLVertex3f.Execute;
+var
+  x, y, z: Single;
+begin
+  x := Info['x'];
+  y := Info['y'];
+  z := Info['z'];
+  glVertex3f(x, y, z);
+end;
+
+procedure TGLTexCoord1f.Execute;
+var
+  s: Single;
+begin
+  s := Info['s'];
+  glTexCoord1f(s);
+end;
+
+procedure TGLTexCoord2f.Execute;
+var
+  s, t: Single;
+begin
+  s := Info['s'];
+  t := Info['t'];
+  glTexCoord2f(s, t);
+end;
+
+procedure TGLTexCoord3f.Execute;
+var
+  s, t, r: Single;
+begin
+  s := Info['s'];
+  t := Info['t'];
+  r := Info['r'];
+  glTexCoord3f(s, t, r);
+end;
+
+procedure TGLTexCoord4f.Execute;
+var
+  s, t, r, q: Single;
+begin
+  s := Info['s'];
+  t := Info['t'];
+  r := Info['r'];
+  q := Info['q'];
+  glTexCoord4f(s, t, r, q);
+end;
+
+procedure TGLLineWidth.Execute;
+var
+  width: Single;
+begin
+  width := Info['width'];
+  glLineWidth(width);
+end;
+
+procedure TGLMultiTexCoord1f.Execute;
+var
+  target: Cardinal;
+  s: Single;
+begin
+  target := Info['target'];
+  s := Info['s'];
+  glMultiTexCoord1f(target, s);
+end;
+
+procedure TGLMultiTexCoord2f.Execute;
+var
+  target: Cardinal;
+  s, t: Single;
+begin
+  target := Info['target'];
+  s := Info['s'];
+  t := Info['t'];
+  glMultiTexCoord2f(target, s, t);
+end;
+
+procedure TGLMultiTexCoord3f.Execute;
+var
+  target: Cardinal;
+  s, t, r: Single;
+begin
+  target := Info['target'];
+  s := Info['s'];
+  t := Info['t'];
+  r := Info['r'];
+  glMultiTexCoord3f(target, s, t, r);
+end;
+
+procedure TGLMultiTexCoord4f.Execute;
+var
+  target: Cardinal;
+  s, t, r, q: Single;
+begin
+  target := Info['target'];
+  s := Info['s'];
+  t := Info['t'];
+  r := Info['r'];
+  q := Info['q'];
+  glMultiTexCoord4f(target, s, t, r, q);
+end;
+
+procedure TGLActiveTexture.Execute;
+var
+  target: Cardinal;
+begin
+  target := Info['target'];
+  glActiveTexture(target);
+end;
+
+procedure TGLClientActiveTexture.Execute;
+var
+  target: Cardinal;
+begin
+  target := Info['target'];
+  glClientActiveTexture(target);
+end;
+
+procedure TGLTexEnvf.Execute;
+var
+  target, pname: Cardinal;
+  param: Single;
+begin
+  target := Info['target'];
+  pname := Info['pname'];
+  param := Info['param'];
+  glTexEnvf(target, pname, param);
+end;
+
+procedure TGLTexEnvi.Execute;
+var
+  target, pname: Cardinal;
+  param: Integer;
+begin
+  target := Info['target'];
+  pname := Info['pname'];
+  param := Info['param'];
+  glTexEnvi(target, pname, param);
+end;
+
+procedure TGLBlendFunc.Execute;
+var
+  sfactor, dfactor: Cardinal;
+begin
+  sfactor := Info['sfactor'];
+  dfactor := Info['dfactor'];
+  glBlendFunc(sfactor, dfactor);
+end;
+
+procedure TGLDepthFunc.Execute;
+var
+  func: Cardinal;
+begin
+  func := Info['func'];
+  glDepthFunc(func);
+end;
+
+procedure TGLDepthMask.Execute;
+var
+  flag: Byte;
+begin
+  flag := Info['flag'];
+  glDepthMask(BYTEBOOL(flag));
+end;
+
+procedure TGLDepthRange.Execute;
+var
+  znear, zfar: Double;
+begin
+  znear := Info['znear'];
+  zfar := Info['zfar'];
+  glDepthRange(znear, zfar);
+end;
+
+procedure TGLStencilFunc.Execute;
+var
+  func, mask: Cardinal;
+  ref: Integer;
+begin
+  func := Info['func'];
+  ref := Info['ref'];
+  mask := Info['mask'];
+  glStencilFunc(func, ref, mask);
+end;
+
+procedure TGLStencilMask.Execute;
+var
+  mask: Cardinal;
+begin
+  mask := Info['mask'];
+  glStencilMask(mask);
+end;
+
+procedure TGLStencilOp.Execute;
+var
+  fail, zfail, zpass: Cardinal;
+begin
+  fail := Info['fail'];
+  zfail := Info['zfail'];
+  zpass := Info['zpass'];
+  glStencilOp(fail, zfail, zpass);
+end;
+
+procedure TGLLogicOp.Execute;
+var
+  opcode: Cardinal;
+begin
+  opcode := Info['opcode'];
+  glLogicOp(opcode);
+end;
+
+
+end.

+ 1061 - 1061
Source/DWS.GLScene.pas → Source/GLS.dwsScene.pas

@@ -1,1061 +1,1061 @@
-//
-// This unit is part of the GLScene Engine, http://glscene.org
-//
-
-unit DWS.GLScene;
-
-(*
-  DelphiWebScript symbol creation for base GLScene classes.
-
-  This unit is dependent on dws2Classes and dws2VectorGeometry.
-  These components must be associated with the same compiler
-  for the GLScene classes to inherit from.
-*)
-
-interface
-
-uses
-  System.Classes,
-  System.SysUtils,
-
-  GLScene,
-  GLVectorGeometry,
-  GLCoordinates,
-  DWS.Exprs,
-  DWS.Symbols,
-  DWS.Comp,
-  DWS.CompStrings,
-  DWS.Stack,
-  DWS.Functions,
-  DWS.HelperFunc;
-
-type
-  TdwsGLSceneUnit = class(TdwsUnitComponent)
-  private
-    procedure AddClassTGLCoordinates(SymbolTable: TSymbolTable);
-    procedure AddClassTGLBaseSceneObject(SymbolTable: TSymbolTable);
-  protected
-    procedure AddUnitSymbols(SymbolTable: TSymbolTable); override;
-  public
-    constructor Create(AOwner: TComponent); override;
-  end;
-
-procedure Register;
-
-// --------------------------------------------------------
-implementation
-// --------------------------------------------------------
-
-// ----------
-// ---------- Internal class method class declarations ----------
-// ----------
-
-type
-
-// --------------------------
-// -------- TGLCoordinates
-// --------------------------
-
-  TGLCoordinatesSetXMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLCoordinatesGetXMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLCoordinatesSetYMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLCoordinatesGetYMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLCoordinatesSetZMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLCoordinatesGetZMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLCoordinatesSetWMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLCoordinatesGetWMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLCoordinatesSetVectorMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLCoordinatesSetPointMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLCoordinatesSetToZeroMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLCoordinatesSetAsVectorMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLCoordinatesGetAsVectorMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLCoordinatesGetAsStringMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLCoordinatesTranslateMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLCoordinatesAddScaledVectorMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLCoordinatesRotateMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLCoordinatesNormalizeMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLCoordinatesInvertMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLCoordinatesScaleMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLCoordinatesEqualsMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  // --------------------------
-  // TGLBaseSceneObject
-  // --------------------------
-  TGLBaseSceneObjectSetVisibleMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectGetVisibleMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectSetMatrixMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectGetMatrixMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectAbsoluteMatrixMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectInvAbsoluteMatrixMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectSetAbsolutePositionMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectGetAbsolutePositionMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectSetAbsoluteUpMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectGetAbsoluteUpMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectSetAbsoluteDirectionMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectGetAbsoluteDirectionMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectSetPositionMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectGetPositionMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectSetDirectionMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectGetDirectionMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectSetUpMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectGetUpMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectSetScaleMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectGetScaleMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectSetPitchAngleMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectGetPitchAngleMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectSetTurnAngleMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectGetTurnAngleMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectSetRollAngleMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectGetRollAngleMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectPitchMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectTurnMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectRollMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectMoveMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-  TGLBaseSceneObjectAddChildMethod = class(TInternalMethod)
-  public
-    procedure Execute(var ExternalObject: TObject); override;
-  end;
-
-
-  // ----------
-  // ---------- Vector/Matrix to/from IInfo helper functions ----------
-  // ----------
-
-function GetVectorFromInfo(Info: IInfo): TVector;
-begin
-  Result := VectorMake(Info.Element([0]).Value, Info.Element([1]).Value,
-    Info.Element([2]).Value, Info.Element([3]).Value);
-end;
-
-procedure SetInfoFromVector(Info: IInfo; vec: TVector);
-var
-  i: Integer;
-begin
-  for i := 0 to 3 do
-    Info.Element([i]).Value := vec[i];
-end;
-
-function GetMatrixFromInfo(Info: IInfo): TMatrix;
-var
-  i: Integer;
-begin
-  for i := 0 to 3 do
-    Result[i] := VectorMake(Info.Element([i]).Element([0]).Value,
-      Info.Element([i]).Element([1]).Value, Info.Element([i]).Element([2])
-      .Value, Info.Element([i]).Element([3]).Value);
-end;
-
-procedure SetInfoFromMatrix(Info: IInfo; mat: TMatrix);
-var
-  i, j: Integer;
-begin
-  for i := 0 to 3 do
-    for j := 0 to 3 do
-      Info.Element([i]).Element([j]).Value := mat[i][j];
-end;
-
-
-// ----------
-// ---------- Internal class method execute procedures ----------
-// ----------
-
-// TGLCoordinates internal class methods
-
-// TGLCoordinates.X write access
-procedure TGLCoordinatesSetXMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLCoordinates);
-  TGLCoordinates(ExternalObject).X := Info['Value'];
-end;
-
-// TGLCoordinates.X read access
-procedure TGLCoordinatesGetXMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLCoordinates);
-  Info.Result := TGLCoordinates(ExternalObject).X;
-end;
-
-// TGLCoordinates.Y write access
-procedure TGLCoordinatesSetYMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLCoordinates);
-  TGLCoordinates(ExternalObject).Y := Info['Value'];
-end;
-
-// TGLCoordinates.Y read access
-procedure TGLCoordinatesGetYMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLCoordinates);
-  Info.Result := TGLCoordinates(ExternalObject).Y;
-end;
-
-// TGLCoordinates.Z write access
-procedure TGLCoordinatesSetZMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLCoordinates);
-  TGLCoordinates(ExternalObject).Z := Info['Value'];
-end;
-
-// TGLCoordinates.Z read access
-procedure TGLCoordinatesGetZMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLCoordinates);
-  Info.Result := TGLCoordinates(ExternalObject).Z;
-end;
-
-// TGLCoordinates.W write access
-procedure TGLCoordinatesSetWMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLCoordinates);
-  TGLCoordinates(ExternalObject).W := Info['Value'];
-end;
-
-// TGLCoordinates.W read access
-procedure TGLCoordinatesGetWMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLCoordinates);
-  Info.Result := TGLCoordinates(ExternalObject).W;
-end;
-
-// TGLCoordinates.SetVector
-procedure TGLCoordinatesSetVectorMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLCoordinates);
-  TGLCoordinates(ExternalObject).SetVector(Info['x'], Info['y'], Info['z'],
-    Info['w']);
-end;
-
-// TGLCoordinates.SetPoint
-procedure TGLCoordinatesSetPointMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLCoordinates);
-  TGLCoordinates(ExternalObject).SetPoint(Info['x'], Info['y'], Info['z']);
-end;
-
-// TGLCoordinates.AsVector write access
-procedure TGLCoordinatesSetAsVectorMethod.Execute(var ExternalObject: TObject);
-var
-  v: TVector;
-begin
-  ValidateExternalObject(ExternalObject, TGLCoordinates);
-  v := GetVectorFromInfo(Info.Vars['Value']);
-  TGLCoordinates(ExternalObject).AsVector := v;
-end;
-
-// TGLCoordinates.AsVector read access
-procedure TGLCoordinatesGetAsVectorMethod.Execute(var ExternalObject: TObject);
-var
-  v: TVector;
-begin
-  ValidateExternalObject(ExternalObject, TGLCoordinates);
-  v := TGLCoordinates(ExternalObject).AsVector;
-  SetInfoFromVector(Info.Vars['Result'], v);
-end;
-
-// TGLCoordinates.AsString read access
-procedure TGLCoordinatesGetAsStringMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLCoordinates);
-  Info.Result := TGLCoordinates(ExternalObject).AsString;
-end;
-
-// TGLCoordinates.Translate
-procedure TGLCoordinatesTranslateMethod.Execute(var ExternalObject: TObject);
-var
-  v: TVector;
-begin
-  ValidateExternalObject(ExternalObject, TGLCoordinates);
-  v := GetVectorFromInfo(Info.Vars['translationVector']);
-  TGLCoordinates(ExternalObject).Translate(v);
-end;
-
-// TGLCoordinates.AddScaledVector
-procedure TGLCoordinatesAddScaledVectorMethod.Execute(var ExternalObject
-  : TObject);
-var
-  v: TVector;
-begin
-  ValidateExternalObject(ExternalObject, TGLCoordinates);
-  v := GetVectorFromInfo(Info.Vars['translationVector']);
-  TGLCoordinates(ExternalObject).AddScaledVector(Info['factor'], v);
-end;
-
-// TGLCoordinates.Rotate
-procedure TGLCoordinatesRotateMethod.Execute(var ExternalObject: TObject);
-var
-  v: TVector;
-begin
-  ValidateExternalObject(ExternalObject, TGLCoordinates);
-  v := GetVectorFromInfo(Info.Vars['anAxis']);
-  TGLCoordinates(ExternalObject).Rotate(v, Info['anAngle']);
-end;
-
-// TGLCoordinates.Normalize
-procedure TGLCoordinatesNormalizeMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLCoordinates);
-  TGLCoordinates(ExternalObject).Normalize;
-end;
-
-// TGLCoordinates.Invert
-procedure TGLCoordinatesInvertMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLCoordinates);
-  TGLCoordinates(ExternalObject).Invert;
-end;
-
-// TGLCoordinates.Scale
-procedure TGLCoordinatesScaleMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLCoordinates);
-  TGLCoordinates(ExternalObject).Scale(Info['factor']);
-end;
-
-// TGLCoordinates.Equals
-procedure TGLCoordinatesEqualsMethod.Execute(var ExternalObject: TObject);
-var
-  v: TVector;
-begin
-  ValidateExternalObject(ExternalObject, TGLCoordinates);
-  v := GetVectorFromInfo(Info.Vars['aVector']);
-  Info.Result := TGLCoordinates(ExternalObject).Equals(v);
-end;
-
-// TGLCoordinates.SetToZero
-procedure TGLCoordinatesSetToZeroMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLCoordinates);
-  TGLCoordinates(ExternalObject).SetToZero;
-end;
-
-
-// TGLBaseSceneObject internal class methods
-
-// TGLBaseSceneObject.SetVisible
-procedure TGLBaseSceneObjectSetVisibleMethod.Execute(var ExternalObject
-  : TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  TGLBaseSceneObject(ExternalObject).Visible := Info.Vars['Value'].Value;
-end;
-
-// TGLBaseSceneObject.GetVisible
-procedure TGLBaseSceneObjectGetVisibleMethod.Execute(var ExternalObject
-  : TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  Info.Result := TGLBaseSceneObject(ExternalObject).Visible;
-end;
-
-// TGLBaseSceneObject.SetMatrix
-procedure TGLBaseSceneObjectSetMatrixMethod.Execute(var ExternalObject
-  : TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  TGLBaseSceneObject(ExternalObject).Matrix :=
-    GetMatrixFromInfo(Info.Vars['Value']);
-end;
-
-// TGLBaseSceneObject.GetMatrix
-procedure TGLBaseSceneObjectGetMatrixMethod.Execute(var ExternalObject
-  : TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  SetInfoFromMatrix(Info.Vars['Result'],
-    TGLBaseSceneObject(ExternalObject).Matrix);
-end;
-
-// TGLBaseSceneObject.AbsoluteMatrix
-procedure TGLBaseSceneObjectAbsoluteMatrixMethod.Execute(var ExternalObject
-  : TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  SetInfoFromMatrix(Info.Vars['Result'], TGLBaseSceneObject(ExternalObject)
-    .AbsoluteMatrix);
-end;
-
-// TGLBaseSceneObject.InvAbsoluteMatrix
-procedure TGLBaseSceneObjectInvAbsoluteMatrixMethod.Execute(var ExternalObject
-  : TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  SetInfoFromMatrix(Info.Vars['Result'], TGLBaseSceneObject(ExternalObject)
-    .InvAbsoluteMatrix);
-end;
-
-// TGLBaseSceneObject.SetAbsolutePosition
-procedure TGLBaseSceneObjectSetAbsolutePositionMethod.Execute(var ExternalObject
-  : TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  TGLBaseSceneObject(ExternalObject).AbsolutePosition :=
-    GetVectorFromInfo(Info.Vars['Value']);
-end;
-
-// TGLBaseSceneObject.GetAbsolutePosition
-procedure TGLBaseSceneObjectGetAbsolutePositionMethod.Execute(var ExternalObject
-  : TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  SetInfoFromVector(Info.Vars['Result'], TGLBaseSceneObject(ExternalObject)
-    .AbsolutePosition);
-end;
-
-// TGLBaseSceneObject.SetAbsoluteUp
-procedure TGLBaseSceneObjectSetAbsoluteUpMethod.Execute(var ExternalObject
-  : TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  TGLBaseSceneObject(ExternalObject).AbsoluteUp :=
-    GetVectorFromInfo(Info.Vars['Value']);
-end;
-
-// TGLBaseSceneObject.GetAbsoluteUp
-procedure TGLBaseSceneObjectGetAbsoluteUpMethod.Execute(var ExternalObject
-  : TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  SetInfoFromVector(Info.Vars['Result'], TGLBaseSceneObject(ExternalObject)
-    .AbsoluteUp);
-end;
-
-// TGLBaseSceneObject.SetAbsoluteDirection
-procedure TGLBaseSceneObjectSetAbsoluteDirectionMethod.Execute
-  (var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  TGLBaseSceneObject(ExternalObject).AbsoluteDirection :=
-    GetVectorFromInfo(Info.Vars['Value']);
-end;
-
-// TGLBaseSceneObject.GetAbsoluteDirection
-procedure TGLBaseSceneObjectGetAbsoluteDirectionMethod.Execute
-  (var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  SetInfoFromVector(Info.Vars['Result'], TGLBaseSceneObject(ExternalObject)
-    .AbsoluteDirection);
-end;
-
-// TGLBaseSceneObject.Position write access
-procedure TGLBaseSceneObjectSetPositionMethod.Execute(var ExternalObject
-  : TObject);
-var
-  Value: TGLCoordinates;
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  Value := TGLCoordinates(Info.GetExternalObjForVar('Value'));
-  TGLBaseSceneObject(ExternalObject).Position := Value;
-end;
-
-// TGLBaseSceneObject.Position read access
-procedure TGLBaseSceneObjectGetPositionMethod.Execute(var ExternalObject
-  : TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  Info.Result := Info.RegisterExternalObject(TGLBaseSceneObject(ExternalObject)
-    .Position);
-end;
-
-// TGLBaseSceneObject.Direction write access
-procedure TGLBaseSceneObjectSetDirectionMethod.Execute(var ExternalObject
-  : TObject);
-var
-  Value: TGLCoordinates;
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  Value := TGLCoordinates(Info.GetExternalObjForVar('Value'));
-  TGLBaseSceneObject(ExternalObject).Direction := Value;
-end;
-
-// TGLBaseSceneObject.Direction read access
-procedure TGLBaseSceneObjectGetDirectionMethod.Execute(var ExternalObject
-  : TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  Info.Result := Info.RegisterExternalObject(TGLBaseSceneObject(ExternalObject)
-    .Direction);
-end;
-
-// TGLBaseSceneObject.Up write access
-procedure TGLBaseSceneObjectSetUpMethod.Execute(var ExternalObject: TObject);
-var
-  Value: TGLCoordinates;
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  Value := TGLCoordinates(Info.GetExternalObjForVar('Value'));
-  TGLBaseSceneObject(ExternalObject).Up := Value;
-end;
-
-// TGLBaseSceneObject.Up read access
-procedure TGLBaseSceneObjectGetUpMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  Info.Result := Info.RegisterExternalObject
-    (TGLBaseSceneObject(ExternalObject).Up);
-end;
-
-// TGLBaseSceneObject.Scale write access
-procedure TGLBaseSceneObjectSetScaleMethod.Execute(var ExternalObject: TObject);
-var
-  Value: TGLCoordinates;
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  Value := TGLCoordinates(Info.GetExternalObjForVar('Value'));
-  TGLBaseSceneObject(ExternalObject).Scale := Value;
-end;
-
-// TGLBaseSceneObject.Scale read access
-procedure TGLBaseSceneObjectGetScaleMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  Info.Result := Info.RegisterExternalObject
-    (TGLBaseSceneObject(ExternalObject).Scale);
-end;
-
-// TGLBaseSceneObject.PitchAngle write access
-procedure TGLBaseSceneObjectSetPitchAngleMethod.Execute(var ExternalObject
-  : TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  TGLBaseSceneObject(ExternalObject).PitchAngle := Info.Vars['Value'].Value;
-end;
-
-// TGLBaseSceneObject.PitchAngle read access
-procedure TGLBaseSceneObjectGetPitchAngleMethod.Execute(var ExternalObject
-  : TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  Info.Result := TGLBaseSceneObject(ExternalObject).PitchAngle;
-end;
-
-// TGLBaseSceneObject.TurnAngle write access
-procedure TGLBaseSceneObjectSetTurnAngleMethod.Execute(var ExternalObject
-  : TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  TGLBaseSceneObject(ExternalObject).TurnAngle := Info.Vars['Value'].Value;
-end;
-
-// TGLBaseSceneObject.TurnAngle read access
-procedure TGLBaseSceneObjectGetTurnAngleMethod.Execute(var ExternalObject
-  : TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  Info.Result := TGLBaseSceneObject(ExternalObject).TurnAngle;
-end;
-
-// TGLBaseSceneObject.RollAngle write access
-procedure TGLBaseSceneObjectSetRollAngleMethod.Execute(var ExternalObject
-  : TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  TGLBaseSceneObject(ExternalObject).RollAngle := Info.Vars['Value'].Value;
-end;
-
-// TGLBaseSceneObject.RollAngle read access
-procedure TGLBaseSceneObjectGetRollAngleMethod.Execute(var ExternalObject
-  : TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  Info.Result := TGLBaseSceneObject(ExternalObject).RollAngle;
-end;
-
-// TGLBaseSceneObject.Pitch
-procedure TGLBaseSceneObjectPitchMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  TGLBaseSceneObject(ExternalObject).Pitch(Info['angle']);
-end;
-
-// TGLBaseSceneObject.Turn
-procedure TGLBaseSceneObjectTurnMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  TGLBaseSceneObject(ExternalObject).Turn(Info['angle']);
-end;
-
-// TGLBaseSceneObject.Roll
-procedure TGLBaseSceneObjectRollMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  TGLBaseSceneObject(ExternalObject).Roll(Info['angle']);
-end;
-
-// TGLBaseSceneObject.Move
-procedure TGLBaseSceneObjectMoveMethod.Execute(var ExternalObject: TObject);
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  TGLBaseSceneObject(ExternalObject).Move(Info['ADistance']);
-end;
-
-// TGLBaseSceneObject.AddChild
-procedure TGLBaseSceneObjectAddChildMethod.Execute(var ExternalObject: TObject);
-var
-  AChild: TObject;
-begin
-  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
-  AChild := Info.GetExternalObjForVar('AChild');
-  if not Assigned(AChild) then
-    raise Exception.Create('AChild parameter is unassigned.');
-  if not(AChild is TGLBaseSceneObject) then
-    Exception.Create
-      ('AChild parameter is not inheriting from TGLBaseSceneObject.');
-  TGLBaseSceneObject(ExternalObject).AddChild(TGLBaseSceneObject(AChild));
-end;
-
-// ----------
-// ---------- Global procedures/functions ----------
-// ----------
-procedure Register;
-begin
-  RegisterComponents('GLScene DWS2', [Tdws2GLSceneUnit]);
-end;
-
-// ----------
-// ---------- TdwsGLSceneUnit ----------
-// ----------
-constructor TdwsGLSceneUnit.Create(AOwner: TComponent);
-begin
-  inherited;
-  FUnitName := 'GLScene';
-  with FDependencies do
-  begin
-    Add('Classes');
-    Add('GLVectorGeometry');
-  end;
-end;
-
-procedure TdwsGLSceneUnit.AddClassTGLCoordinates(SymbolTable: TSymbolTable);
-var
-  ClassSym: TClassSymbol;
-begin
-  ClassSym := TClassSymbol(AddClassSymbol(SymbolTable, 'TGLCoordinates',
-    'TPersistent'));
-
-  // Methods
-  if not Assigned(ClassSym.Members.FindLocal('SetX')) then
-    TGLCoordinatesSetXMethod.Create(mkProcedure, [], 0, 'SetX',
-      ['Value', 'Float'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('GetX')) then
-    TGLCoordinatesGetXMethod.Create(mkFunction, [], 0, 'GetX', [], 'Float',
-      ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('SetY')) then
-    TGLCoordinatesSetYMethod.Create(mkProcedure, [], 0, 'SetY',
-      ['Value', 'Float'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('GetY')) then
-    TGLCoordinatesGetYMethod.Create(mkFunction, [], 0, 'GetY', [], 'Float',
-      ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('SetZ')) then
-    TGLCoordinatesSetZMethod.Create(mkProcedure, [], 0, 'SetZ',
-      ['Value', 'Float'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('GetZ')) then
-    TGLCoordinatesGetZMethod.Create(mkFunction, [], 0, 'GetZ', [], 'Float',
-      ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('SetW')) then
-    TGLCoordinatesSetWMethod.Create(mkProcedure, [], 0, 'SetW',
-      ['Value', 'Float'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('GetW')) then
-    TGLCoordinatesGetWMethod.Create(mkFunction, [], 0, 'GetW', [], 'Float',
-      ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('SetVector')) then
-    TGLCoordinatesSetVectorMethod.Create(mkProcedure, [], 0, 'SetVector',
-      ['x', 'Float', 'y', 'Float', 'z', 'Float', 'w', 'Float'], '', ClassSym,
-      SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('SetPoint')) then
-    TGLCoordinatesSetPointMethod.Create(mkProcedure, [], 0, 'SetPoint',
-      ['x', 'Float', 'y', 'Float', 'z', 'Float'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('SetToZero')) then
-    TGLCoordinatesSetToZeroMethod.Create(mkProcedure, [], 0, 'SetToZero', [],
-      '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('SetAsVector')) then
-    TGLCoordinatesSetAsVectorMethod.Create(mkProcedure, [], 0, 'SetAsVector',
-      ['Value', 'TVector'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('GetAsVector')) then
-    TGLCoordinatesGetAsVectorMethod.Create(mkFunction, [], 0, 'GetAsVector', [],
-      'TVector', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('GetAsString')) then
-    TGLCoordinatesGetAsStringMethod.Create(mkFunction, [], 0, 'GetAsString', [],
-      'String', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('Translate')) then
-    TGLCoordinatesTranslateMethod.Create(mkProcedure, [], 0, 'Translate',
-      ['translationVector', 'TVector'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('AddScaledVector')) then
-    TGLCoordinatesAddScaledVectorMethod.Create(mkProcedure, [], 0,
-      'AddScaledVector', ['factor', 'Float', 'translationVector', 'TVector'],
-      '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('Rotate')) then
-    TGLCoordinatesRotateMethod.Create(mkProcedure, [], 0, 'Rotate',
-      ['anAxis', 'TVector', 'anAngle', 'Float'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('Normalize')) then
-    TGLCoordinatesNormalizeMethod.Create(mkProcedure, [], 0, 'Normalize', [],
-      '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('Invert')) then
-    TGLCoordinatesInvertMethod.Create(mkProcedure, [], 0, 'Invert', [], '',
-      ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('Scale')) then
-    TGLCoordinatesScaleMethod.Create(mkProcedure, [], 0, 'Scale',
-      ['factor', 'Float'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('Equals')) then
-    TGLCoordinatesEqualsMethod.Create(mkFunction, [], 0, 'Equals',
-      ['aVector', 'TVector'], 'Boolean', ClassSym, SymbolTable);
-
-  // Properties
-  AddPropertyToClass('X', 'Float', 'GetX', 'SetX', '', False, ClassSym,
-    SymbolTable);
-  AddPropertyToClass('Y', 'Float', 'GetY', 'SetY', '', False, ClassSym,
-    SymbolTable);
-  AddPropertyToClass('Z', 'Float', 'GetZ', 'SetZ', '', False, ClassSym,
-    SymbolTable);
-  AddPropertyToClass('AsVector', 'TVector', 'GetAsVector', 'SetAsVector', '',
-    False, ClassSym, SymbolTable);
-  AddPropertyToClass('AsString', 'String', 'GetAsString', '', '', False,
-    ClassSym, SymbolTable);
-end;
-
-procedure TdwsGLSceneUnit.AddClassTGLBaseSceneObject(SymbolTable: TSymbolTable);
-var
-  ClassSym: TClassSymbol;
-begin
-  ClassSym := TClassSymbol(AddClassSymbol(SymbolTable, 'TGLBaseSceneObject',
-    'TComponent'));
-
-  // Methods
-  if not Assigned(ClassSym.Members.FindLocal('SetVisible')) then
-    TGLBaseSceneObjectSetVisibleMethod.Create(mkProcedure, [], 0, 'SetVisible',
-      ['Value', 'Boolean'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('GetVisible')) then
-    TGLBaseSceneObjectGetVisibleMethod.Create(mkFunction, [], 0, 'GetVisible',
-      [], 'Boolean', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('SetMatrix')) then
-    TGLBaseSceneObjectSetMatrixMethod.Create(mkProcedure, [], 0, 'SetMatrix',
-      ['Value', 'TMatrix'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('GetMatrix')) then
-    TGLBaseSceneObjectGetMatrixMethod.Create(mkFunction, [], 0, 'GetMatrix', [],
-      'TMatrix', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('AbsoluteMatrix')) then
-    TGLBaseSceneObjectAbsoluteMatrixMethod.Create(mkFunction, [], 0,
-      'AbsoluteMatrix', [], 'TMatrix', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('InvAbsoluteMatrix')) then
-    TGLBaseSceneObjectInvAbsoluteMatrixMethod.Create(mkFunction, [], 0,
-      'InvAbsoluteMatrix', [], 'TMatrix', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('SetAbsolutePosition')) then
-    TGLBaseSceneObjectSetAbsolutePositionMethod.Create(mkProcedure, [], 0,
-      'SetAbsolutePosition', ['Value', 'TVector'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('GetAbsolutePosition')) then
-    TGLBaseSceneObjectGetAbsolutePositionMethod.Create(mkFunction, [], 0,
-      'GetAbsolutePosition', [], 'TVector', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('SetAbsoluteUp')) then
-    TGLBaseSceneObjectSetAbsoluteUpMethod.Create(mkProcedure, [], 0,
-      'SetAbsoluteUp', ['Value', 'TVector'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('GetAbsoluteUp')) then
-    TGLBaseSceneObjectGetAbsoluteUpMethod.Create(mkFunction, [], 0,
-      'GetAbsoluteUp', [], 'TVector', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('SetAbsoluteDirection')) then
-    TGLBaseSceneObjectSetAbsoluteDirectionMethod.Create(mkProcedure, [], 0,
-      'SetAbsoluteDirection', ['Value', 'TVector'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('GetAbsoluteDirection')) then
-    TGLBaseSceneObjectGetAbsoluteDirectionMethod.Create(mkFunction, [], 0,
-      'GetAbsoluteDirection', [], 'TVector', ClassSym, SymbolTable);
-
-  if not Assigned(ClassSym.Members.FindLocal('SetPosition')) then
-    TGLBaseSceneObjectSetPositionMethod.Create(mkProcedure, [], 0,
-      'SetPosition', ['Value', 'TGLCoordinates'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('GetPosition')) then
-    TGLBaseSceneObjectGetPositionMethod.Create(mkFunction, [], 0, 'GetPosition',
-      [], 'TGLCoordinates', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('SetDirection')) then
-    TGLBaseSceneObjectSetDirectionMethod.Create(mkProcedure, [], 0,
-      'SetDirection', ['Value', 'TGLCoordinates'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('GetDirection')) then
-    TGLBaseSceneObjectGetDirectionMethod.Create(mkFunction, [], 0,
-      'GetDirection', [], 'TGLCoordinates', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('SetUp')) then
-    TGLBaseSceneObjectSetUpMethod.Create(mkProcedure, [], 0, 'SetUp',
-      ['Value', 'TGLCoordinates'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('GetUp')) then
-    TGLBaseSceneObjectGetUpMethod.Create(mkFunction, [], 0, 'GetUp', [],
-      'TGLCoordinates', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('SetScale')) then
-    TGLBaseSceneObjectSetScaleMethod.Create(mkProcedure, [], 0, 'SetScale',
-      ['Value', 'TGLCoordinates'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('GetScale')) then
-    TGLBaseSceneObjectGetScaleMethod.Create(mkFunction, [], 0, 'GetScale', [],
-      'TGLCoordinates', ClassSym, SymbolTable);
-
-  if not Assigned(ClassSym.Members.FindLocal('SetPitchAngle')) then
-    TGLBaseSceneObjectSetPitchAngleMethod.Create(mkProcedure, [], 0,
-      'SetPitchAngle', ['Value', 'Float'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('GetPitchAngle')) then
-    TGLBaseSceneObjectGetPitchAngleMethod.Create(mkFunction, [], 0,
-      'GetPitchAngle', [], 'Float', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('SetTurnAngle')) then
-    TGLBaseSceneObjectSetTurnAngleMethod.Create(mkProcedure, [], 0,
-      'SetTurnAngle', ['Value', 'Float'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('GetTurnAngle')) then
-    TGLBaseSceneObjectGetTurnAngleMethod.Create(mkFunction, [], 0,
-      'GetTurnAngle', [], 'Float', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('SetRollAngle')) then
-    TGLBaseSceneObjectSetRollAngleMethod.Create(mkProcedure, [], 0,
-      'SetRollAngle', ['Value', 'Float'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('GetRollAngle')) then
-    TGLBaseSceneObjectGetRollAngleMethod.Create(mkFunction, [], 0,
-      'GetRollAngle', [], 'Float', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('Pitch')) then
-    TGLBaseSceneObjectPitchMethod.Create(mkProcedure, [], 0, 'Pitch',
-      ['angle', 'Float'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('Turn')) then
-    TGLBaseSceneObjectTurnMethod.Create(mkProcedure, [], 0, 'Turn',
-      ['angle', 'Float'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('Roll')) then
-    TGLBaseSceneObjectRollMethod.Create(mkProcedure, [], 0, 'Roll',
-      ['angle', 'Float'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('Move')) then
-    TGLBaseSceneObjectMoveMethod.Create(mkProcedure, [], 0, 'Move',
-      ['ADistance', 'Float'], '', ClassSym, SymbolTable);
-  if not Assigned(ClassSym.Members.FindLocal('AddChild')) then
-    TGLBaseSceneObjectAddChildMethod.Create(mkProcedure, [], 0, 'AddChild',
-      ['AChild', 'TGLBaseSceneObject'], '', ClassSym, SymbolTable);
-
-  // Properties
-  AddPropertyToClass('Visible', 'Boolean', 'GetVisible', 'SetVisible', '',
-    False, ClassSym, SymbolTable);
-  AddPropertyToClass('Matrix', 'TMatrix', 'GetMatrix', 'SetMatrix', '', False,
-    ClassSym, SymbolTable);
-  AddPropertyToClass('AbsolutePosition', 'TVector', 'GetAbsolutePosition',
-    'SetAbsolutePosition', '', False, ClassSym, SymbolTable);
-  AddPropertyToClass('AbsoluteUp', 'TVector', 'GetAbsoluteUp', 'SetAbsoluteUp',
-    '', False, ClassSym, SymbolTable);
-  AddPropertyToClass('AbsoluteDirection', 'TVector', 'GetAbsoluteDirection',
-    'SetAbsoluteDirection', '', False, ClassSym, SymbolTable);
-  AddPropertyToClass('Position', 'TGLBaseSceneObject', 'GetPosition',
-    'SetPosition', '', False, ClassSym, SymbolTable);
-  AddPropertyToClass('Direction', 'TGLBaseSceneObject', 'GetDirection',
-    'SetDirection', '', False, ClassSym, SymbolTable);
-  AddPropertyToClass('Up', 'TGLBaseSceneObject', 'GetUp', 'SetUp', '', False,
-    ClassSym, SymbolTable);
-  AddPropertyToClass('Scale', 'TGLBaseSceneObject', 'GetScale', 'SetScale', '',
-    False, ClassSym, SymbolTable);
-  AddPropertyToClass('PitchAngle', 'Float', 'GetPitchAngle', 'SetPitchAngle',
-    '', False, ClassSym, SymbolTable);
-  AddPropertyToClass('TurnAngle', 'Float', 'GetTurnAngle', 'SetTurnAngle', '',
-    False, ClassSym, SymbolTable);
-  AddPropertyToClass('RollAngle', 'Float', 'GetRollAngle', 'SetRollAngle', '',
-    False, ClassSym, SymbolTable);
-end;
-
-procedure TdwsGLSceneUnit.AddUnitSymbols(SymbolTable: TSymbolTable);
-begin
-  // Forward class declaration
-  AddForwardDeclaration('TGLCoordinates', SymbolTable);
-  AddForwardDeclaration('TGLBaseSceneObject', SymbolTable);
-
-  // Class types
-  AddClassTGLCoordinates(SymbolTable);
-  AddClassTGLBaseSceneObject(SymbolTable);
-end;
-
-end.
+//
+// This unit is part of the GLScene Engine, http://glscene.org
+//
+
+unit GLS.dwsScene;
+
+(*
+  DelphiWebScript symbol creation for base GLScene classes.
+
+  This unit is dependent on dws2Classes and dws2VectorGeometry.
+  These components must be associated with the same compiler
+  for the GLScene classes to inherit from.
+*)
+
+interface
+
+uses
+  System.Classes,
+  System.SysUtils,
+
+  GLScene,
+  GLVectorGeometry,
+  GLCoordinates,
+  DWS.Exprs,
+  DWS.Symbols,
+  DWS.Comp,
+  DWS.CompStrings,
+  DWS.Stack,
+  DWS.Functions,
+  DWS.HelperFunc;
+
+type
+  TdwsGLSceneUnit = class(TdwsUnitComponent)
+  private
+    procedure AddClassTGLCoordinates(SymbolTable: TSymbolTable);
+    procedure AddClassTGLBaseSceneObject(SymbolTable: TSymbolTable);
+  protected
+    procedure AddUnitSymbols(SymbolTable: TSymbolTable); override;
+  public
+    constructor Create(AOwner: TComponent); override;
+  end;
+
+procedure Register;
+
+// --------------------------------------------------------
+implementation
+// --------------------------------------------------------
+
+// ----------
+// ---------- Internal class method class declarations ----------
+// ----------
+
+type
+
+// --------------------------
+// -------- TGLCoordinates
+// --------------------------
+
+  TGLCoordinatesSetXMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLCoordinatesGetXMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLCoordinatesSetYMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLCoordinatesGetYMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLCoordinatesSetZMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLCoordinatesGetZMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLCoordinatesSetWMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLCoordinatesGetWMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLCoordinatesSetVectorMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLCoordinatesSetPointMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLCoordinatesSetToZeroMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLCoordinatesSetAsVectorMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLCoordinatesGetAsVectorMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLCoordinatesGetAsStringMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLCoordinatesTranslateMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLCoordinatesAddScaledVectorMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLCoordinatesRotateMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLCoordinatesNormalizeMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLCoordinatesInvertMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLCoordinatesScaleMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLCoordinatesEqualsMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  // --------------------------
+  // TGLBaseSceneObject
+  // --------------------------
+  TGLBaseSceneObjectSetVisibleMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectGetVisibleMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectSetMatrixMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectGetMatrixMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectAbsoluteMatrixMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectInvAbsoluteMatrixMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectSetAbsolutePositionMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectGetAbsolutePositionMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectSetAbsoluteUpMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectGetAbsoluteUpMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectSetAbsoluteDirectionMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectGetAbsoluteDirectionMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectSetPositionMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectGetPositionMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectSetDirectionMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectGetDirectionMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectSetUpMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectGetUpMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectSetScaleMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectGetScaleMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectSetPitchAngleMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectGetPitchAngleMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectSetTurnAngleMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectGetTurnAngleMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectSetRollAngleMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectGetRollAngleMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectPitchMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectTurnMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectRollMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectMoveMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+  TGLBaseSceneObjectAddChildMethod = class(TInternalMethod)
+  public
+    procedure Execute(var ExternalObject: TObject); override;
+  end;
+
+
+  // ----------
+  // ---------- Vector/Matrix to/from IInfo helper functions ----------
+  // ----------
+
+function GetVectorFromInfo(Info: IInfo): TVector;
+begin
+  Result := VectorMake(Info.Element([0]).Value, Info.Element([1]).Value,
+    Info.Element([2]).Value, Info.Element([3]).Value);
+end;
+
+procedure SetInfoFromVector(Info: IInfo; vec: TVector);
+var
+  i: Integer;
+begin
+  for i := 0 to 3 do
+    Info.Element([i]).Value := vec[i];
+end;
+
+function GetMatrixFromInfo(Info: IInfo): TMatrix;
+var
+  i: Integer;
+begin
+  for i := 0 to 3 do
+    Result[i] := VectorMake(Info.Element([i]).Element([0]).Value,
+      Info.Element([i]).Element([1]).Value, Info.Element([i]).Element([2])
+      .Value, Info.Element([i]).Element([3]).Value);
+end;
+
+procedure SetInfoFromMatrix(Info: IInfo; mat: TMatrix);
+var
+  i, j: Integer;
+begin
+  for i := 0 to 3 do
+    for j := 0 to 3 do
+      Info.Element([i]).Element([j]).Value := mat[i][j];
+end;
+
+
+// ----------
+// ---------- Internal class method execute procedures ----------
+// ----------
+
+// TGLCoordinates internal class methods
+
+// TGLCoordinates.X write access
+procedure TGLCoordinatesSetXMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLCoordinates);
+  TGLCoordinates(ExternalObject).X := Info['Value'];
+end;
+
+// TGLCoordinates.X read access
+procedure TGLCoordinatesGetXMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLCoordinates);
+  Info.Result := TGLCoordinates(ExternalObject).X;
+end;
+
+// TGLCoordinates.Y write access
+procedure TGLCoordinatesSetYMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLCoordinates);
+  TGLCoordinates(ExternalObject).Y := Info['Value'];
+end;
+
+// TGLCoordinates.Y read access
+procedure TGLCoordinatesGetYMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLCoordinates);
+  Info.Result := TGLCoordinates(ExternalObject).Y;
+end;
+
+// TGLCoordinates.Z write access
+procedure TGLCoordinatesSetZMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLCoordinates);
+  TGLCoordinates(ExternalObject).Z := Info['Value'];
+end;
+
+// TGLCoordinates.Z read access
+procedure TGLCoordinatesGetZMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLCoordinates);
+  Info.Result := TGLCoordinates(ExternalObject).Z;
+end;
+
+// TGLCoordinates.W write access
+procedure TGLCoordinatesSetWMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLCoordinates);
+  TGLCoordinates(ExternalObject).W := Info['Value'];
+end;
+
+// TGLCoordinates.W read access
+procedure TGLCoordinatesGetWMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLCoordinates);
+  Info.Result := TGLCoordinates(ExternalObject).W;
+end;
+
+// TGLCoordinates.SetVector
+procedure TGLCoordinatesSetVectorMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLCoordinates);
+  TGLCoordinates(ExternalObject).SetVector(Info['x'], Info['y'], Info['z'],
+    Info['w']);
+end;
+
+// TGLCoordinates.SetPoint
+procedure TGLCoordinatesSetPointMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLCoordinates);
+  TGLCoordinates(ExternalObject).SetPoint(Info['x'], Info['y'], Info['z']);
+end;
+
+// TGLCoordinates.AsVector write access
+procedure TGLCoordinatesSetAsVectorMethod.Execute(var ExternalObject: TObject);
+var
+  v: TVector;
+begin
+  ValidateExternalObject(ExternalObject, TGLCoordinates);
+  v := GetVectorFromInfo(Info.Vars['Value']);
+  TGLCoordinates(ExternalObject).AsVector := v;
+end;
+
+// TGLCoordinates.AsVector read access
+procedure TGLCoordinatesGetAsVectorMethod.Execute(var ExternalObject: TObject);
+var
+  v: TVector;
+begin
+  ValidateExternalObject(ExternalObject, TGLCoordinates);
+  v := TGLCoordinates(ExternalObject).AsVector;
+  SetInfoFromVector(Info.Vars['Result'], v);
+end;
+
+// TGLCoordinates.AsString read access
+procedure TGLCoordinatesGetAsStringMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLCoordinates);
+  Info.Result := TGLCoordinates(ExternalObject).AsString;
+end;
+
+// TGLCoordinates.Translate
+procedure TGLCoordinatesTranslateMethod.Execute(var ExternalObject: TObject);
+var
+  v: TVector;
+begin
+  ValidateExternalObject(ExternalObject, TGLCoordinates);
+  v := GetVectorFromInfo(Info.Vars['translationVector']);
+  TGLCoordinates(ExternalObject).Translate(v);
+end;
+
+// TGLCoordinates.AddScaledVector
+procedure TGLCoordinatesAddScaledVectorMethod.Execute(var ExternalObject
+  : TObject);
+var
+  v: TVector;
+begin
+  ValidateExternalObject(ExternalObject, TGLCoordinates);
+  v := GetVectorFromInfo(Info.Vars['translationVector']);
+  TGLCoordinates(ExternalObject).AddScaledVector(Info['factor'], v);
+end;
+
+// TGLCoordinates.Rotate
+procedure TGLCoordinatesRotateMethod.Execute(var ExternalObject: TObject);
+var
+  v: TVector;
+begin
+  ValidateExternalObject(ExternalObject, TGLCoordinates);
+  v := GetVectorFromInfo(Info.Vars['anAxis']);
+  TGLCoordinates(ExternalObject).Rotate(v, Info['anAngle']);
+end;
+
+// TGLCoordinates.Normalize
+procedure TGLCoordinatesNormalizeMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLCoordinates);
+  TGLCoordinates(ExternalObject).Normalize;
+end;
+
+// TGLCoordinates.Invert
+procedure TGLCoordinatesInvertMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLCoordinates);
+  TGLCoordinates(ExternalObject).Invert;
+end;
+
+// TGLCoordinates.Scale
+procedure TGLCoordinatesScaleMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLCoordinates);
+  TGLCoordinates(ExternalObject).Scale(Info['factor']);
+end;
+
+// TGLCoordinates.Equals
+procedure TGLCoordinatesEqualsMethod.Execute(var ExternalObject: TObject);
+var
+  v: TVector;
+begin
+  ValidateExternalObject(ExternalObject, TGLCoordinates);
+  v := GetVectorFromInfo(Info.Vars['aVector']);
+  Info.Result := TGLCoordinates(ExternalObject).Equals(v);
+end;
+
+// TGLCoordinates.SetToZero
+procedure TGLCoordinatesSetToZeroMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLCoordinates);
+  TGLCoordinates(ExternalObject).SetToZero;
+end;
+
+
+// TGLBaseSceneObject internal class methods
+
+// TGLBaseSceneObject.SetVisible
+procedure TGLBaseSceneObjectSetVisibleMethod.Execute(var ExternalObject
+  : TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  TGLBaseSceneObject(ExternalObject).Visible := Info.Vars['Value'].Value;
+end;
+
+// TGLBaseSceneObject.GetVisible
+procedure TGLBaseSceneObjectGetVisibleMethod.Execute(var ExternalObject
+  : TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  Info.Result := TGLBaseSceneObject(ExternalObject).Visible;
+end;
+
+// TGLBaseSceneObject.SetMatrix
+procedure TGLBaseSceneObjectSetMatrixMethod.Execute(var ExternalObject
+  : TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  TGLBaseSceneObject(ExternalObject).Matrix :=
+    GetMatrixFromInfo(Info.Vars['Value']);
+end;
+
+// TGLBaseSceneObject.GetMatrix
+procedure TGLBaseSceneObjectGetMatrixMethod.Execute(var ExternalObject
+  : TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  SetInfoFromMatrix(Info.Vars['Result'],
+    TGLBaseSceneObject(ExternalObject).Matrix);
+end;
+
+// TGLBaseSceneObject.AbsoluteMatrix
+procedure TGLBaseSceneObjectAbsoluteMatrixMethod.Execute(var ExternalObject
+  : TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  SetInfoFromMatrix(Info.Vars['Result'], TGLBaseSceneObject(ExternalObject)
+    .AbsoluteMatrix);
+end;
+
+// TGLBaseSceneObject.InvAbsoluteMatrix
+procedure TGLBaseSceneObjectInvAbsoluteMatrixMethod.Execute(var ExternalObject
+  : TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  SetInfoFromMatrix(Info.Vars['Result'], TGLBaseSceneObject(ExternalObject)
+    .InvAbsoluteMatrix);
+end;
+
+// TGLBaseSceneObject.SetAbsolutePosition
+procedure TGLBaseSceneObjectSetAbsolutePositionMethod.Execute(var ExternalObject
+  : TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  TGLBaseSceneObject(ExternalObject).AbsolutePosition :=
+    GetVectorFromInfo(Info.Vars['Value']);
+end;
+
+// TGLBaseSceneObject.GetAbsolutePosition
+procedure TGLBaseSceneObjectGetAbsolutePositionMethod.Execute(var ExternalObject
+  : TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  SetInfoFromVector(Info.Vars['Result'], TGLBaseSceneObject(ExternalObject)
+    .AbsolutePosition);
+end;
+
+// TGLBaseSceneObject.SetAbsoluteUp
+procedure TGLBaseSceneObjectSetAbsoluteUpMethod.Execute(var ExternalObject
+  : TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  TGLBaseSceneObject(ExternalObject).AbsoluteUp :=
+    GetVectorFromInfo(Info.Vars['Value']);
+end;
+
+// TGLBaseSceneObject.GetAbsoluteUp
+procedure TGLBaseSceneObjectGetAbsoluteUpMethod.Execute(var ExternalObject
+  : TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  SetInfoFromVector(Info.Vars['Result'], TGLBaseSceneObject(ExternalObject)
+    .AbsoluteUp);
+end;
+
+// TGLBaseSceneObject.SetAbsoluteDirection
+procedure TGLBaseSceneObjectSetAbsoluteDirectionMethod.Execute
+  (var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  TGLBaseSceneObject(ExternalObject).AbsoluteDirection :=
+    GetVectorFromInfo(Info.Vars['Value']);
+end;
+
+// TGLBaseSceneObject.GetAbsoluteDirection
+procedure TGLBaseSceneObjectGetAbsoluteDirectionMethod.Execute
+  (var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  SetInfoFromVector(Info.Vars['Result'], TGLBaseSceneObject(ExternalObject)
+    .AbsoluteDirection);
+end;
+
+// TGLBaseSceneObject.Position write access
+procedure TGLBaseSceneObjectSetPositionMethod.Execute(var ExternalObject
+  : TObject);
+var
+  Value: TGLCoordinates;
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  Value := TGLCoordinates(Info.GetExternalObjForVar('Value'));
+  TGLBaseSceneObject(ExternalObject).Position := Value;
+end;
+
+// TGLBaseSceneObject.Position read access
+procedure TGLBaseSceneObjectGetPositionMethod.Execute(var ExternalObject
+  : TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  Info.Result := Info.RegisterExternalObject(TGLBaseSceneObject(ExternalObject)
+    .Position);
+end;
+
+// TGLBaseSceneObject.Direction write access
+procedure TGLBaseSceneObjectSetDirectionMethod.Execute(var ExternalObject
+  : TObject);
+var
+  Value: TGLCoordinates;
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  Value := TGLCoordinates(Info.GetExternalObjForVar('Value'));
+  TGLBaseSceneObject(ExternalObject).Direction := Value;
+end;
+
+// TGLBaseSceneObject.Direction read access
+procedure TGLBaseSceneObjectGetDirectionMethod.Execute(var ExternalObject
+  : TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  Info.Result := Info.RegisterExternalObject(TGLBaseSceneObject(ExternalObject)
+    .Direction);
+end;
+
+// TGLBaseSceneObject.Up write access
+procedure TGLBaseSceneObjectSetUpMethod.Execute(var ExternalObject: TObject);
+var
+  Value: TGLCoordinates;
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  Value := TGLCoordinates(Info.GetExternalObjForVar('Value'));
+  TGLBaseSceneObject(ExternalObject).Up := Value;
+end;
+
+// TGLBaseSceneObject.Up read access
+procedure TGLBaseSceneObjectGetUpMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  Info.Result := Info.RegisterExternalObject
+    (TGLBaseSceneObject(ExternalObject).Up);
+end;
+
+// TGLBaseSceneObject.Scale write access
+procedure TGLBaseSceneObjectSetScaleMethod.Execute(var ExternalObject: TObject);
+var
+  Value: TGLCoordinates;
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  Value := TGLCoordinates(Info.GetExternalObjForVar('Value'));
+  TGLBaseSceneObject(ExternalObject).Scale := Value;
+end;
+
+// TGLBaseSceneObject.Scale read access
+procedure TGLBaseSceneObjectGetScaleMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  Info.Result := Info.RegisterExternalObject
+    (TGLBaseSceneObject(ExternalObject).Scale);
+end;
+
+// TGLBaseSceneObject.PitchAngle write access
+procedure TGLBaseSceneObjectSetPitchAngleMethod.Execute(var ExternalObject
+  : TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  TGLBaseSceneObject(ExternalObject).PitchAngle := Info.Vars['Value'].Value;
+end;
+
+// TGLBaseSceneObject.PitchAngle read access
+procedure TGLBaseSceneObjectGetPitchAngleMethod.Execute(var ExternalObject
+  : TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  Info.Result := TGLBaseSceneObject(ExternalObject).PitchAngle;
+end;
+
+// TGLBaseSceneObject.TurnAngle write access
+procedure TGLBaseSceneObjectSetTurnAngleMethod.Execute(var ExternalObject
+  : TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  TGLBaseSceneObject(ExternalObject).TurnAngle := Info.Vars['Value'].Value;
+end;
+
+// TGLBaseSceneObject.TurnAngle read access
+procedure TGLBaseSceneObjectGetTurnAngleMethod.Execute(var ExternalObject
+  : TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  Info.Result := TGLBaseSceneObject(ExternalObject).TurnAngle;
+end;
+
+// TGLBaseSceneObject.RollAngle write access
+procedure TGLBaseSceneObjectSetRollAngleMethod.Execute(var ExternalObject
+  : TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  TGLBaseSceneObject(ExternalObject).RollAngle := Info.Vars['Value'].Value;
+end;
+
+// TGLBaseSceneObject.RollAngle read access
+procedure TGLBaseSceneObjectGetRollAngleMethod.Execute(var ExternalObject
+  : TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  Info.Result := TGLBaseSceneObject(ExternalObject).RollAngle;
+end;
+
+// TGLBaseSceneObject.Pitch
+procedure TGLBaseSceneObjectPitchMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  TGLBaseSceneObject(ExternalObject).Pitch(Info['angle']);
+end;
+
+// TGLBaseSceneObject.Turn
+procedure TGLBaseSceneObjectTurnMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  TGLBaseSceneObject(ExternalObject).Turn(Info['angle']);
+end;
+
+// TGLBaseSceneObject.Roll
+procedure TGLBaseSceneObjectRollMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  TGLBaseSceneObject(ExternalObject).Roll(Info['angle']);
+end;
+
+// TGLBaseSceneObject.Move
+procedure TGLBaseSceneObjectMoveMethod.Execute(var ExternalObject: TObject);
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  TGLBaseSceneObject(ExternalObject).Move(Info['ADistance']);
+end;
+
+// TGLBaseSceneObject.AddChild
+procedure TGLBaseSceneObjectAddChildMethod.Execute(var ExternalObject: TObject);
+var
+  AChild: TObject;
+begin
+  ValidateExternalObject(ExternalObject, TGLBaseSceneObject);
+  AChild := Info.GetExternalObjForVar('AChild');
+  if not Assigned(AChild) then
+    raise Exception.Create('AChild parameter is unassigned.');
+  if not(AChild is TGLBaseSceneObject) then
+    Exception.Create
+      ('AChild parameter is not inheriting from TGLBaseSceneObject.');
+  TGLBaseSceneObject(ExternalObject).AddChild(TGLBaseSceneObject(AChild));
+end;
+
+// ----------
+// ---------- Global procedures/functions ----------
+// ----------
+procedure Register;
+begin
+  RegisterComponents('GLScene DWS2', [Tdws2GLSceneUnit]);
+end;
+
+// ----------
+// ---------- TdwsGLSceneUnit ----------
+// ----------
+constructor TdwsGLSceneUnit.Create(AOwner: TComponent);
+begin
+  inherited;
+  FUnitName := 'GLScene';
+  with FDependencies do
+  begin
+    Add('Classes');
+    Add('GLVectorGeometry');
+  end;
+end;
+
+procedure TdwsGLSceneUnit.AddClassTGLCoordinates(SymbolTable: TSymbolTable);
+var
+  ClassSym: TClassSymbol;
+begin
+  ClassSym := TClassSymbol(AddClassSymbol(SymbolTable, 'TGLCoordinates',
+    'TPersistent'));
+
+  // Methods
+  if not Assigned(ClassSym.Members.FindLocal('SetX')) then
+    TGLCoordinatesSetXMethod.Create(mkProcedure, [], 0, 'SetX',
+      ['Value', 'Float'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('GetX')) then
+    TGLCoordinatesGetXMethod.Create(mkFunction, [], 0, 'GetX', [], 'Float',
+      ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('SetY')) then
+    TGLCoordinatesSetYMethod.Create(mkProcedure, [], 0, 'SetY',
+      ['Value', 'Float'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('GetY')) then
+    TGLCoordinatesGetYMethod.Create(mkFunction, [], 0, 'GetY', [], 'Float',
+      ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('SetZ')) then
+    TGLCoordinatesSetZMethod.Create(mkProcedure, [], 0, 'SetZ',
+      ['Value', 'Float'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('GetZ')) then
+    TGLCoordinatesGetZMethod.Create(mkFunction, [], 0, 'GetZ', [], 'Float',
+      ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('SetW')) then
+    TGLCoordinatesSetWMethod.Create(mkProcedure, [], 0, 'SetW',
+      ['Value', 'Float'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('GetW')) then
+    TGLCoordinatesGetWMethod.Create(mkFunction, [], 0, 'GetW', [], 'Float',
+      ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('SetVector')) then
+    TGLCoordinatesSetVectorMethod.Create(mkProcedure, [], 0, 'SetVector',
+      ['x', 'Float', 'y', 'Float', 'z', 'Float', 'w', 'Float'], '', ClassSym,
+      SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('SetPoint')) then
+    TGLCoordinatesSetPointMethod.Create(mkProcedure, [], 0, 'SetPoint',
+      ['x', 'Float', 'y', 'Float', 'z', 'Float'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('SetToZero')) then
+    TGLCoordinatesSetToZeroMethod.Create(mkProcedure, [], 0, 'SetToZero', [],
+      '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('SetAsVector')) then
+    TGLCoordinatesSetAsVectorMethod.Create(mkProcedure, [], 0, 'SetAsVector',
+      ['Value', 'TVector'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('GetAsVector')) then
+    TGLCoordinatesGetAsVectorMethod.Create(mkFunction, [], 0, 'GetAsVector', [],
+      'TVector', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('GetAsString')) then
+    TGLCoordinatesGetAsStringMethod.Create(mkFunction, [], 0, 'GetAsString', [],
+      'String', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('Translate')) then
+    TGLCoordinatesTranslateMethod.Create(mkProcedure, [], 0, 'Translate',
+      ['translationVector', 'TVector'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('AddScaledVector')) then
+    TGLCoordinatesAddScaledVectorMethod.Create(mkProcedure, [], 0,
+      'AddScaledVector', ['factor', 'Float', 'translationVector', 'TVector'],
+      '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('Rotate')) then
+    TGLCoordinatesRotateMethod.Create(mkProcedure, [], 0, 'Rotate',
+      ['anAxis', 'TVector', 'anAngle', 'Float'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('Normalize')) then
+    TGLCoordinatesNormalizeMethod.Create(mkProcedure, [], 0, 'Normalize', [],
+      '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('Invert')) then
+    TGLCoordinatesInvertMethod.Create(mkProcedure, [], 0, 'Invert', [], '',
+      ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('Scale')) then
+    TGLCoordinatesScaleMethod.Create(mkProcedure, [], 0, 'Scale',
+      ['factor', 'Float'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('Equals')) then
+    TGLCoordinatesEqualsMethod.Create(mkFunction, [], 0, 'Equals',
+      ['aVector', 'TVector'], 'Boolean', ClassSym, SymbolTable);
+
+  // Properties
+  AddPropertyToClass('X', 'Float', 'GetX', 'SetX', '', False, ClassSym,
+    SymbolTable);
+  AddPropertyToClass('Y', 'Float', 'GetY', 'SetY', '', False, ClassSym,
+    SymbolTable);
+  AddPropertyToClass('Z', 'Float', 'GetZ', 'SetZ', '', False, ClassSym,
+    SymbolTable);
+  AddPropertyToClass('AsVector', 'TVector', 'GetAsVector', 'SetAsVector', '',
+    False, ClassSym, SymbolTable);
+  AddPropertyToClass('AsString', 'String', 'GetAsString', '', '', False,
+    ClassSym, SymbolTable);
+end;
+
+procedure TdwsGLSceneUnit.AddClassTGLBaseSceneObject(SymbolTable: TSymbolTable);
+var
+  ClassSym: TClassSymbol;
+begin
+  ClassSym := TClassSymbol(AddClassSymbol(SymbolTable, 'TGLBaseSceneObject',
+    'TComponent'));
+
+  // Methods
+  if not Assigned(ClassSym.Members.FindLocal('SetVisible')) then
+    TGLBaseSceneObjectSetVisibleMethod.Create(mkProcedure, [], 0, 'SetVisible',
+      ['Value', 'Boolean'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('GetVisible')) then
+    TGLBaseSceneObjectGetVisibleMethod.Create(mkFunction, [], 0, 'GetVisible',
+      [], 'Boolean', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('SetMatrix')) then
+    TGLBaseSceneObjectSetMatrixMethod.Create(mkProcedure, [], 0, 'SetMatrix',
+      ['Value', 'TMatrix'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('GetMatrix')) then
+    TGLBaseSceneObjectGetMatrixMethod.Create(mkFunction, [], 0, 'GetMatrix', [],
+      'TMatrix', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('AbsoluteMatrix')) then
+    TGLBaseSceneObjectAbsoluteMatrixMethod.Create(mkFunction, [], 0,
+      'AbsoluteMatrix', [], 'TMatrix', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('InvAbsoluteMatrix')) then
+    TGLBaseSceneObjectInvAbsoluteMatrixMethod.Create(mkFunction, [], 0,
+      'InvAbsoluteMatrix', [], 'TMatrix', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('SetAbsolutePosition')) then
+    TGLBaseSceneObjectSetAbsolutePositionMethod.Create(mkProcedure, [], 0,
+      'SetAbsolutePosition', ['Value', 'TVector'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('GetAbsolutePosition')) then
+    TGLBaseSceneObjectGetAbsolutePositionMethod.Create(mkFunction, [], 0,
+      'GetAbsolutePosition', [], 'TVector', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('SetAbsoluteUp')) then
+    TGLBaseSceneObjectSetAbsoluteUpMethod.Create(mkProcedure, [], 0,
+      'SetAbsoluteUp', ['Value', 'TVector'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('GetAbsoluteUp')) then
+    TGLBaseSceneObjectGetAbsoluteUpMethod.Create(mkFunction, [], 0,
+      'GetAbsoluteUp', [], 'TVector', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('SetAbsoluteDirection')) then
+    TGLBaseSceneObjectSetAbsoluteDirectionMethod.Create(mkProcedure, [], 0,
+      'SetAbsoluteDirection', ['Value', 'TVector'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('GetAbsoluteDirection')) then
+    TGLBaseSceneObjectGetAbsoluteDirectionMethod.Create(mkFunction, [], 0,
+      'GetAbsoluteDirection', [], 'TVector', ClassSym, SymbolTable);
+
+  if not Assigned(ClassSym.Members.FindLocal('SetPosition')) then
+    TGLBaseSceneObjectSetPositionMethod.Create(mkProcedure, [], 0,
+      'SetPosition', ['Value', 'TGLCoordinates'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('GetPosition')) then
+    TGLBaseSceneObjectGetPositionMethod.Create(mkFunction, [], 0, 'GetPosition',
+      [], 'TGLCoordinates', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('SetDirection')) then
+    TGLBaseSceneObjectSetDirectionMethod.Create(mkProcedure, [], 0,
+      'SetDirection', ['Value', 'TGLCoordinates'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('GetDirection')) then
+    TGLBaseSceneObjectGetDirectionMethod.Create(mkFunction, [], 0,
+      'GetDirection', [], 'TGLCoordinates', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('SetUp')) then
+    TGLBaseSceneObjectSetUpMethod.Create(mkProcedure, [], 0, 'SetUp',
+      ['Value', 'TGLCoordinates'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('GetUp')) then
+    TGLBaseSceneObjectGetUpMethod.Create(mkFunction, [], 0, 'GetUp', [],
+      'TGLCoordinates', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('SetScale')) then
+    TGLBaseSceneObjectSetScaleMethod.Create(mkProcedure, [], 0, 'SetScale',
+      ['Value', 'TGLCoordinates'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('GetScale')) then
+    TGLBaseSceneObjectGetScaleMethod.Create(mkFunction, [], 0, 'GetScale', [],
+      'TGLCoordinates', ClassSym, SymbolTable);
+
+  if not Assigned(ClassSym.Members.FindLocal('SetPitchAngle')) then
+    TGLBaseSceneObjectSetPitchAngleMethod.Create(mkProcedure, [], 0,
+      'SetPitchAngle', ['Value', 'Float'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('GetPitchAngle')) then
+    TGLBaseSceneObjectGetPitchAngleMethod.Create(mkFunction, [], 0,
+      'GetPitchAngle', [], 'Float', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('SetTurnAngle')) then
+    TGLBaseSceneObjectSetTurnAngleMethod.Create(mkProcedure, [], 0,
+      'SetTurnAngle', ['Value', 'Float'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('GetTurnAngle')) then
+    TGLBaseSceneObjectGetTurnAngleMethod.Create(mkFunction, [], 0,
+      'GetTurnAngle', [], 'Float', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('SetRollAngle')) then
+    TGLBaseSceneObjectSetRollAngleMethod.Create(mkProcedure, [], 0,
+      'SetRollAngle', ['Value', 'Float'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('GetRollAngle')) then
+    TGLBaseSceneObjectGetRollAngleMethod.Create(mkFunction, [], 0,
+      'GetRollAngle', [], 'Float', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('Pitch')) then
+    TGLBaseSceneObjectPitchMethod.Create(mkProcedure, [], 0, 'Pitch',
+      ['angle', 'Float'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('Turn')) then
+    TGLBaseSceneObjectTurnMethod.Create(mkProcedure, [], 0, 'Turn',
+      ['angle', 'Float'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('Roll')) then
+    TGLBaseSceneObjectRollMethod.Create(mkProcedure, [], 0, 'Roll',
+      ['angle', 'Float'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('Move')) then
+    TGLBaseSceneObjectMoveMethod.Create(mkProcedure, [], 0, 'Move',
+      ['ADistance', 'Float'], '', ClassSym, SymbolTable);
+  if not Assigned(ClassSym.Members.FindLocal('AddChild')) then
+    TGLBaseSceneObjectAddChildMethod.Create(mkProcedure, [], 0, 'AddChild',
+      ['AChild', 'TGLBaseSceneObject'], '', ClassSym, SymbolTable);
+
+  // Properties
+  AddPropertyToClass('Visible', 'Boolean', 'GetVisible', 'SetVisible', '',
+    False, ClassSym, SymbolTable);
+  AddPropertyToClass('Matrix', 'TMatrix', 'GetMatrix', 'SetMatrix', '', False,
+    ClassSym, SymbolTable);
+  AddPropertyToClass('AbsolutePosition', 'TVector', 'GetAbsolutePosition',
+    'SetAbsolutePosition', '', False, ClassSym, SymbolTable);
+  AddPropertyToClass('AbsoluteUp', 'TVector', 'GetAbsoluteUp', 'SetAbsoluteUp',
+    '', False, ClassSym, SymbolTable);
+  AddPropertyToClass('AbsoluteDirection', 'TVector', 'GetAbsoluteDirection',
+    'SetAbsoluteDirection', '', False, ClassSym, SymbolTable);
+  AddPropertyToClass('Position', 'TGLBaseSceneObject', 'GetPosition',
+    'SetPosition', '', False, ClassSym, SymbolTable);
+  AddPropertyToClass('Direction', 'TGLBaseSceneObject', 'GetDirection',
+    'SetDirection', '', False, ClassSym, SymbolTable);
+  AddPropertyToClass('Up', 'TGLBaseSceneObject', 'GetUp', 'SetUp', '', False,
+    ClassSym, SymbolTable);
+  AddPropertyToClass('Scale', 'TGLBaseSceneObject', 'GetScale', 'SetScale', '',
+    False, ClassSym, SymbolTable);
+  AddPropertyToClass('PitchAngle', 'Float', 'GetPitchAngle', 'SetPitchAngle',
+    '', False, ClassSym, SymbolTable);
+  AddPropertyToClass('TurnAngle', 'Float', 'GetTurnAngle', 'SetTurnAngle', '',
+    False, ClassSym, SymbolTable);
+  AddPropertyToClass('RollAngle', 'Float', 'GetRollAngle', 'SetRollAngle', '',
+    False, ClassSym, SymbolTable);
+end;
+
+procedure TdwsGLSceneUnit.AddUnitSymbols(SymbolTable: TSymbolTable);
+begin
+  // Forward class declaration
+  AddForwardDeclaration('TGLCoordinates', SymbolTable);
+  AddForwardDeclaration('TGLBaseSceneObject', SymbolTable);
+
+  // Class types
+  AddClassTGLCoordinates(SymbolTable);
+  AddClassTGLBaseSceneObject(SymbolTable);
+end;
+
+end.

+ 293 - 292
Source/GLS.DWSScript.pas → Source/GLS.dwsScript.pas

@@ -1,292 +1,293 @@
-//
-// This unit is part of the GLScene Engine, http://glscene.org
-//
-
-unit GLS.DWSScript;
-
-(* DelphiWebScript implementation for the GLScene scripting layer *)
-
-interface
-
-uses
-  System.Classes,
-  System.SysUtils,
-  XCollection,
-  GLScriptBase,
-  DWS.Comp,
-  DWS.Exprs,
-  DWS.Symbols,
-  GLManager;
-
-type
-  (* This class only adds manager registration logic to the TDelphiWebScriptII
-    class to enable the XCollection items (ie. TGLScriptDWS) retain it's
-    assigned compiler from design to run -time. *)
-  TGLDelphiWebScript = class(TDelphiWebScript)
-  public
-    constructor Create(AOnwer: TComponent); override;
-    destructor Destroy; override;
-  end;
-
-  // Implements DelphiWebScript scripting functionality through the abstracted GLScriptBase
-  TGLScriptDWS = class(TGLScriptBase)
-  private
-    FDWSProgram: TProgram;
-    FCompiler: TGLDelphiWebScript;
-    FCompilerName: String;
-  protected
-    procedure SetCompiler(const Value: TGLDelphiWebScriptII);
-    procedure ReadFromFiler(reader: TReader); override;
-    procedure WriteToFiler(writer: TWriter); override;
-    procedure Loaded; override;
-    procedure Notification(AComponent: TComponent;
-      Operation: TOperation); override;
-    function GetState: TGLScriptState; override;
-  public
-    destructor Destroy; override;
-    procedure Assign(Source: TPersistent); override;
-    procedure Compile; override;
-    procedure Start; override;
-    procedure Stop; override;
-    procedure Execute; override;
-    procedure Invalidate; override;
-    function Call(aName: String; aParams: array of Variant): Variant; override;
-    class function FriendlyName: String; override;
-    class function FriendlyDescription: String; override;
-    class function ItemCategory: String; override;
-    property DWS2Program: TProgram read FDWS2Program;
-  published
-    property Compiler: TGLDelphiWebScriptII read FCompiler write SetCompiler;
-  end;
-
-procedure Register;
-
-// --------------------------------------------------
-implementation
-// --------------------------------------------------
-
-// ---------------
-// --------------- Miscellaneous ---------------
-// ---------------
-
-procedure Register;
-begin
-  RegisterClasses([TGLDelphiWebScript, TGLScriptDWS]);
-  RegisterComponents('GLScene DWS', [TGLDelphiWebScript]);
-end;
-
-
-// ----------
-// ---------- TGLDelphiWebScript ----------
-// ----------
-
-constructor TGLDelphiWebScript.Create(AOnwer: TComponent);
-begin
-  inherited;
-  RegisterManager(Self);
-end;
-
-destructor TGLDelphiWebScript.Destroy;
-begin
-  DeregisterManager(Self);
-  inherited;
-end;
-
-
-// ---------------
-// --------------- TGLScriptDWS ---------------
-// ---------------
-
-destructor TGLScriptDWS.Destroy;
-begin
-  Invalidate;
-  inherited;
-end;
-
-procedure TGLScriptDWS.Assign(Source: TPersistent);
-begin
-  inherited;
-  if Source is TGLScriptDWS then
-  begin
-    Compiler := TGLScriptDWS(Source).Compiler;
-  end;
-end;
-
-procedure TGLScriptDWS.ReadFromFiler(reader: TReader);
-var
-  archiveVersion: Integer;
-begin
-  inherited;
-  archiveVersion := reader.ReadInteger;
-  Assert(archiveVersion = 0);
-
-  with reader do
-  begin
-    FCompilerName := ReadString;
-  end;
-end;
-
-procedure TGLScriptDWS.WriteToFiler(writer: TWriter);
-begin
-  inherited;
-  writer.WriteInteger(0); // archiveVersion
-
-  with writer do
-  begin
-    if Assigned(FCompiler) then
-      WriteString(FCompiler.GetNamePath)
-    else
-      WriteString('');
-  end;
-end;
-
-procedure TGLScriptDWS.Loaded;
-var
-  temp: TComponent;
-begin
-  inherited;
-  if FCompilerName <> '' then
-  begin
-    temp := FindManager(TGLDelphiWebScript, FCompilerName);
-    if Assigned(temp) then
-      Compiler := TGLDelphiWebScript(temp);
-    FCompilerName := '';
-  end;
-end;
-
-procedure TGLScriptDWS.Notification(AComponent: TComponent;
-  Operation: TOperation);
-begin
-  if (AComponent = Compiler) and (Operation = opRemove) then
-    Compiler := nil;
-end;
-
-class function TGLScriptDWS.FriendlyName: String;
-begin
-  Result := 'GLScriptDWS';
-end;
-
-class function TGLScriptDWS.FriendlyDescription: String;
-begin
-  Result := 'DelphiWebScript script';
-end;
-
-class function TGLScriptDWS.ItemCategory: String;
-begin
-  Result := '';
-end;
-
-procedure TGLScriptDWS.Compile;
-begin
-  Invalidate;
-  if Assigned(Compiler) then
-    FDWS2Program := Compiler.Compile(Text.Text)
-  else
-    raise Exception.Create('No compiler assigned!');
-end;
-
-procedure TGLScriptDWS.Execute;
-begin
-  if (State = ssUncompiled) then
-    Compile
-  else if (State = ssRunning) then
-    Stop;
-  if (State = ssCompiled) then
-    FDWS2Program.Execute;
-end;
-
-procedure TGLScriptDWS.Invalidate;
-begin
-  if (State <> ssUncompiled) or Assigned(FDWSProgram) then
-  begin
-    Stop;
-    FreeAndNil(FDWSProgram);
-  end;
-end;
-
-procedure TGLScriptDWS.Start;
-begin
-  if (State = ssUncompiled) then
-    Compile;
-  if (State = ssCompiled) then
-    FDWS2Program.BeginProgram(False);
-end;
-
-procedure TGLScriptDWS.Stop;
-begin
-  if (State = ssRunning) then
-    FDWS2Program.EndProgram;
-end;
-
-function TGLScriptDWS.Call(aName: String; aParams: array of Variant): Variant;
-var
-  Symbol: TSymbol;
-  Output: IInfo;
-begin
-  if (State <> ssRunning) then
-    Start;
-  if State = ssRunning then
-  begin
-    Symbol := FDWSProgram.Table.FindSymbol(aName);
-    if Assigned(Symbol) then
-    begin
-      if Symbol is TFuncSymbol then
-      begin
-        Output := FDWSProgram.Info.Func[aName].Call(aParams);
-        if Assigned(Output) then
-          Result := Output.Value;
-      end
-      else
-        raise Exception.Create('Expected TFuncSymbol but found ' +
-          Symbol.ClassName + ' for ' + aName);
-    end
-    else
-      raise Exception.Create('Symbol not found for ' + aName);
-  end;
-end;
-
-procedure TGLScriptDWS.SetCompiler(const Value: TGLDelphiWebScript);
-begin
-  if Value <> FCompiler then
-  begin
-    FCompiler := Value;
-    Invalidate;
-  end;
-end;
-
-function TGLScriptDWS.GetState: TGLScriptState;
-begin
-  Result := ssUncompiled;
-  if Assigned(FDWSProgram) then
-  begin
-    case FDWSProgram.ProgramState of
-      psReadyToRun:
-        Result := ssCompiled;
-      psRunning:
-        Result := ssRunning;
-    else
-      if FDWSProgram.Msgs.HasErrors then
-      begin
-        if FDWSProgram.Msgs.HasCompilerErrors then
-          Result := ssCompileErrors
-        else if FDWSProgram.Msgs.HasExecutionErrors then
-          Result := ssRunningErrors;
-        Errors.Text := FDWSProgram.Msgs.AsInfo;
-      end;
-    end;
-  end;
-end;
-
-// --------------------------------------------------
-initialization
-// --------------------------------------------------
-
-RegisterXCollectionItemClass(TGLScriptDWS);
-
-// --------------------------------------------------
-finalization
-// --------------------------------------------------
-
-UnregisterXCollectionItemClass(TGLScriptDWS);
-
-end.
+//
+// This unit is part of the GLScene Engine, http://glscene.org
+//
+
+unit GLS.dwsScript;
+
+(* DelphiWebScript implementation for the GLScene scripting layer *)
+
+interface
+
+uses
+  System.Classes,
+  System.SysUtils,
+
+  XCollection,
+  GLScriptBase,
+  DWS.Comp,
+  DWS.Exprs,
+  DWS.Symbols,
+  GLManager;
+
+type
+  (* This class only adds manager registration logic to the TDelphiWebScriptII
+    class to enable the XCollection items (ie. TGLScriptDWS) retain it's
+    assigned compiler from design to run -time. *)
+  TGLDelphiWebScript = class(TDelphiWebScript)
+  public
+    constructor Create(AOnwer: TComponent); override;
+    destructor Destroy; override;
+  end;
+
+  // Implements DelphiWebScript scripting functionality through the abstracted GLScriptBase
+  TGLScriptDWS = class(TGLScriptBase)
+  private
+    FDWSProgram: TProgram;
+    FCompiler: TGLDelphiWebScript;
+    FCompilerName: String;
+  protected
+    procedure SetCompiler(const Value: TGLDelphiWebScriptII);
+    procedure ReadFromFiler(reader: TReader); override;
+    procedure WriteToFiler(writer: TWriter); override;
+    procedure Loaded; override;
+    procedure Notification(AComponent: TComponent;
+      Operation: TOperation); override;
+    function GetState: TGLScriptState; override;
+  public
+    destructor Destroy; override;
+    procedure Assign(Source: TPersistent); override;
+    procedure Compile; override;
+    procedure Start; override;
+    procedure Stop; override;
+    procedure Execute; override;
+    procedure Invalidate; override;
+    function Call(aName: String; aParams: array of Variant): Variant; override;
+    class function FriendlyName: String; override;
+    class function FriendlyDescription: String; override;
+    class function ItemCategory: String; override;
+    property DWS2Program: TProgram read FDWS2Program;
+  published
+    property Compiler: TGLDelphiWebScriptII read FCompiler write SetCompiler;
+  end;
+
+procedure Register;
+
+// --------------------------------------------------
+implementation
+// --------------------------------------------------
+
+// ---------------
+// --------------- Miscellaneous ---------------
+// ---------------
+
+procedure Register;
+begin
+  RegisterClasses([TGLDelphiWebScript, TGLScriptDWS]);
+  RegisterComponents('GLScene DWS', [TGLDelphiWebScript]);
+end;
+
+
+// ----------
+// ---------- TGLDelphiWebScript ----------
+// ----------
+
+constructor TGLDelphiWebScript.Create(AOnwer: TComponent);
+begin
+  inherited;
+  RegisterManager(Self);
+end;
+
+destructor TGLDelphiWebScript.Destroy;
+begin
+  DeregisterManager(Self);
+  inherited;
+end;
+
+
+// ---------------
+// --------------- TGLScriptDWS ---------------
+// ---------------
+
+destructor TGLScriptDWS.Destroy;
+begin
+  Invalidate;
+  inherited;
+end;
+
+procedure TGLScriptDWS.Assign(Source: TPersistent);
+begin
+  inherited;
+  if Source is TGLScriptDWS then
+  begin
+    Compiler := TGLScriptDWS(Source).Compiler;
+  end;
+end;
+
+procedure TGLScriptDWS.ReadFromFiler(reader: TReader);
+var
+  archiveVersion: Integer;
+begin
+  inherited;
+  archiveVersion := reader.ReadInteger;
+  Assert(archiveVersion = 0);
+
+  with reader do
+  begin
+    FCompilerName := ReadString;
+  end;
+end;
+
+procedure TGLScriptDWS.WriteToFiler(writer: TWriter);
+begin
+  inherited;
+  writer.WriteInteger(0); // archiveVersion
+
+  with writer do
+  begin
+    if Assigned(FCompiler) then
+      WriteString(FCompiler.GetNamePath)
+    else
+      WriteString('');
+  end;
+end;
+
+procedure TGLScriptDWS.Loaded;
+var
+  temp: TComponent;
+begin
+  inherited;
+  if FCompilerName <> '' then
+  begin
+    temp := FindManager(TGLDelphiWebScript, FCompilerName);
+    if Assigned(temp) then
+      Compiler := TGLDelphiWebScript(temp);
+    FCompilerName := '';
+  end;
+end;
+
+procedure TGLScriptDWS.Notification(AComponent: TComponent;
+  Operation: TOperation);
+begin
+  if (AComponent = Compiler) and (Operation = opRemove) then
+    Compiler := nil;
+end;
+
+class function TGLScriptDWS.FriendlyName: String;
+begin
+  Result := 'GLScriptDWS';
+end;
+
+class function TGLScriptDWS.FriendlyDescription: String;
+begin
+  Result := 'DelphiWebScript script';
+end;
+
+class function TGLScriptDWS.ItemCategory: String;
+begin
+  Result := '';
+end;
+
+procedure TGLScriptDWS.Compile;
+begin
+  Invalidate;
+  if Assigned(Compiler) then
+    FDWS2Program := Compiler.Compile(Text.Text)
+  else
+    raise Exception.Create('No compiler assigned!');
+end;
+
+procedure TGLScriptDWS.Execute;
+begin
+  if (State = ssUncompiled) then
+    Compile
+  else if (State = ssRunning) then
+    Stop;
+  if (State = ssCompiled) then
+    FDWS2Program.Execute;
+end;
+
+procedure TGLScriptDWS.Invalidate;
+begin
+  if (State <> ssUncompiled) or Assigned(FDWSProgram) then
+  begin
+    Stop;
+    FreeAndNil(FDWSProgram);
+  end;
+end;
+
+procedure TGLScriptDWS.Start;
+begin
+  if (State = ssUncompiled) then
+    Compile;
+  if (State = ssCompiled) then
+    FDWS2Program.BeginProgram(False);
+end;
+
+procedure TGLScriptDWS.Stop;
+begin
+  if (State = ssRunning) then
+    FDWS2Program.EndProgram;
+end;
+
+function TGLScriptDWS.Call(aName: String; aParams: array of Variant): Variant;
+var
+  Symbol: TSymbol;
+  Output: IInfo;
+begin
+  if (State <> ssRunning) then
+    Start;
+  if State = ssRunning then
+  begin
+    Symbol := FDWSProgram.Table.FindSymbol(aName);
+    if Assigned(Symbol) then
+    begin
+      if Symbol is TFuncSymbol then
+      begin
+        Output := FDWSProgram.Info.Func[aName].Call(aParams);
+        if Assigned(Output) then
+          Result := Output.Value;
+      end
+      else
+        raise Exception.Create('Expected TFuncSymbol but found ' +
+          Symbol.ClassName + ' for ' + aName);
+    end
+    else
+      raise Exception.Create('Symbol not found for ' + aName);
+  end;
+end;
+
+procedure TGLScriptDWS.SetCompiler(const Value: TGLDelphiWebScript);
+begin
+  if Value <> FCompiler then
+  begin
+    FCompiler := Value;
+    Invalidate;
+  end;
+end;
+
+function TGLScriptDWS.GetState: TGLScriptState;
+begin
+  Result := ssUncompiled;
+  if Assigned(FDWSProgram) then
+  begin
+    case FDWSProgram.ProgramState of
+      psReadyToRun:
+        Result := ssCompiled;
+      psRunning:
+        Result := ssRunning;
+    else
+      if FDWSProgram.Msgs.HasErrors then
+      begin
+        if FDWSProgram.Msgs.HasCompilerErrors then
+          Result := ssCompileErrors
+        else if FDWSProgram.Msgs.HasExecutionErrors then
+          Result := ssRunningErrors;
+        Errors.Text := FDWSProgram.Msgs.AsInfo;
+      end;
+    end;
+  end;
+end;
+
+// --------------------------------------------------
+initialization
+// --------------------------------------------------
+
+RegisterXCollectionItemClass(TGLScriptDWS);
+
+// --------------------------------------------------
+finalization
+// --------------------------------------------------
+
+UnregisterXCollectionItemClass(TGLScriptDWS);
+
+end.

+ 481 - 481
Source/DWS.VectorGeometry.pas → Source/GLS.dwsVectorGeometry.pas

@@ -1,481 +1,481 @@
-//
-// This unit is part of the GLScene Engine, http://glscene.org
-//
-
-unit DWS.VectorGeometry;
-
-(* DelphiWebScript symbol creation for GLVectorGeometry types and functions *)
-
-interface
-
-uses
-  System.Classes,
-  DWS.Exprs,
-  DWS.Symbols,
-  DWS.Comp,
-  DWS.Functions,
-  GLVectorGeometry;
-
-type
-  TdwsVectorGeometryUnit = class(TdwsUnitComponent)
-  protected
-    procedure AddUnitSymbols(SymbolTable: TSymbolTable); override;
-  public
-    constructor Create(AOwner: TComponent); override;
-  end;
-
-procedure Register;
-
-// =========================================================
-implementation
-// =========================================================
-
-type
-  TVectorMakeFunction = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TSetVectorFunction = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TVectorAddFunction = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TVectorSubtractFunction = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TVectorScaleFunction = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TCombineVectorFunction = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TVectorCombineFunction = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TVectorCombine3Function = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TVectorDotProductFunction = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TVectorCrossProductFunction = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TVectorNormalizeFunction = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TVectorTransformFunction = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TInvertMatrixFunction = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TTransposeMatrixFunction = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TMatrixMultiplyFunction = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TCreateScaleMatrixFunction = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TCreateTranslationMatrixFunction = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TCreateScaleAndTranslationMatrixFunction = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TCreateRotationMatrixXFunction = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TCreateRotationMatrixYFunction = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TCreateRotationMatrixZFunction = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-  TCreateRotationMatrixFunction = class(TInternalFunction)
-  public
-    procedure Execute; override;
-  end;
-
-procedure Register;
-begin
-  RegisterComponents('GLScene DWS', [TdwsVectorGeometryUnit]);
-end;
-
-function GetVectorFromInfo(Info: IInfo): TVector;
-begin
-  Result := VectorMake(Info.Element([0]).Value, Info.Element([1]).Value,
-    Info.Element([2]).Value, Info.Element([3]).Value);
-end;
-
-procedure SetInfoFromVector(Info: IInfo; vec: TVector);
-var
-  i: Integer;
-begin
-  for i := 0 to 3 do
-    Info.Element([i]).Value := vec[i];
-end;
-
-function GetMatrixFromInfo(Info: IInfo): TMatrix;
-var
-  i: Integer;
-begin
-  for i := 0 to 3 do
-    Result[i] := VectorMake(Info.Element([i]).Element([0]).Value,
-      Info.Element([i]).Element([1]).Value, Info.Element([i]).Element([2])
-      .Value, Info.Element([i]).Element([3]).Value);
-end;
-
-procedure SetInfoFromMatrix(Info: IInfo; mat: TMatrix);
-var
-  i, j: Integer;
-begin
-  for i := 0 to 3 do
-    for j := 0 to 3 do
-      Info.Element([i]).Element([j]).Value := mat[i][j];
-end;
-
-procedure TdwsVectorGeometryUnit.AddUnitSymbols(SymbolTable: TSymbolTable);
-var
-  FloatSymbol: TSymbol;
-begin
-  FloatSymbol := SymbolTable.FindSymbol('Float');
-
-  // Array types
-  SymbolTable.AddSymbol(TStaticArraySymbol.Create('TVector',
-    FloatSymbol, 0, 3));
-  SymbolTable.AddSymbol(TStaticArraySymbol.Create('TMatrix',
-    SymbolTable.FindSymbol('TVector'), 0, 3));
-
-  // Vector functions
-  TVectorMakeFunction.Create(SymbolTable, 'VectorMake',
-    ['x', 'Float', 'y', 'Float', 'z', 'Float', 'w', 'Float'], 'TVector');
-  TSetVectorFunction.Create(SymbolTable, 'SetVector',
-    ['@v', 'TVector', 'x', 'Float', 'y', 'Float', 'z', 'Float', 'w',
-    'Float'], '');
-  TVectorAddFunction.Create(SymbolTable, 'VectorAdd',
-    ['v1', 'TVector', 'v2', 'TVector'], 'TVector');
-  TVectorSubtractFunction.Create(SymbolTable, 'VectorSubtract',
-    ['v1', 'TVector', 'v2', 'TVector'], 'TVector');
-  TVectorScaleFunction.Create(SymbolTable, 'VectorScale',
-    ['v', 'TVector', 'f', 'Float'], 'TVector');
-  TCombineVectorFunction.Create(SymbolTable, 'CombineVector',
-    ['@vr', 'TVector', 'v', 'TVector', '@f', 'Float'], '');
-  TVectorCombineFunction.Create(SymbolTable, 'VectorCombine',
-    ['v1', 'TVector', 'v2', 'TVector', 'f1', 'Float', 'f2', 'Float'],
-    'TVector');
-  TVectorCombine3Function.Create(SymbolTable, 'VectorCombine3',
-    ['v1', 'TVector', 'v2', 'TVector', 'v3', 'TVector', 'f1', 'Float', 'f2',
-    'Float', 'f3', 'Float'], 'TVector');
-  TVectorDotProductFunction.Create(SymbolTable, 'VectorDotProduct',
-    ['v1', 'TVector', 'v2', 'TVector'], 'Float');
-  TVectorCrossProductFunction.Create(SymbolTable, 'VectorCrossProduct',
-    ['v1', 'TVector', 'v2', 'TVector'], 'TVector');
-  TVectorNormalizeFunction.Create(SymbolTable, 'VectorNormalize',
-    ['v', 'TVector'], 'TVector');
-  TVectorTransformFunction.Create(SymbolTable, 'VectorTransform',
-    ['v', 'TVector', 'm', 'TMatrix'], 'TVector');
-
-  // Matrix function
-  TInvertMatrixFunction.Create(SymbolTable, 'InvertMatrix',
-    ['@mat', 'TMatrix'], '');
-  TTransposeMatrixFunction.Create(SymbolTable, 'TransposeMatrix',
-    ['@mat', 'TMatrix'], '');
-  TMatrixMultiplyFunction.Create(SymbolTable, 'MatrixMultiply',
-    ['m1', 'TMatrix', 'm2', 'TMatrix'], 'TMatrix');
-  TCreateScaleMatrixFunction.Create(SymbolTable, 'CreateScaleMatrix',
-    ['v', 'TVector'], 'TMatrix');
-  TCreateTranslationMatrixFunction.Create(SymbolTable,
-    'CreateTranslationMatrix', ['v', 'TVector'], 'TMatrix');
-  TCreateScaleAndTranslationMatrixFunction.Create(SymbolTable,
-    'CreateScaleAndTranslationMatrix', ['scale', 'TVector', 'offset',
-    'TVector'], 'TMatrix');
-  TCreateRotationMatrixXFunction.Create(SymbolTable, 'CreateRotationMatrixX',
-    ['angle', 'Float'], 'TMatrix');
-  TCreateRotationMatrixYFunction.Create(SymbolTable, 'CreateRotationMatrixY',
-    ['angle', 'Float'], 'TMatrix');
-  TCreateRotationMatrixZFunction.Create(SymbolTable, 'CreateRotationMatrixZ',
-    ['angle', 'Float'], 'TMatrix');
-  TCreateRotationMatrixFunction.Create(SymbolTable, 'CreateRotationMatrix',
-    ['anAxis', 'TVector', 'angle', 'Float'], 'TMatrix');
-end;
-
-constructor TdwsVectorGeometryUnit.Create(AOwner: TComponent);
-begin
-  inherited;
-  FUnitName := 'GLVectorGeometry';
-end;
-
-procedure TVectorMakeFunction.Execute;
-begin
-  Info.Vars['Result'].Element([0]).Value := Info['x'];
-  Info.Vars['Result'].Element([1]).Value := Info['y'];
-  Info.Vars['Result'].Element([2]).Value := Info['z'];
-  Info.Vars['Result'].Element([3]).Value := Info['w'];
-end;
-
-procedure TSetVectorFunction.Execute;
-begin
-  Info.Vars['v'].Element([0]).Value := Info['x'];
-  Info.Vars['v'].Element([1]).Value := Info['y'];
-  Info.Vars['v'].Element([2]).Value := Info['z'];
-  Info.Vars['v'].Element([3]).Value := Info['w'];
-end;
-
-procedure TVectorAddFunction.Execute;
-var
-  v1, v2, vr: TVector;
-begin
-  v1 := GetVectorFromInfo(Info.Vars['v1']);
-  v2 := GetVectorFromInfo(Info.Vars['v2']);
-  VectorAdd(v1, v2, vr);
-  SetInfoFromVector(Info.Vars['Result'], vr);
-end;
-
-procedure TVectorSubtractFunction.Execute;
-var
-  v1, v2, vr: TVector;
-begin
-  v1 := GetVectorFromInfo(Info.Vars['v1']);
-  v2 := GetVectorFromInfo(Info.Vars['v2']);
-  VectorSubtract(v1, v2, vr);
-  SetInfoFromVector(Info.Vars['Result'], vr);
-end;
-
-procedure TVectorScaleFunction.Execute;
-var
-  v, vr: TVector;
-  f: Single;
-begin
-  v := GetVectorFromInfo(Info.Vars['v']);
-  f := Info['f'];
-  VectorScale(v, f, vr);
-  SetInfoFromVector(Info.Vars['Result'], vr);
-end;
-
-procedure TCombineVectorFunction.Execute;
-var
-  vr, v: TVector;
-  f: Single;
-begin
-  vr := GetVectorFromInfo(Info.Vars['vr']);
-  v := GetVectorFromInfo(Info.Vars['v']);
-  f := Info['f'];
-  CombineVector(vr, v, f);
-  SetInfoFromVector(Info.Vars['Result'], vr);
-  Info.Vars['f'].Value := f;
-end;
-
-procedure TVectorCombineFunction.Execute;
-var
-  v1, v2, vr: TVector;
-  f1, f2: Single;
-begin
-  v1 := GetVectorFromInfo(Info.Vars['v1']);
-  v2 := GetVectorFromInfo(Info.Vars['v2']);
-  f1 := Info['f1'];
-  f2 := Info['f2'];
-  VectorCombine(v1, v2, f1, f2, vr);
-  SetInfoFromVector(Info.Vars['Result'], vr);
-end;
-
-procedure TVectorCombine3Function.Execute;
-var
-  v1, v2, v3, vr: TVector;
-  f1, f2, f3: Single;
-begin
-  v1 := GetVectorFromInfo(Info.Vars['v1']);
-  v2 := GetVectorFromInfo(Info.Vars['v2']);
-  v3 := GetVectorFromInfo(Info.Vars['v3']);
-  f1 := Info['f1'];
-  f2 := Info['f2'];
-  f3 := Info['f3'];
-  VectorCombine3(v1, v2, v3, f1, f2, f3, vr);
-  SetInfoFromVector(Info.Vars['Result'], vr);
-end;
-
-procedure TVectorDotProductFunction.Execute;
-var
-  v1, v2: TVector;
-begin
-  v1 := GetVectorFromInfo(Info.Vars['v1']);
-  v2 := GetVectorFromInfo(Info.Vars['v2']);
-  Info.Result := VectorDotProduct(v1, v2);
-end;
-
-procedure TVectorCrossProductFunction.Execute;
-var
-  v1, v2, vr: TVector;
-begin
-  v1 := GetVectorFromInfo(Info.Vars['v1']);
-  v2 := GetVectorFromInfo(Info.Vars['v2']);
-  VectorCrossProduct(v1, v2, vr);
-  SetInfoFromVector(Info.Vars['Result'], vr);
-end;
-
-procedure TVectorNormalizeFunction.Execute;
-var
-  v, vr: TVector;
-begin
-  v := GetVectorFromInfo(Info.Vars['v']);
-  vr := VectorNormalize(v);
-  SetInfoFromVector(Info.Vars['Result'], vr);
-end;
-
-procedure TVectorTransformFunction.Execute;
-var
-  v, vr: TVector;
-  mat: TMatrix;
-begin
-  v := GetVectorFromInfo(Info.Vars['v']);
-  mat := GetMatrixFromInfo(Info.Vars['mat']);
-  vr := VectorTransform(v, mat);
-  SetInfoFromVector(Info.Vars['Result'], vr);
-end;
-
-procedure TInvertMatrixFunction.Execute;
-var
-  mat: TMatrix;
-begin
-  mat := GetMatrixFromInfo(Info.Vars['mat']);
-  InvertMatrix(mat);
-  SetInfoFromMatrix(Info.Vars['Result'], mat);
-end;
-
-procedure TTransposeMatrixFunction.Execute;
-var
-  mat: TMatrix;
-begin
-  mat := GetMatrixFromInfo(Info.Vars['mat']);
-  TransposeMatrix(mat);
-  SetInfoFromMatrix(Info.Vars['Result'], mat);
-end;
-
-procedure TMatrixMultiplyFunction.Execute;
-var
-  m1, m2, mr: TMatrix;
-begin
-  m1 := GetMatrixFromInfo(Info.Vars['m1']);
-  m2 := GetMatrixFromInfo(Info.Vars['m2']);
-  MatrixMultiply(m1, m2, mr);
-  SetInfoFromMatrix(Info.Vars['Result'], mr);
-end;
-
-procedure TCreateScaleMatrixFunction.Execute;
-var
-  v: TVector;
-  mr: TMatrix;
-begin
-  v := GetVectorFromInfo(Info.Vars['v']);
-  mr := CreateScaleMatrix(v);
-  SetInfoFromMatrix(Info.Vars['Result'], mr);
-end;
-
-procedure TCreateTranslationMatrixFunction.Execute;
-var
-  v: TVector;
-  mr: TMatrix;
-begin
-  v := GetVectorFromInfo(Info.Vars['v']);
-  mr := CreateTranslationMatrix(v);
-  SetInfoFromMatrix(Info.Vars['Result'], mr);
-end;
-
-procedure TCreateScaleAndTranslationMatrixFunction.Execute;
-var
-  scale, offset: TVector;
-  mr: TMatrix;
-begin
-  scale := GetVectorFromInfo(Info.Vars['scale']);
-  offset := GetVectorFromInfo(Info.Vars['offset']);
-  mr := CreateScaleAndTranslationMatrix(scale, offset);
-  SetInfoFromMatrix(Info.Vars['Result'], mr);
-end;
-
-procedure TCreateRotationMatrixXFunction.Execute;
-var
-  angle: Single;
-  mr: TMatrix;
-begin
-  angle := Info['angle'];
-  mr := CreateRotationMatrixX(angle);
-  SetInfoFromMatrix(Info.Vars['Result'], mr);
-end;
-
-procedure TCreateRotationMatrixYFunction.Execute;
-var
-  angle: Single;
-  mr: TMatrix;
-begin
-  angle := Info['angle'];
-  mr := CreateRotationMatrixY(angle);
-  SetInfoFromMatrix(Info.Vars['Result'], mr);
-end;
-
-procedure TCreateRotationMatrixZFunction.Execute;
-var
-  angle: Single;
-  mr: TMatrix;
-begin
-  angle := Info['angle'];
-  mr := CreateRotationMatrixZ(angle);
-  SetInfoFromMatrix(Info.Vars['Result'], mr);
-end;
-
-procedure TCreateRotationMatrixFunction.Execute;
-var
-  angle: Single;
-  anAxis: TVector;
-  mr: TMatrix;
-begin
-  anAxis := GetVectorFromInfo(Info.Vars['anAxis']);
-  angle := Info['angle'];
-  mr := CreateRotationMatrix(anAxis, angle);
-  SetInfoFromMatrix(Info.Vars['Result'], mr);
-end;
-
-end.
+//
+// This unit is part of the GLScene Engine, http://glscene.org
+//
+
+unit GLS.dwsVectorGeometry;
+
+(* DelphiWebScript symbol creation for GLVectorGeometry types and functions *)
+
+interface
+
+uses
+  System.Classes,
+  DWS.Exprs,
+  DWS.Symbols,
+  DWS.Comp,
+  DWS.Functions,
+  GLVectorGeometry;
+
+type
+  TdwsVectorGeometryUnit = class(TdwsUnitComponent)
+  protected
+    procedure AddUnitSymbols(SymbolTable: TSymbolTable); override;
+  public
+    constructor Create(AOwner: TComponent); override;
+  end;
+
+procedure Register;
+
+// =========================================================
+implementation
+// =========================================================
+
+type
+  TVectorMakeFunction = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TSetVectorFunction = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TVectorAddFunction = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TVectorSubtractFunction = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TVectorScaleFunction = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TCombineVectorFunction = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TVectorCombineFunction = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TVectorCombine3Function = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TVectorDotProductFunction = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TVectorCrossProductFunction = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TVectorNormalizeFunction = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TVectorTransformFunction = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TInvertMatrixFunction = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TTransposeMatrixFunction = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TMatrixMultiplyFunction = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TCreateScaleMatrixFunction = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TCreateTranslationMatrixFunction = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TCreateScaleAndTranslationMatrixFunction = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TCreateRotationMatrixXFunction = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TCreateRotationMatrixYFunction = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TCreateRotationMatrixZFunction = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+  TCreateRotationMatrixFunction = class(TInternalFunction)
+  public
+    procedure Execute; override;
+  end;
+
+procedure Register;
+begin
+  RegisterComponents('GLScene DWS', [TdwsVectorGeometryUnit]);
+end;
+
+function GetVectorFromInfo(Info: IInfo): TVector;
+begin
+  Result := VectorMake(Info.Element([0]).Value, Info.Element([1]).Value,
+    Info.Element([2]).Value, Info.Element([3]).Value);
+end;
+
+procedure SetInfoFromVector(Info: IInfo; vec: TVector);
+var
+  i: Integer;
+begin
+  for i := 0 to 3 do
+    Info.Element([i]).Value := vec[i];
+end;
+
+function GetMatrixFromInfo(Info: IInfo): TMatrix;
+var
+  i: Integer;
+begin
+  for i := 0 to 3 do
+    Result[i] := VectorMake(Info.Element([i]).Element([0]).Value,
+      Info.Element([i]).Element([1]).Value, Info.Element([i]).Element([2])
+      .Value, Info.Element([i]).Element([3]).Value);
+end;
+
+procedure SetInfoFromMatrix(Info: IInfo; mat: TMatrix);
+var
+  i, j: Integer;
+begin
+  for i := 0 to 3 do
+    for j := 0 to 3 do
+      Info.Element([i]).Element([j]).Value := mat[i][j];
+end;
+
+procedure TdwsVectorGeometryUnit.AddUnitSymbols(SymbolTable: TSymbolTable);
+var
+  FloatSymbol: TSymbol;
+begin
+  FloatSymbol := SymbolTable.FindSymbol('Float');
+
+  // Array types
+  SymbolTable.AddSymbol(TStaticArraySymbol.Create('TVector',
+    FloatSymbol, 0, 3));
+  SymbolTable.AddSymbol(TStaticArraySymbol.Create('TMatrix',
+    SymbolTable.FindSymbol('TVector'), 0, 3));
+
+  // Vector functions
+  TVectorMakeFunction.Create(SymbolTable, 'VectorMake',
+    ['x', 'Float', 'y', 'Float', 'z', 'Float', 'w', 'Float'], 'TVector');
+  TSetVectorFunction.Create(SymbolTable, 'SetVector',
+    ['@v', 'TVector', 'x', 'Float', 'y', 'Float', 'z', 'Float', 'w',
+    'Float'], '');
+  TVectorAddFunction.Create(SymbolTable, 'VectorAdd',
+    ['v1', 'TVector', 'v2', 'TVector'], 'TVector');
+  TVectorSubtractFunction.Create(SymbolTable, 'VectorSubtract',
+    ['v1', 'TVector', 'v2', 'TVector'], 'TVector');
+  TVectorScaleFunction.Create(SymbolTable, 'VectorScale',
+    ['v', 'TVector', 'f', 'Float'], 'TVector');
+  TCombineVectorFunction.Create(SymbolTable, 'CombineVector',
+    ['@vr', 'TVector', 'v', 'TVector', '@f', 'Float'], '');
+  TVectorCombineFunction.Create(SymbolTable, 'VectorCombine',
+    ['v1', 'TVector', 'v2', 'TVector', 'f1', 'Float', 'f2', 'Float'],
+    'TVector');
+  TVectorCombine3Function.Create(SymbolTable, 'VectorCombine3',
+    ['v1', 'TVector', 'v2', 'TVector', 'v3', 'TVector', 'f1', 'Float', 'f2',
+    'Float', 'f3', 'Float'], 'TVector');
+  TVectorDotProductFunction.Create(SymbolTable, 'VectorDotProduct',
+    ['v1', 'TVector', 'v2', 'TVector'], 'Float');
+  TVectorCrossProductFunction.Create(SymbolTable, 'VectorCrossProduct',
+    ['v1', 'TVector', 'v2', 'TVector'], 'TVector');
+  TVectorNormalizeFunction.Create(SymbolTable, 'VectorNormalize',
+    ['v', 'TVector'], 'TVector');
+  TVectorTransformFunction.Create(SymbolTable, 'VectorTransform',
+    ['v', 'TVector', 'm', 'TMatrix'], 'TVector');
+
+  // Matrix function
+  TInvertMatrixFunction.Create(SymbolTable, 'InvertMatrix',
+    ['@mat', 'TMatrix'], '');
+  TTransposeMatrixFunction.Create(SymbolTable, 'TransposeMatrix',
+    ['@mat', 'TMatrix'], '');
+  TMatrixMultiplyFunction.Create(SymbolTable, 'MatrixMultiply',
+    ['m1', 'TMatrix', 'm2', 'TMatrix'], 'TMatrix');
+  TCreateScaleMatrixFunction.Create(SymbolTable, 'CreateScaleMatrix',
+    ['v', 'TVector'], 'TMatrix');
+  TCreateTranslationMatrixFunction.Create(SymbolTable,
+    'CreateTranslationMatrix', ['v', 'TVector'], 'TMatrix');
+  TCreateScaleAndTranslationMatrixFunction.Create(SymbolTable,
+    'CreateScaleAndTranslationMatrix', ['scale', 'TVector', 'offset',
+    'TVector'], 'TMatrix');
+  TCreateRotationMatrixXFunction.Create(SymbolTable, 'CreateRotationMatrixX',
+    ['angle', 'Float'], 'TMatrix');
+  TCreateRotationMatrixYFunction.Create(SymbolTable, 'CreateRotationMatrixY',
+    ['angle', 'Float'], 'TMatrix');
+  TCreateRotationMatrixZFunction.Create(SymbolTable, 'CreateRotationMatrixZ',
+    ['angle', 'Float'], 'TMatrix');
+  TCreateRotationMatrixFunction.Create(SymbolTable, 'CreateRotationMatrix',
+    ['anAxis', 'TVector', 'angle', 'Float'], 'TMatrix');
+end;
+
+constructor TdwsVectorGeometryUnit.Create(AOwner: TComponent);
+begin
+  inherited;
+  FUnitName := 'GLVectorGeometry';
+end;
+
+procedure TVectorMakeFunction.Execute;
+begin
+  Info.Vars['Result'].Element([0]).Value := Info['x'];
+  Info.Vars['Result'].Element([1]).Value := Info['y'];
+  Info.Vars['Result'].Element([2]).Value := Info['z'];
+  Info.Vars['Result'].Element([3]).Value := Info['w'];
+end;
+
+procedure TSetVectorFunction.Execute;
+begin
+  Info.Vars['v'].Element([0]).Value := Info['x'];
+  Info.Vars['v'].Element([1]).Value := Info['y'];
+  Info.Vars['v'].Element([2]).Value := Info['z'];
+  Info.Vars['v'].Element([3]).Value := Info['w'];
+end;
+
+procedure TVectorAddFunction.Execute;
+var
+  v1, v2, vr: TVector;
+begin
+  v1 := GetVectorFromInfo(Info.Vars['v1']);
+  v2 := GetVectorFromInfo(Info.Vars['v2']);
+  VectorAdd(v1, v2, vr);
+  SetInfoFromVector(Info.Vars['Result'], vr);
+end;
+
+procedure TVectorSubtractFunction.Execute;
+var
+  v1, v2, vr: TVector;
+begin
+  v1 := GetVectorFromInfo(Info.Vars['v1']);
+  v2 := GetVectorFromInfo(Info.Vars['v2']);
+  VectorSubtract(v1, v2, vr);
+  SetInfoFromVector(Info.Vars['Result'], vr);
+end;
+
+procedure TVectorScaleFunction.Execute;
+var
+  v, vr: TVector;
+  f: Single;
+begin
+  v := GetVectorFromInfo(Info.Vars['v']);
+  f := Info['f'];
+  VectorScale(v, f, vr);
+  SetInfoFromVector(Info.Vars['Result'], vr);
+end;
+
+procedure TCombineVectorFunction.Execute;
+var
+  vr, v: TVector;
+  f: Single;
+begin
+  vr := GetVectorFromInfo(Info.Vars['vr']);
+  v := GetVectorFromInfo(Info.Vars['v']);
+  f := Info['f'];
+  CombineVector(vr, v, f);
+  SetInfoFromVector(Info.Vars['Result'], vr);
+  Info.Vars['f'].Value := f;
+end;
+
+procedure TVectorCombineFunction.Execute;
+var
+  v1, v2, vr: TVector;
+  f1, f2: Single;
+begin
+  v1 := GetVectorFromInfo(Info.Vars['v1']);
+  v2 := GetVectorFromInfo(Info.Vars['v2']);
+  f1 := Info['f1'];
+  f2 := Info['f2'];
+  VectorCombine(v1, v2, f1, f2, vr);
+  SetInfoFromVector(Info.Vars['Result'], vr);
+end;
+
+procedure TVectorCombine3Function.Execute;
+var
+  v1, v2, v3, vr: TVector;
+  f1, f2, f3: Single;
+begin
+  v1 := GetVectorFromInfo(Info.Vars['v1']);
+  v2 := GetVectorFromInfo(Info.Vars['v2']);
+  v3 := GetVectorFromInfo(Info.Vars['v3']);
+  f1 := Info['f1'];
+  f2 := Info['f2'];
+  f3 := Info['f3'];
+  VectorCombine3(v1, v2, v3, f1, f2, f3, vr);
+  SetInfoFromVector(Info.Vars['Result'], vr);
+end;
+
+procedure TVectorDotProductFunction.Execute;
+var
+  v1, v2: TVector;
+begin
+  v1 := GetVectorFromInfo(Info.Vars['v1']);
+  v2 := GetVectorFromInfo(Info.Vars['v2']);
+  Info.Result := VectorDotProduct(v1, v2);
+end;
+
+procedure TVectorCrossProductFunction.Execute;
+var
+  v1, v2, vr: TVector;
+begin
+  v1 := GetVectorFromInfo(Info.Vars['v1']);
+  v2 := GetVectorFromInfo(Info.Vars['v2']);
+  VectorCrossProduct(v1, v2, vr);
+  SetInfoFromVector(Info.Vars['Result'], vr);
+end;
+
+procedure TVectorNormalizeFunction.Execute;
+var
+  v, vr: TVector;
+begin
+  v := GetVectorFromInfo(Info.Vars['v']);
+  vr := VectorNormalize(v);
+  SetInfoFromVector(Info.Vars['Result'], vr);
+end;
+
+procedure TVectorTransformFunction.Execute;
+var
+  v, vr: TVector;
+  mat: TMatrix;
+begin
+  v := GetVectorFromInfo(Info.Vars['v']);
+  mat := GetMatrixFromInfo(Info.Vars['mat']);
+  vr := VectorTransform(v, mat);
+  SetInfoFromVector(Info.Vars['Result'], vr);
+end;
+
+procedure TInvertMatrixFunction.Execute;
+var
+  mat: TMatrix;
+begin
+  mat := GetMatrixFromInfo(Info.Vars['mat']);
+  InvertMatrix(mat);
+  SetInfoFromMatrix(Info.Vars['Result'], mat);
+end;
+
+procedure TTransposeMatrixFunction.Execute;
+var
+  mat: TMatrix;
+begin
+  mat := GetMatrixFromInfo(Info.Vars['mat']);
+  TransposeMatrix(mat);
+  SetInfoFromMatrix(Info.Vars['Result'], mat);
+end;
+
+procedure TMatrixMultiplyFunction.Execute;
+var
+  m1, m2, mr: TMatrix;
+begin
+  m1 := GetMatrixFromInfo(Info.Vars['m1']);
+  m2 := GetMatrixFromInfo(Info.Vars['m2']);
+  MatrixMultiply(m1, m2, mr);
+  SetInfoFromMatrix(Info.Vars['Result'], mr);
+end;
+
+procedure TCreateScaleMatrixFunction.Execute;
+var
+  v: TVector;
+  mr: TMatrix;
+begin
+  v := GetVectorFromInfo(Info.Vars['v']);
+  mr := CreateScaleMatrix(v);
+  SetInfoFromMatrix(Info.Vars['Result'], mr);
+end;
+
+procedure TCreateTranslationMatrixFunction.Execute;
+var
+  v: TVector;
+  mr: TMatrix;
+begin
+  v := GetVectorFromInfo(Info.Vars['v']);
+  mr := CreateTranslationMatrix(v);
+  SetInfoFromMatrix(Info.Vars['Result'], mr);
+end;
+
+procedure TCreateScaleAndTranslationMatrixFunction.Execute;
+var
+  scale, offset: TVector;
+  mr: TMatrix;
+begin
+  scale := GetVectorFromInfo(Info.Vars['scale']);
+  offset := GetVectorFromInfo(Info.Vars['offset']);
+  mr := CreateScaleAndTranslationMatrix(scale, offset);
+  SetInfoFromMatrix(Info.Vars['Result'], mr);
+end;
+
+procedure TCreateRotationMatrixXFunction.Execute;
+var
+  angle: Single;
+  mr: TMatrix;
+begin
+  angle := Info['angle'];
+  mr := CreateRotationMatrixX(angle);
+  SetInfoFromMatrix(Info.Vars['Result'], mr);
+end;
+
+procedure TCreateRotationMatrixYFunction.Execute;
+var
+  angle: Single;
+  mr: TMatrix;
+begin
+  angle := Info['angle'];
+  mr := CreateRotationMatrixY(angle);
+  SetInfoFromMatrix(Info.Vars['Result'], mr);
+end;
+
+procedure TCreateRotationMatrixZFunction.Execute;
+var
+  angle: Single;
+  mr: TMatrix;
+begin
+  angle := Info['angle'];
+  mr := CreateRotationMatrixZ(angle);
+  SetInfoFromMatrix(Info.Vars['Result'], mr);
+end;
+
+procedure TCreateRotationMatrixFunction.Execute;
+var
+  angle: Single;
+  anAxis: TVector;
+  mr: TMatrix;
+begin
+  anAxis := GetVectorFromInfo(Info.Vars['anAxis']);
+  angle := Info['angle'];
+  mr := CreateRotationMatrix(anAxis, angle);
+  SetInfoFromMatrix(Info.Vars['Result'], mr);
+end;
+
+end.