diff --git a/Source/Bind/CSharpSpecWriter.cs b/Source/Bind/CSharpSpecWriter.cs index 702cd860..96addfa6 100644 --- a/Source/Bind/CSharpSpecWriter.cs +++ b/Source/Bind/CSharpSpecWriter.cs @@ -45,7 +45,12 @@ namespace Bind #region WriteBindings - public void WriteBindings(DelegateCollection delegates, FunctionCollection wrappers, EnumCollection enums) + public void WriteBindings(IBind generator) + { + WriteBindings(generator.Delegates, generator.Wrappers, generator.Enums); + } + + void WriteBindings(DelegateCollection delegates, FunctionCollection wrappers, EnumCollection enums) { Console.WriteLine("Writing bindings to {0}", Settings.OutputPath); if (!Directory.Exists(Settings.OutputPath)) diff --git a/Source/Bind/CppSpecWriter.cs b/Source/Bind/CppSpecWriter.cs new file mode 100644 index 00000000..f99323a8 --- /dev/null +++ b/Source/Bind/CppSpecWriter.cs @@ -0,0 +1,237 @@ +#region License +// +// The Open Toolkit Library License +// +// Copyright (c) 2006 - 2010 the Open Toolkit library. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. +// +#endregion + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Text; +using Bind.Structures; + +namespace Bind +{ + using Delegate = Bind.Structures.Delegate; + using Enum = Bind.Structures.Enum; + using Type = Bind.Structures.Type; + + sealed class CppSpecWriter : ISpecWriter + { + readonly char[] numbers = "0123456789".ToCharArray(); + + #region WriteBindings + + public void WriteBindings(IBind generator) + { + WriteBindings(generator.Delegates, generator.Wrappers, generator.Enums); + } + + void WriteBindings(DelegateCollection delegates, FunctionCollection wrappers, EnumCollection enums) + { + Console.WriteLine("Writing bindings to {0}", Settings.OutputPath); + if (!Directory.Exists(Settings.OutputPath)) + Directory.CreateDirectory(Settings.OutputPath); + + string temp_core_file = Path.GetTempFileName(); + + // Enums + using (BindStreamWriter sw = new BindStreamWriter(temp_core_file)) + { + WriteLicense(sw); + + sw.WriteLine("namespace {0}", Settings.OutputNamespace); + sw.WriteLine("{"); + sw.Indent(); + + sw.Indent(); + WriteEnums(sw, enums); + sw.Unindent(); + + WriteDelegates(sw, delegates); + + sw.Unindent(); + sw.WriteLine("}"); + } + + string output_core = Path.Combine(Settings.OutputPath, Settings.ImportsFile); + if (File.Exists(output_core)) + File.Delete(output_core); + File.Move(temp_core_file, output_core); + } + + #endregion + + #region WriteDelegates + + public void WriteDelegates(BindStreamWriter sw, DelegateCollection delegates) + { + Trace.WriteLine(String.Format("Writing delegates to:\t{0}", Settings.OutputNamespace)); + + foreach (Delegate d in delegates.Values) + { + sw.WriteLine("extern {0};", d.ToString()); + } + } + + #endregion + + #region WriteImports + + public void WriteImports(BindStreamWriter sw, DelegateCollection delegates) + { + } + + #endregion + + #region WriteWrappers + + public void WriteWrappers(BindStreamWriter sw, FunctionCollection wrappers, Dictionary CSTypes) + { + } + + static DocProcessor processor = new DocProcessor(Path.Combine(Settings.DocPath, Settings.DocFile)); + static Dictionary docfiles; + void WriteDocumentation(BindStreamWriter sw, Function f) + { + if (docfiles == null) + { + docfiles = new Dictionary(); + foreach (string file in Directory.GetFiles(Settings.DocPath)) + { + docfiles.Add(Path.GetFileName(file), file); + } + } + + string docfile = null; + try + { + docfile = Settings.FunctionPrefix + f.WrappedDelegate.Name + ".xml"; + if (!docfiles.ContainsKey(docfile)) + docfile = Settings.FunctionPrefix + f.TrimmedName + ".xml"; + if (!docfiles.ContainsKey(docfile)) + docfile = Settings.FunctionPrefix + f.TrimmedName.TrimEnd(numbers) + ".xml"; + + string doc = null; + if (docfiles.ContainsKey(docfile)) + { + doc = processor.ProcessFile(docfiles[docfile]); + } + if (doc == null) + { + doc = "/// "; + } + + int summary_start = doc.IndexOf("") + "".Length; + string warning = "[deprecated: v{0}]"; + string category = "[requires: {0}]"; + if (f.Deprecated) + { + warning = String.Format(warning, f.DeprecatedVersion); + doc = doc.Insert(summary_start, warning); + } + + if (f.Extension != "Core" && !String.IsNullOrEmpty(f.Category)) + { + category = String.Format(category, f.Category); + doc = doc.Insert(summary_start, category); + } + else if (!String.IsNullOrEmpty(f.Version)) + { + if (f.Category.StartsWith("VERSION")) + category = String.Format(category, "v" + f.Version); + else + category = String.Format(category, "v" + f.Version + " and " + f.Category); + doc = doc.Insert(summary_start, category); + } + + sw.WriteLine(doc); + } + catch (Exception e) + { + Console.WriteLine("[Warning] Error processing file {0}: {1}", docfile, e.ToString()); + } + } + + #endregion + + #region WriteTypes + + public void WriteTypes(BindStreamWriter sw, Dictionary CSTypes) + { + sw.WriteLine(); + foreach (string s in CSTypes.Keys) + { + sw.WriteLine("typedef {0} {1};", s, CSTypes[s]); + } + } + + #endregion + + #region WriteEnums + + public void WriteEnums(BindStreamWriter sw, EnumCollection enums) + { + //sw.WriteLine("#pragma warning disable 3019"); // CLSCompliant attribute + sw.WriteLine("#pragma warning disable 1591"); // Missing doc comments + sw.WriteLine(); + + Trace.WriteLine(String.Format("Writing enums to:\t{0}", Settings.EnumsOutput)); + + sw.WriteLine("namespace gl"); + sw.WriteLine("{"); + sw.Indent(); + + foreach (Enum @enum in enums.Values) + { + sw.Write("enum "); + sw.Write(@enum.Name); + sw.Write("{"); + sw.Indent(); + foreach (var c in @enum.ConstantCollection) + sw.WriteLine(c); + sw.Unindent(); + sw.WriteLine("};"); + sw.WriteLine(); + } + + sw.Unindent(); + sw.WriteLine("}"); + } + + #endregion + + #region WriteLicense + + public void WriteLicense(BindStreamWriter sw) + { + sw.WriteLine(File.ReadAllText(Path.Combine(Settings.InputPath, Settings.LicenseFile))); + sw.WriteLine(); + } + + #endregion + } +} diff --git a/Source/Bind/GL2/Generator.cs b/Source/Bind/GL2/Generator.cs index 611f0f0d..363f3f2d 100644 --- a/Source/Bind/GL2/Generator.cs +++ b/Source/Bind/GL2/Generator.cs @@ -37,7 +37,6 @@ namespace Bind.GL2 //protected static readonly Dictionary doc_replacements; protected ISpecReader SpecReader = new XmlSpecReader(); - protected ISpecWriter SpecWriter = new CSharpSpecWriter(); #endregion @@ -63,7 +62,11 @@ namespace Bind.GL2 #endregion - #region Process + #region IBind Members + + public DelegateCollection Delegates { get; private set; } + public EnumCollection Enums { get; private set; } + public FunctionCollection Wrappers { get; private set; } public virtual void Process() { @@ -73,19 +76,13 @@ namespace Bind.GL2 Type.GLTypes = SpecReader.ReadTypeMap(sr); using (StreamReader sr = Utilities.OpenSpecFile(Settings.InputPath, csTypemap)) Type.CSTypes = SpecReader.ReadCSTypeMap(sr); - - EnumCollection enums; using (var sr = new StreamReader(Path.Combine(Settings.InputPath, enumSpec))) - enums = SpecReader.ReadEnums(sr); - - DelegateCollection delegates; + Enums = SpecReader.ReadEnums(sr); using (var sr = new StreamReader(Path.Combine(Settings.InputPath, glSpec))) - delegates = SpecReader.ReadDelegates(sr); + Delegates = SpecReader.ReadDelegates(sr); - enums = new EnumProcessor(overrides).Process(enums); - var wrappers = new FuncProcessor(overrides).Process(delegates, enums); - - SpecWriter.WriteBindings(delegates, wrappers, enums); + Enums = new EnumProcessor(overrides).Process(Enums); + Wrappers = new FuncProcessor(overrides).Process(Delegates, Enums); } #endregion diff --git a/Source/Bind/Generator.Bind.csproj b/Source/Bind/Generator.Bind.csproj index 07e95814..09384123 100644 --- a/Source/Bind/Generator.Bind.csproj +++ b/Source/Bind/Generator.Bind.csproj @@ -139,6 +139,7 @@ Properties\GlobalAssemblyInfo.cs + @@ -204,6 +205,7 @@ OpenTK.snk + diff --git a/Source/Bind/IBind.cs b/Source/Bind/IBind.cs index ea21f003..575ad2c3 100644 --- a/Source/Bind/IBind.cs +++ b/Source/Bind/IBind.cs @@ -4,10 +4,14 @@ */ #endregion +using Bind.Structures; namespace Bind { interface IBind { + DelegateCollection Delegates { get; } + EnumCollection Enums { get; } + FunctionCollection Wrappers { get; } void Process(); } } diff --git a/Source/Bind/ISpecWriter.cs b/Source/Bind/ISpecWriter.cs index 78de991b..df2f503d 100644 --- a/Source/Bind/ISpecWriter.cs +++ b/Source/Bind/ISpecWriter.cs @@ -11,8 +11,7 @@ namespace Bind { interface ISpecWriter { - void WriteBindings(DelegateCollection delegates, FunctionCollection functions, - EnumCollection enums); + void WriteBindings(IBind generator); void WriteDelegates(BindStreamWriter sw, DelegateCollection delegates); void WriteWrappers(BindStreamWriter sw, FunctionCollection wrappers, Dictionary CSTypes); void WriteEnums(BindStreamWriter sw, EnumCollection enums); diff --git a/Source/Bind/Main.cs b/Source/Bind/Main.cs index 46ffce15..8989f07f 100644 --- a/Source/Bind/Main.cs +++ b/Source/Bind/Main.cs @@ -27,10 +27,16 @@ namespace Bind CL10, } + enum GeneratorLanguage + { + CSharp, + Cpp + } + static class MainClass { static GeneratorMode mode = GeneratorMode.GL2; - + static GeneratorLanguage lang = GeneratorLanguage.CSharp; static internal IBind Generator; static void Main(string[] arguments) @@ -70,23 +76,34 @@ namespace Bind case "output": Settings.OutputPath = string.Join(Path.DirectorySeparatorChar.ToString(), b.Skip(1).ToArray()); break; + case "l": + case "lang": + case "language": + { + string arg = b[1].ToLower(); + if (arg == "cpp" || arg == "c++" || arg == "c") + lang = GeneratorLanguage.Cpp; + break; + } case "mode": - string arg = b[1].ToLower(); - if (arg == "gl" || arg == "gl2") - mode = GeneratorMode.GL2; - else if (arg == "es10") - mode = GeneratorMode.ES10; - else if (arg == "es11") - mode = GeneratorMode.ES11; - else if (arg == "es20") - mode = GeneratorMode.ES20; - else if (arg=="cl" || arg == "cl10") - mode = GeneratorMode.CL10; - else - throw new NotImplementedException(); - if (b.Length > 2) - dirName = b[2]; - break; + { + string arg = b[1].ToLower(); + if (arg == "gl" || arg == "gl2") + mode = GeneratorMode.GL2; + else if (arg == "es10") + mode = GeneratorMode.ES10; + else if (arg == "es11") + mode = GeneratorMode.ES11; + else if (arg == "es20") + mode = GeneratorMode.ES20; + else if (arg == "cl" || arg == "cl10") + mode = GeneratorMode.CL10; + else + throw new NotImplementedException(); + if (b.Length > 2) + dirName = b[2]; + break; + } case "namespace": case "ns": Settings.OutputNamespace = b[1]; @@ -165,6 +182,19 @@ namespace Bind } Generator.Process(); + ISpecWriter writer = null; + switch (lang) + { + case GeneratorLanguage.Cpp: + writer = new CppSpecWriter(); + break; + + case GeneratorLanguage.CSharp: + default: + writer = new CSharpSpecWriter(); + break; + } + writer.WriteBindings(Generator); ticks = DateTime.Now.Ticks - ticks; diff --git a/Source/Bind/Specifications/GL2/gl.tm b/Source/Bind/Specifications/GL2/gl.tm new file mode 100644 index 00000000..ef9ab9c7 --- /dev/null +++ b/Source/Bind/Specifications/GL2/gl.tm @@ -0,0 +1,328 @@ +AccumOp,*,*, GLenum,*,* +AlphaFunction,*,*, GLenum,*,* +AttribMask,*,*, GLbitfield,*,* +BeginMode,*,*, GLenum,*,* +BinormalPointerTypeEXT,*,*, GLenum,*,* +BlendEquationMode,*,*, GLenum,*,* +BlendEquationModeEXT,*,*, GLenum,*,* +BlendFuncSeparateParameterEXT,*,*, GLenum,*,* +BlendingFactorDest,*,*, GLenum,*,* +BlendingFactorSrc,*,*, GLenum,*,* +Boolean,*,*, GLboolean,*,* +BooleanPointer,*,*, GLboolean*,*,* +Char,*,*, GLchar,*,* +CharPointer,*,*, GLchar*,*,* +CheckedFloat32,*,*, GLfloat,*,* +CheckedInt32,*,*, GLint,*,* +ClampColorTargetARB,*,*, GLenum,*,* +ClampColorModeARB,*,*, GLenum,*,* +ClampedColorF,*,*, GLclampf,*,* +ClampedFloat32,*,*, GLclampf,*,* +ClampedFloat64,*,*, GLclampd,*,* +ClampedStencilValue,*,*, GLint,*,* +ClearBufferMask,*,*, GLbitfield,*,* +ClientAttribMask,*,*, GLbitfield,*,* +ClipPlaneName,*,*, GLenum,*,* +ColorB,*,*, GLbyte,*,* +ColorD,*,*, GLdouble,*,* +ColorF,*,*, GLfloat,*,* +ColorI,*,*, GLint,*,* +ColorIndexValueD,*,*, GLdouble,*,* +ColorIndexValueF,*,*, GLfloat,*,* +ColorIndexValueI,*,*, GLint,*,* +ColorIndexValueS,*,*, GLshort,*,* +ColorIndexValueUB,*,*, GLubyte,*,* +ColorMaterialParameter,*,*, GLenum,*,* +ColorPointerType,*,*, GLenum,*,* +ColorS,*,*, GLshort,*,* +ColorTableParameterPName,*,*, GLenum,*,* +ColorTableParameterPNameSGI,*,*, GLenum,*,* +ColorTableTarget,*,*, GLenum,*,* +ColorTableTargetSGI,*,*, GLenum,*,* +ColorUB,*,*, GLubyte,*,* +ColorUI,*,*, GLuint,*,* +ColorUS,*,*, GLushort,*,* +CombinerBiasNV,*,*, GLenum,*,* +CombinerComponentUsageNV,*,*, GLenum,*,* +CombinerMappingNV,*,*, GLenum,*,* +CombinerParameterNV,*,*, GLenum,*,* +CombinerPortionNV,*,*, GLenum,*,* +CombinerRegisterNV,*,*, GLenum,*,* +CombinerScaleNV,*,*, GLenum,*,* +CombinerStageNV,*,*, GLenum,*,* +CombinerVariableNV,*,*, GLenum,*,* +CompressedTextureARB,*,*, GLvoid,*,* +ControlPointNV,*,*, GLvoid,*,* +ControlPointTypeNV,*,*, GLenum,*,* +ConvolutionParameter,*,*, GLenum,*,* +ConvolutionParameterEXT,*,*, GLenum,*,* +ConvolutionTarget,*,*, GLenum,*,* +ConvolutionTargetEXT,*,*, GLenum,*,* +CoordD,*,*, GLdouble,*,* +CoordF,*,*, GLfloat,*,* +CoordI,*,*, GLint,*,* +CoordS,*,*, GLshort,*,* +CullFaceMode,*,*, GLenum,*,* +CullParameterEXT,*,*, GLenum,*,* +DepthFunction,*,*, GLenum,*,* +DrawBufferMode,*,*, GLenum,*,* +DrawBufferName,*,*, GLint,*,* +DrawElementsType,*,*, GLenum,*,* +ElementPointerTypeATI,*,*, GLenum,*,* +EnableCap,*,*, GLenum,*,* +ErrorCode,*,*, GLenum,*,* +EvalMapsModeNV,*,*, GLenum,*,* +EvalTargetNV,*,*, GLenum,*,* +FeedbackElement,*,*, GLfloat,*,* +FeedbackType,*,*, GLenum,*,* +FenceNV,*,*, GLuint,*,* +FenceConditionNV,*,*, GLenum,*,* +FenceParameterNameNV,*,*, GLenum,*,* +FfdMaskSGIX,*,*, GLbitfield,*,* +FfdTargetSGIX,*,*, GLenum,*,* +Float32,*,*, GLfloat,*,* +Float32Pointer,*,*, GLfloat*,*,* +Float64,*,*, GLdouble,*,* +Float64Pointer,*,*, GLdouble*,*,* +FogParameter,*,*, GLenum,*,* +FogPointerTypeEXT,*,*, GLenum,*,* +FogPointerTypeIBM,*,*, GLenum,*,* +FragmentLightModelParameterSGIX,*,*,GLenum,*,* +FragmentLightNameSGIX,*,*, GLenum,*,* +FragmentLightParameterSGIX,*,*, GLenum,*,* +FramebufferAttachment,*,*, GLenum,*,* +FramebufferTarget,*,*, GLenum,*,* +FrontFaceDirection,*,*, GLenum,*,* +FunctionPointer,*,*, _GLfuncptr,*,* +GetColorTableParameterPName,*,*, GLenum,*,* +GetColorTableParameterPNameSGI,*,*, GLenum,*,* +GetConvolutionParameterPName,*,*, GLenum,*,* +GetHistogramParameterPName,*,*, GLenum,*,* +GetHistogramParameterPNameEXT,*,*, GLenum,*,* +GetMapQuery,*,*, GLenum,*,* +GetMinmaxParameterPName,*,*, GLenum,*,* +GetMinmaxParameterPNameEXT,*,*, GLenum,*,* +GetPName,*,*, GLenum,*,* +GetPointervPName,*,*, GLenum,*,* +GetTextureParameter,*,*, GLenum,*,* +HintMode,*,*, GLenum,*,* +HintTarget,*,*, GLenum,*,* +HintTargetPGI,*,*, GLenum,*,* +HistogramTarget,*,*, GLenum,*,* +HistogramTargetEXT,*,*, GLenum,*,* +IglooFunctionSelectSGIX,*,*, GLenum,*,* +IglooParameterSGIX,*,*, GLvoid,*,* +ImageTransformPNameHP,*,*, GLenum,*,* +ImageTransformTargetHP,*,*, GLenum,*,* +IndexFunctionEXT,*,*, GLenum,*,* +IndexMaterialParameterEXT,*,*, GLenum,*,* +IndexPointerType,*,*, GLenum,*,* +Int16,*,*, GLshort,*,* +Int32,*,*, GLint,*,* +Int8,*,*, GLbyte,*,* +InterleavedArrayFormat,*,*, GLenum,*,* +LightEnvParameterSGIX,*,*, GLenum,*,* +LightModelParameter,*,*, GLenum,*,* +LightName,*,*, GLenum,*,* +LightParameter,*,*, GLenum,*,* +LightTextureModeEXT,*,*, GLenum,*,* +LightTexturePNameEXT,*,*, GLenum,*,* +LineStipple,*,*, GLushort,*,* +List,*,*, GLuint,*,* +ListMode,*,*, GLenum,*,* +ListNameType,*,*, GLenum,*,* +ListParameterName,*,*, GLenum,*,* +LogicOp,*,*, GLenum,*,* +MapAttribParameterNV,*,*, GLenum,*,* +MapParameterNV,*,*, GLenum,*,* +MapTarget,*,*, GLenum,*,* +MapTargetNV,*,*, GLenum,*,* +MapTypeNV,*,*, GLenum,*,* +MaskedColorIndexValueF,*,*, GLfloat,*,* +MaskedColorIndexValueI,*,*, GLuint,*,* +MaskedStencilValue,*,*, GLuint,*,* +MaterialFace,*,*, GLenum,*,* +MaterialParameter,*,*, GLenum,*,* +MatrixIndexPointerTypeARB,*,*, GLenum,*,* +MatrixMode,*,*, GLenum,*,* +MatrixTransformNV,*,*, GLenum,*,* +MeshMode1,*,*, GLenum,*,* +MeshMode2,*,*, GLenum,*,* +MinmaxTarget,*,*, GLenum,*,* +MinmaxTargetEXT,*,*, GLenum,*,* +NormalPointerType,*,*, GLenum,*,* +NurbsCallback,*,*, GLenum,*,* +NurbsObj,*,*, GLUnurbs*,*,* +NurbsProperty,*,*, GLenum,*,* +NurbsTrim,*,*, GLenum,*,* +OcclusionQueryParameterNameNV,*,*, GLenum,*,* +PixelCopyType,*,*, GLenum,*,* +PixelFormat,*,*, GLenum,*,* +PixelInternalFormat,*,*, GLenum,*,* +PixelMap,*,*, GLenum,*,* +PixelStoreParameter,*,*, GLenum,*,* +PixelTexGenModeSGIX,*,*, GLenum,*,* +PixelTexGenParameterNameSGIS,*,*, GLenum,*,* +PixelTransferParameter,*,*, GLenum,*,* +PixelTransformPNameEXT,*,*, GLenum,*,* +PixelTransformTargetEXT,*,*, GLenum,*,* +PixelType,*,*, GLenum,*,* +PointParameterNameARB,*,*, GLenum,*,* +PolygonMode,*,*, GLenum,*,* +ProgramNV,*,*, GLuint,*,* +ProgramCharacterNV,*,*, GLubyte,*,* +ProgramParameterNV,*,*, GLenum,*,* +ProgramParameterPName,*,*, GLenum,*,* +QuadricCallback,*,*, GLenum,*,* +QuadricDrawStyle,*,*, GLenum,*,* +QuadricNormal,*,*, GLenum,*,* +QuadricObj,*,*, GLUquadric*,*,* +QuadricOrientation,*,*, GLenum,*,* +ReadBufferMode,*,*, GLenum,*,* +RenderbufferTarget,*,*, GLenum,*,* +RenderingMode,*,*, GLenum,*,* +ReplacementCodeSUN,*,*, GLuint,*,* +ReplacementCodeTypeSUN,*,*, GLenum,*,* +SamplePassARB,*,*, GLenum,*,* +SamplePatternEXT,*,*, GLenum,*,* +SamplePatternSGIS,*,*, GLenum,*,* +SecondaryColorPointerTypeIBM,*,*, GLenum,*,* +SelectName,*,*, GLuint,*,* +SeparableTarget,*,*, GLenum,*,* +SeparableTargetEXT,*,*, GLenum,*,* +ShadingModel,*,*, GLenum,*,* +SizeI,*,*, GLsizei,*,* +SpriteParameterNameSGIX,*,*, GLenum,*,* +StencilFunction,*,*, GLenum,*,* +StencilFaceDirection,*,*, GLenum,*,* +StencilOp,*,*, GLenum,*,* +StencilValue,*,*, GLint,*,* +String,*,*, const GLubyte *,*,* +StringName,*,*, GLenum,*,* +TangentPointerTypeEXT,*,*, GLenum,*,* +TessCallback,*,*, GLenum,*,* +TessContour,*,*, GLenum,*,* +TessProperty,*,*, GLenum,*,* +TesselatorObj,*,*, GLUtesselator*,*,* +TexCoordPointerType,*,*, GLenum,*,* +Texture,*,*, GLuint,*,* +TextureComponentCount,*,*, GLint,*,* +TextureCoordName,*,*, GLenum,*,* +TextureEnvParameter,*,*, GLenum,*,* +TextureEnvTarget,*,*, GLenum,*,* +TextureFilterSGIS,*,*, GLenum,*,* +TextureGenParameter,*,*, GLenum,*,* +TextureNormalModeEXT,*,*, GLenum,*,* +TextureParameterName,*,*, GLenum,*,* +TextureTarget,*,*, GLenum,*,* +TextureUnit,*,*, GLenum,*,* +UInt16,*,*, GLushort,*,* +UInt32,*,*, GLuint,*,* +UInt8,*,*, GLubyte,*,* +VertexAttribEnum,*,*, GLenum,*,* +VertexAttribEnumNV,*,*, GLenum,*,* +VertexAttribPointerTypeNV,*,*, GLenum,*,* +VertexPointerType,*,*, GLenum,*,* +VertexWeightPointerTypeEXT,*,*, GLenum,*,* +Void,*,*, GLvoid,*,* +VoidPointer,*,*, GLvoid*,*,* +ConstVoidPointer,*,*, GLvoid* const,*,* +WeightPointerTypeARB,*,*, GLenum,*,* +WinCoord,*,*, GLint,*,* +void,*,*, *,*,* +ArrayObjectPNameATI,*,*, GLenum,*,* +ArrayObjectUsageATI,*,*, GLenum,*,*, +ConstFloat32,*,*, GLfloat,*,* +ConstInt32,*,*, GLint,*,* +ConstUInt32,*,*, GLuint,*,* +ConstVoid,*,*, GLvoid,*,* +DataTypeEXT,*,*, GLenum,*,* +FragmentOpATI,*,*, GLenum,*,* +GetTexBumpParameterATI,*,*, GLenum,*,* +GetVariantValueEXT,*,*, GLenum,*,* +ParameterRangeEXT,*,*, GLenum,*,* +PreserveModeATI,*,*, GLenum,*,* +ProgramFormatARB,*,*, GLenum,*,* +ProgramTargetARB,*,*, GLenum,*,* +ProgramTarget,*,*, GLenum,*,* +ProgramPropertyARB,*,*, GLenum,*,* +ProgramStringPropertyARB,*,*, GLenum,*,* +ScalarType,*,*, GLenum,*,* +SwizzleOpATI,*,*, GLenum,*,* +TexBumpParameterATI,*,*, GLenum,*,* +VariantCapEXT,*,*, GLenum,*,* +VertexAttribPointerPropertyARB,*,*, GLenum,*,* +VertexAttribPointerTypeARB,*,*, GLenum,*,* +VertexAttribPropertyARB,*,*, GLenum,*,* +VertexShaderCoordOutEXT,*,*, GLenum,*,* +VertexShaderOpEXT,*,*, GLenum,*,* +VertexShaderParameterEXT,*,*, GLenum,*,* +VertexShaderStorageTypeEXT,*,*, GLenum,*,* +VertexShaderTextureUnitParameter,*,*, GLenum,*,* +VertexShaderWriteMaskEXT,*,*, GLenum,*,* +VertexStreamATI,*,*, GLenum,*,* +PNTrianglesPNameATI,*,*, GLenum,*,* +# ARB_vertex_buffer_object types and core equivalents for new types +BufferOffset,*,*, GLintptr,*,* +BufferSize,*,*, GLsizeiptr,*,* +BufferAccessARB,*,*, GLenum,*,* +BufferOffsetARB,*,*, GLintptrARB,*,* +BufferPNameARB,*,*, GLenum,*,* +BufferPointerNameARB,*,*, GLenum,*,* +BufferSizeARB,*,*, GLsizeiptrARB,*,* +BufferTargetARB,*,*, GLenum,*,* +BufferUsageARB,*,*, GLenum,*,* +# APPLE_fence +ObjectTypeAPPLE,*,*, GLenum,*,* +# APPLE_vertex_array_range +VertexArrayPNameAPPLE,*,*, GLenum,*,* +# ATI_draw_buffers +DrawBufferModeATI,*,*, GLenum,*,* +# NV_half +Half16NV,*,*, GLhalfNV,*,* +# NV_pixel_data_range +PixelDataRangeTargetNV,*,*, GLenum,*,* +# Generic types for as-yet-unspecified enums +TypeEnum,*,*, GLenum,*,* +GLbitfield,*,*, GLbitfield,*,* +GLenum,*,*, GLenum,*,* +Int64,*,*, GLint64,*,* +UInt64,*,*, GLuint64,*,* +# Object handle & data pointers +handleARB,*,*, GLhandleARB,*,* +charARB,*,*, GLcharARB,*,* +charPointerARB,*,*, GLcharARB*,*,* +sync,*,*, GLsync,*,*, +# EXT_timer_query +Int64EXT,*,*, GLint64EXT,*,* +UInt64EXT,*,*, GLuint64EXT,*,* +# EXT_direct_state_access +FramebufferAttachmentParameterName,*,*, GLenum,*,* +Framebuffer,*,*, GLuint,*,* +FramebufferStatus,*,*, GLenum,*,* +GetFramebufferParameter,*,*, GLenum,*,* +Intptr,*,*, GLintptr,*,* +ProgramFormat,*,*, GLenum,*,* +ProgramProperty,*,*, GLenum,*,* +ProgramStringProperty,*,*, GLenum,*,* +Renderbuffer,*,*, GLuint,*,* +RenderbufferParameterName,*,*, GLenum,*,* +Sizeiptr,*,*, GLsizeiptr,*,* +TextureInternalFormat,*,*, GLenum,*,* +VertexBufferObjectAccess,*,*, GLenum,*,* +VertexBufferObjectParameter,*,*, GLenum,*,* +VertexBufferObjectUsage,*,*, GLenum,*,* +# ARB_map_buffer_range +BufferAccessMask,*,*, GLbitfield,*,* +# NV_explicit_multisample +GetMultisamplePNameNV,*,*, GLenum,*,* +SampleMaskNV,*,*, GLbitfield,*,* +# ARB_debug_output +GLDEBUGPROCARB,*,*, GLDEBUGPROCARB,*,* +# AMD_debug_output +GLDEBUGPROCAMD,*,*, GLDEBUGPROCAMD,*,* +# NV_vdpau_interop +vdpauSurfaceNV,*,*, GLvdpauSurfaceNV,*,*, +# External API types +cl_context,*,*, struct _cl_context *,*,* +cl_event,*,*, struct _cl_event *,*,* \ No newline at end of file