private void GenerateEnum(IndentedTextWriter writer, GLEnum glEnum, GLFeature feature, HashSet <GLChangeReference> collected) { bool any = false; using (var sb = new StringBuilderTextWriter(new StringBuilder())) using (var tempWriter = new IndentedTextWriter(sb)) { tempWriter.Indent = writer.Indent; tempWriter.WriteLine("enum " + glEnum.Name + " : uint"); tempWriter.WriteLine("{"); using (tempWriter.Indentation()) { foreach (var entry in glEnum.Entries) { var reference = new GLChangeReference("enum", entry.Value.Name); if (!collected.Contains(reference)) { continue; } any = true; tempWriter.WriteLine(entry.Value.Name + " = " + entry.Value.Value + ","); } } tempWriter.WriteLine("}"); if (any) { writer.WriteLine(sb.StringBuilder.ToString()); } } }
private void GenerateSpecialNumbers(IndentedTextWriter writer, GLEnum glEnum, GLFeature feature, HashSet <GLChangeReference> collected) { bool any = false; using (var sb = new StringBuilderTextWriter(new StringBuilder())) using (var tempWriter = new IndentedTextWriter(sb)) { tempWriter.Indent = writer.Indent; tempWriter.WriteLine("public static class " + glEnum.Name + ""); tempWriter.WriteLine("{"); using (tempWriter.Indentation()) { foreach (var entry in glEnum.Entries) { var reference = new GLChangeReference("enum", entry.Value.Name); if (!collected.Contains(reference)) { continue; } any = true; string dataType = entry.Value.Value <= byte.MaxValue ? "byte" : entry.Value.Value <= ushort.MaxValue ? "ushort" : entry.Value.Value <= uint.MaxValue ? "uint" : "ulong"; tempWriter.WriteLine($"public static {dataType} {entry.Value.Name} = {entry.Value.Value};"); } } tempWriter.WriteLine("}"); if (any) { writer.WriteLine(sb.StringBuilder.ToString()); } } }
private void GenerateMethod(IndentedTextWriter writer, GLMethod glMethod, GLFeature feature, HashSet <GLChangeReference> collected) { var reference = new GLChangeReference("command", glMethod.Name); if (!collected.Contains(reference)) { return; } writer.WriteLine($"[DllImport(\"OpenTK.OpenGL\", EntryPoint = \"{glMethod.Name}\")]"); writer.Write("public extern static "); writer.Write(glMethod.ReturnTypeBase + " " + glMethod.Name); writer.Write("("); bool isFirst = true; foreach (var p in glMethod.Parameters) { if (!isFirst) { writer.Write(", "); } var pType = p.Type; if (pType.IsConst) { writer.Write("[Const]"); pType = ((GLConstType)pType).ElementType; } writer.Write(pType.Name + " " + NameMangler.MangleParameter(p.Name)); isFirst = false; } writer.Write(");"); writer.WriteLine(); }