public virtual void WriteDelegates(BindStreamWriter sw, DelegateCollection delegates) { Trace.WriteLine(String.Format("Writing delegates to:\t{0}.{1}.{2}", Settings.OutputNamespace, Settings.OutputClass, Settings.DelegatesClass)); sw.WriteLine("#pragma warning disable 3019"); // CLSCompliant attribute sw.WriteLine("#pragma warning disable 1591"); // Missing doc comments sw.WriteLine(); #if !IPHONE sw.WriteLine("partial class {0}", Settings.OutputClass); sw.WriteLine("{"); sw.Indent(); sw.WriteLine("internal static partial class {0}", Settings.DelegatesClass); sw.WriteLine("{"); sw.Indent(); foreach (Delegate d in delegates.Values) { sw.WriteLine("[System.Security.SuppressUnmanagedCodeSecurity()]"); sw.WriteLine("internal {0};", d.ToString()); sw.WriteLine("internal {0}static {1} {2}{1};", // = null d.Unsafe ? "unsafe " : "", d.Name, Settings.FunctionPrefix); } sw.Unindent(); sw.WriteLine("}"); sw.Unindent(); sw.WriteLine("}"); #endif }
private static void WriteDocumentation(BindStreamWriter sw, Function f) { try { string path = Path.Combine(Settings.DocPath, Settings.FunctionPrefix + f.WrappedDelegate.Name + ".xml"); if (!File.Exists(path)) { path = Path.Combine(Settings.DocPath, Settings.FunctionPrefix + f.TrimmedName + ".xml"); } if (!File.Exists(path)) { path = Path.Combine(Settings.DocPath, Settings.FunctionPrefix + f.TrimmedName.TrimEnd(numbers) + ".xml"); } if (File.Exists(path)) { DocProcessor doc_processor = new DocProcessor(Path.Combine(Settings.DocPath, Settings.DocFile)); sw.WriteLine(doc_processor.ProcessFile(path)); } } catch (FileNotFoundException) { } }
public virtual void WriteDelegates(BindStreamWriter sw, DelegateCollection delegates) { Trace.WriteLine(String.Format("Writing delegates to:\t{0}.{1}.{2}", Settings.OutputNamespace, Settings.OutputClass, Settings.DelegatesClass)); sw.WriteLine(); sw.WriteLine("partial class {0}", Settings.OutputClass); sw.WriteLine("{"); sw.Indent(); sw.WriteLine("internal static partial class {0}", Settings.DelegatesClass); sw.WriteLine("{"); sw.Indent(); foreach (Bind.Structures.Delegate d in delegates.Values) { sw.WriteLine("[System.Security.SuppressUnmanagedCodeSecurity()]"); sw.WriteLine("internal {0};", d.ToString()); sw.WriteLine("internal {0}static {1} {2}{1};", // = null d.Unsafe ? "unsafe " : "", d.Name, Settings.FunctionPrefix); } sw.Unindent(); sw.WriteLine("}"); sw.Unindent(); sw.WriteLine("}"); }
public virtual void WriteImports(BindStreamWriter sw, DelegateCollection delegates) { Trace.WriteLine(String.Format("Writing imports to:\t{0}.{1}.{2}", Settings.OutputNamespace, Settings.OutputClass, Settings.ImportsClass)); sw.WriteLine("#pragma warning disable 3019"); // CLSCompliant attribute sw.WriteLine("#pragma warning disable 1591"); // Missing doc comments sw.WriteLine(); sw.WriteLine("partial class {0}", Settings.OutputClass); sw.WriteLine("{"); sw.Indent(); sw.WriteLine(); sw.WriteLine("internal static partial class {0}", Settings.ImportsClass); sw.WriteLine("{"); sw.Indent(); //sw.WriteLine("static {0}() {1} {2}", Settings.ImportsClass, "{", "}"); // Disable BeforeFieldInit sw.WriteLine(); foreach (Delegate d in delegates.Values) { sw.WriteLine("[System.Security.SuppressUnmanagedCodeSecurity()]"); sw.WriteLine( "[System.Runtime.InteropServices.DllImport({0}.Library, EntryPoint = \"{1}{2}\"{3})]", Settings.OutputClass, Settings.FunctionPrefix, d.Name, d.Name.EndsWith("W") || d.Name.EndsWith("A") ? ", CharSet = CharSet.Auto" : ", ExactSpelling = true" ); sw.WriteLine("internal extern static {0};", d.DeclarationString()); } sw.Unindent(); sw.WriteLine("}"); sw.Unindent(); sw.WriteLine("}"); }
public void WriteTypes(BindStreamWriter sw, Dictionary <string, string> CSTypes) { sw.WriteLine(); foreach (string s in CSTypes.Keys) { sw.WriteLine("using {0} = System.{1};", s, CSTypes[s]); } }
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(); if ((Settings.Compatibility & Settings.Legacy.NestedEnums) != Settings.Legacy.None) { Trace.WriteLine(String.Format("Writing enums to:\t{0}.{1}.{2}", Settings.OutputNamespace, Settings.OutputClass, Settings.NestedEnumsClass)); } else { Trace.WriteLine(String.Format("Writing enums to:\t{0}", Settings.EnumsOutput)); } if ((Settings.Compatibility & Settings.Legacy.ConstIntEnums) == Settings.Legacy.None) { if ((Settings.Compatibility & Settings.Legacy.NestedEnums) != Settings.Legacy.None && !String.IsNullOrEmpty(Settings.NestedEnumsClass)) { sw.WriteLine("public class Enums"); sw.WriteLine("{"); sw.Indent(); } foreach (Enum @enum in enums.Values) { sw.Write(@enum); sw.WriteLine(); } if ((Settings.Compatibility & Settings.Legacy.NestedEnums) != Settings.Legacy.None && !String.IsNullOrEmpty(Settings.NestedEnumsClass)) { sw.Unindent(); sw.WriteLine("}"); } } else { // Tao legacy mode: dump all enums as constants in GLClass. foreach (Constant c in enums[Settings.CompleteEnumName].ConstantCollection.Values) { // Print constants avoiding circular definitions if (c.Name != c.Value) { sw.WriteLine(String.Format( "public const int {0} = {2}((int){1});", c.Name.StartsWith(Settings.ConstantPrefix) ? c.Name : Settings.ConstantPrefix + c.Name, Char.IsDigit(c.Value[0]) ? c.Value : c.Value.StartsWith(Settings.ConstantPrefix) ? c.Value : Settings.ConstantPrefix + c.Value, c.Unchecked ? "unchecked" : "")); } else { } } } }
private static int WriteWrapper(BindStreamWriter sw, int current, Function f) { if ((Settings.Compatibility & Settings.Legacy.NoDocumentation) == 0) { Console.WriteLine("Creating docs for #{0} ({1})", current++, f.Name); WriteDocumentation(sw, f); } WriteMethod(sw, f); return(current); }
private static void WriteMethod(BindStreamWriter sw, Function f) { if (!f.CLSCompliant) { sw.WriteLine("[System.CLSCompliant(false)]"); } sw.WriteLine("[AutoGenerated(Category = \"{0}\", Version = \"{1}\", EntryPoint = \"{2}\")]", f.Category, f.Version, Settings.FunctionPrefix + f.WrappedDelegate.Name); sw.WriteLine("public static "); sw.Write(f); sw.WriteLine(); }
public void WriteWrappers(BindStreamWriter sw, FunctionCollection wrappers, Dictionary <string, string> CSTypes) { Trace.WriteLine(String.Format("Writing wrappers to:\t{0}.{1}", Settings.OutputNamespace, Settings.OutputClass)); sw.WriteLine("#pragma warning disable 3019"); // CLSCompliant attribute sw.WriteLine("#pragma warning disable 1591"); // Missing doc comments sw.WriteLine("#pragma warning disable 1572"); // Wrong param comments sw.WriteLine("#pragma warning disable 1573"); // Missing param comments sw.WriteLine(); sw.WriteLine("partial class {0}", Settings.OutputClass); sw.WriteLine("{"); sw.Indent(); //sw.WriteLine("static {0}() {1} {2}", className, "{", "}"); // Static init in GLHelper.cs sw.WriteLine(); int current = 0; foreach (string key in wrappers.Keys) { if (((Settings.Compatibility & Settings.Legacy.NoSeparateFunctionNamespaces) == Settings.Legacy.None) && key != "Core") { if (!Char.IsDigit(key[0])) { sw.WriteLine("public static partial class {0}", key); } else { // Identifiers cannot start with a number: sw.WriteLine("public static partial class {0}{1}", Settings.ConstantPrefix, key); } sw.WriteLine("{"); sw.Indent(); } wrappers[key].Sort(); foreach (Function f in wrappers[key]) { current = WriteWrapper(sw, current, f); } if (((Settings.Compatibility & Settings.Legacy.NoSeparateFunctionNamespaces) == Settings.Legacy.None) && key != "Core") { sw.Unindent(); sw.WriteLine("}"); sw.WriteLine(); } } sw.Unindent(); sw.WriteLine("}"); }
public void WriteWrappers(BindStreamWriter sw, FunctionCollection wrappers, Dictionary <string, string> CSTypes) { Trace.WriteLine(String.Format("Writing wrappers to:\t{0}.{1}", Settings.OutputNamespace, Settings.OutputClass)); sw.WriteLine(); sw.WriteLine("public static partial class {0}", Settings.OutputClass); sw.WriteLine("{"); sw.Indent(); //sw.WriteLine("static {0}() {1} {2}", className, "{", "}"); // Static init in GLHelper.cs sw.WriteLine(); foreach (string key in wrappers.Keys) { if (((Settings.Compatibility & Settings.Legacy.NoSeparateFunctionNamespaces) == Settings.Legacy.None) && key != "Core") { if (!Char.IsDigit(key[0])) { sw.WriteLine("public static partial class {0}", key); } else { // Identifiers cannot start with a number: sw.WriteLine("public static partial class {0}{1}", Settings.ConstantPrefix, key); } sw.WriteLine("{"); sw.Indent(); } foreach (Function f in wrappers[key]) { if (!f.CLSCompliant) { sw.WriteLine("[System.CLSCompliant(false)]"); } sw.WriteLine("public static "); sw.Write(f); sw.WriteLine(); } if (((Settings.Compatibility & Settings.Legacy.NoSeparateFunctionNamespaces) == Settings.Legacy.None) && key != "Core") { sw.Unindent(); sw.WriteLine("}"); sw.WriteLine(); } } sw.Unindent(); sw.WriteLine("}"); }
public virtual void WriteDelegates(BindStreamWriter sw, DelegateCollection delegates) { Trace.WriteLine(String.Format("Writing delegates to:\t{0}.{1}.{2}", Settings.OutputNamespace, Settings.OutputClass, Settings.DelegatesClass)); sw.WriteLine("#pragma warning disable 3019"); // CLSCompliant attribute sw.WriteLine("#pragma warning disable 1591"); // Missing doc comments sw.WriteLine(); sw.WriteLine("public partial class {0}", Settings.OutputClass); sw.WriteLine("{"); sw.Indent(); sw.WriteLine("public static unsafe partial class {0}", Settings.DelegatesClass); sw.WriteLine("{"); sw.Indent(); // Chela doesn't support P/Invoke style marshalling, so use function pointers. foreach (Delegate d in delegates.Values) { sw.WriteLine("public {0};", d.ToFunctionPointer()); sw.WriteLine("public unsafe static {0} {1}{0};", // = null d.Name, Settings.FunctionPrefix); } // Write load entry points. sw.WriteLine(); sw.WriteLine("public unsafe static void LoadEntryPoints()"); sw.WriteLine("{"); sw.Indent(); foreach (Delegate d in delegates.Values) { sw.WriteLine("{1}{0} = ({0}) GetEntryPoint(c\"{1}{0}\");", d.Name, Settings.FunctionPrefix); } sw.Unindent(); sw.WriteLine("}"); // Finish delegates. sw.Unindent(); sw.WriteLine("}"); sw.Unindent(); sw.WriteLine("}"); }
public void WriteWrappers(BindStreamWriter sw, FunctionCollection wrappers, Dictionary<string, string> CSTypes) { Trace.WriteLine(String.Format("Writing wrappers to:\t{0}.{1}", Settings.OutputNamespace, Settings.OutputClass)); sw.WriteLine("#pragma warning disable 3019"); // CLSCompliant attribute sw.WriteLine("#pragma warning disable 1591"); // Missing doc comments sw.WriteLine("#pragma warning disable 1572"); // Wrong param comments sw.WriteLine("#pragma warning disable 1573"); // Missing param comments sw.WriteLine(); sw.WriteLine("partial class {0}", Settings.OutputClass); sw.WriteLine("{"); sw.Indent(); //sw.WriteLine("static {0}() {1} {2}", className, "{", "}"); // Static init in GLHelper.cs sw.WriteLine(); int current = 0; foreach (string key in wrappers.Keys) { if (((Settings.Compatibility & Settings.Legacy.NoSeparateFunctionNamespaces) == Settings.Legacy.None) && key != "Core") { if (!Char.IsDigit(key[0])) { sw.WriteLine("public static partial class {0}", key); } else { // Identifiers cannot start with a number: sw.WriteLine("public static partial class {0}{1}", Settings.ConstantPrefix, key); } sw.WriteLine("{"); sw.Indent(); } wrappers[key].Sort(); foreach (Function f in wrappers[key]) { current = WriteWrapper(sw, current, f); } if (((Settings.Compatibility & Settings.Legacy.NoSeparateFunctionNamespaces) == Settings.Legacy.None) && key != "Core") { sw.Unindent(); sw.WriteLine("}"); sw.WriteLine(); } } sw.Unindent(); sw.WriteLine("}"); }
public virtual void WriteDelegates(BindStreamWriter sw, DelegateCollection delegates) { Trace.WriteLine(String.Format("Writing delegates to:\t{0}.{1}.{2}", Settings.OutputNamespace, Settings.OutputClass, Settings.DelegatesClass)); sw.WriteLine("#pragma warning disable 3019"); // CLSCompliant attribute sw.WriteLine("#pragma warning disable 1591"); // Missing doc comments sw.WriteLine(); sw.WriteLine("partial class {0}", Settings.OutputClass); sw.WriteLine("{"); sw.Indent(); sw.WriteLine("internal static partial class {0}", Settings.DelegatesClass); sw.WriteLine("{"); sw.Indent(); foreach (Delegate d in delegates.Values) { sw.WriteLine("[System.Security.SuppressUnmanagedCodeSecurity()]"); sw.WriteLine("internal {0};", d.ToString()); sw.WriteLine("internal {0}static {1} {2}{1};", // = null d.Unsafe ? "unsafe " : "", d.Name, Settings.FunctionPrefix); } sw.Unindent(); sw.WriteLine("}"); sw.Unindent(); sw.WriteLine("}"); }
public void WriteBindings(DelegateCollection delegates, FunctionCollection functions, EnumCollection enums) { Console.WriteLine("Writing bindings to {0}", Settings.OutputPath); if (!Directory.Exists(Settings.OutputPath)) Directory.CreateDirectory(Settings.OutputPath); string temp_enums_file = Path.GetTempFileName(); string temp_delegates_file = Path.GetTempFileName(); string temp_core_file = Path.GetTempFileName(); string temp_wrappers_file = Path.GetTempFileName(); // Enums using (BindStreamWriter sw = new BindStreamWriter(temp_enums_file)) { WriteLicense(sw); sw.WriteLine("using System;"); sw.WriteLine(); if ((Settings.Compatibility & Settings.Legacy.NestedEnums) != Settings.Legacy.None) { sw.WriteLine("namespace {0}", Settings.OutputNamespace); sw.WriteLine("{"); sw.Indent(); sw.WriteLine("static partial class {0}", Settings.OutputClass); } else sw.WriteLine("namespace {0}", Settings.EnumsOutput); sw.WriteLine("{"); sw.Indent(); WriteEnums(sw, Enum.GLEnums); sw.Unindent(); if ((Settings.Compatibility & Settings.Legacy.NestedEnums) != Settings.Legacy.None) { sw.WriteLine("}"); sw.Unindent(); } sw.WriteLine("}"); } // Delegates using (BindStreamWriter sw = new BindStreamWriter(temp_delegates_file)) { WriteLicense(sw); sw.WriteLine("namespace {0}", Settings.OutputNamespace); sw.WriteLine("{"); sw.Indent(); sw.WriteLine("using System;"); sw.WriteLine("using System.Text;"); sw.WriteLine("using System.Runtime.InteropServices;"); sw.WriteLine("#pragma warning disable 0649"); WriteDelegates(sw, Delegate.Delegates); sw.Unindent(); sw.WriteLine("}"); } // Core using (BindStreamWriter sw = new BindStreamWriter(temp_core_file)) { WriteLicense(sw); sw.WriteLine("namespace {0}", Settings.OutputNamespace); sw.WriteLine("{"); sw.Indent(); //specWriter.WriteTypes(sw, Bind.Structures.Type.CSTypes); sw.WriteLine("using System;"); sw.WriteLine("using System.Text;"); sw.WriteLine("using System.Runtime.InteropServices;"); WriteImports(sw, Delegate.Delegates); sw.Unindent(); sw.WriteLine("}"); } // Wrappers using (BindStreamWriter sw = new BindStreamWriter(temp_wrappers_file)) { WriteLicense(sw); sw.WriteLine("namespace {0}", Settings.OutputNamespace); sw.WriteLine("{"); sw.Indent(); sw.WriteLine("using System;"); sw.WriteLine("using System.Text;"); sw.WriteLine("using System.Runtime.InteropServices;"); WriteWrappers(sw, Function.Wrappers, Type.CSTypes); sw.Unindent(); sw.WriteLine("}"); } string output_enums = Path.Combine(Settings.OutputPath, enumsFile); string output_delegates = Path.Combine(Settings.OutputPath, delegatesFile); string output_core = Path.Combine(Settings.OutputPath, importsFile); string output_wrappers = Path.Combine(Settings.OutputPath, wrappersFile); if (File.Exists(output_enums)) File.Delete(output_enums); if (File.Exists(output_delegates)) File.Delete(output_delegates); if (File.Exists(output_core)) File.Delete(output_core); if (File.Exists(output_wrappers)) File.Delete(output_wrappers); File.Move(temp_enums_file, output_enums); File.Move(temp_delegates_file, output_delegates); File.Move(temp_core_file, output_core); File.Move(temp_wrappers_file, output_wrappers); }
public void WriteWrappers(BindStreamWriter sw, FunctionCollection wrappers, Dictionary<string, string> CSTypes) { Trace.WriteLine(String.Format("Writing wrappers to:\t{0}.{1}", Settings.OutputNamespace, Settings.OutputClass)); sw.WriteLine(); sw.WriteLine("public static partial class {0}", Settings.OutputClass); sw.WriteLine("{"); sw.Indent(); //sw.WriteLine("static {0}() {1} {2}", className, "{", "}"); // Static init in GLHelper.cs sw.WriteLine(); foreach (string key in wrappers.Keys) { if (((Settings.Compatibility & Settings.Legacy.NoSeparateFunctionNamespaces) == Settings.Legacy.None) && key != "Core") { if (!Char.IsDigit(key[0])) { sw.WriteLine("public static partial class {0}", key); } else { // Identifiers cannot start with a number: sw.WriteLine("public static partial class {0}{1}", Settings.ConstantPrefix, key); } sw.WriteLine("{"); sw.Indent(); } foreach (Function f in wrappers[key]) { if (!f.CLSCompliant) { sw.WriteLine("[System.CLSCompliant(false)]"); } sw.WriteLine("public static "); sw.Write(f); sw.WriteLine(); } if (((Settings.Compatibility & Settings.Legacy.NoSeparateFunctionNamespaces) == Settings.Legacy.None) && key != "Core") { sw.Unindent(); sw.WriteLine("}"); sw.WriteLine(); } } sw.Unindent(); sw.WriteLine("}"); }
public void WriteBindings(DelegateCollection delegates, FunctionCollection functions, EnumCollection enums) { if (!Directory.Exists(Settings.OutputPath)) Directory.CreateDirectory(Settings.OutputPath); using (BindStreamWriter sw = new BindStreamWriter(Path.Combine(Settings.OutputPath, enumsFile))) { sw.WriteLine("namespace {0}", Settings.OutputNamespace); sw.WriteLine("{"); sw.Indent(); if ((Settings.Compatibility & Settings.Legacy.NestedEnums) != Settings.Legacy.None) sw.WriteLine("public static partial class {0}", Settings.OutputClass); else sw.WriteLine("namespace {0}", Settings.EnumsNamespace); sw.WriteLine("{"); sw.Indent(); WriteEnums(sw, Bind.Structures.Enum.GLEnums); sw.Unindent(); sw.WriteLine("}"); sw.Unindent(); sw.WriteLine("}"); } using (BindStreamWriter sw = new BindStreamWriter(Path.Combine(Settings.OutputPath, delegatesFile))) { sw.WriteLine("namespace {0}", Settings.OutputNamespace); sw.WriteLine("{"); sw.Indent(); sw.WriteLine("using System;"); sw.WriteLine("using System.Runtime.InteropServices;"); sw.WriteLine("#pragma warning disable 0649"); WriteDelegates(sw, Bind.Structures.Delegate.Delegates); sw.WriteLine("#pragma warning restore 0649"); sw.Unindent(); sw.WriteLine("}"); } using (BindStreamWriter sw = new BindStreamWriter(Path.Combine(Settings.OutputPath, importsFile))) { sw.WriteLine("namespace {0}", Settings.OutputNamespace); sw.WriteLine("{"); sw.Indent(); //specWriter.WriteTypes(sw, Bind.Structures.Type.CSTypes); sw.WriteLine("using System;"); sw.WriteLine("using System.Runtime.InteropServices;"); WriteImports(sw, Bind.Structures.Delegate.Delegates); sw.Unindent(); sw.WriteLine("}"); } using (BindStreamWriter sw = new BindStreamWriter(Path.Combine(Settings.OutputPath, wrappersFile))) { sw.WriteLine("namespace {0}", Settings.OutputNamespace); sw.WriteLine("{"); sw.Indent(); sw.WriteLine("using System;"); sw.WriteLine("using System.Runtime.InteropServices;"); WriteWrappers(sw, Bind.Structures.Function.Wrappers, Bind.Structures.Type.CSTypes); sw.Unindent(); sw.WriteLine("}"); } }
public void WriteWrappers(BindStreamWriter sw, FunctionCollection wrappers, Dictionary<string, string> CSTypes) { Trace.WriteLine(String.Format("Writing wrappers to:\t{0}.{1}", Settings.OutputNamespace, Settings.OutputClass)); sw.WriteLine("#pragma warning disable 3019"); // CLSCompliant attribute sw.WriteLine("#pragma warning disable 1591"); // Missing doc comments sw.WriteLine("#pragma warning disable 1572"); // Wrong param comments sw.WriteLine("#pragma warning disable 1573"); // Missing param comments sw.WriteLine(); sw.WriteLine("partial class {0}", Settings.OutputClass); sw.WriteLine("{"); sw.Indent(); //sw.WriteLine("static {0}() {1} {2}", className, "{", "}"); // Static init in GLHelper.cs sw.WriteLine(); int current = 0; foreach (string key in wrappers.Keys) { if (((Settings.Compatibility & Settings.Legacy.NoSeparateFunctionNamespaces) == Settings.Legacy.None) && key != "Core") { if (!Char.IsDigit(key[0])) { sw.WriteLine("public static partial class {0}", key); } else { // Identifiers cannot start with a number: sw.WriteLine("public static partial class {0}{1}", Settings.ConstantPrefix, key); } sw.WriteLine("{"); sw.Indent(); } wrappers[key].Sort(); foreach (Function f in wrappers[key]) { if ((Settings.Compatibility & Settings.Legacy.NoDocumentation) == 0) { Console.WriteLine("Creating docs for #{0} ({1})", current++, f.Name); try { string path = Path.Combine(Settings.DocPath, Settings.FunctionPrefix + f.WrappedDelegate.Name + ".xml"); if (!File.Exists(path)) path = Path.Combine(Settings.DocPath, Settings.FunctionPrefix + f.TrimmedName + ".xml"); if (!File.Exists(path)) path = Path.Combine(Settings.DocPath, Settings.FunctionPrefix + f.TrimmedName.TrimEnd(numbers) + ".xml"); if (File.Exists(path)) { DocProcessor doc_processor = new DocProcessor(Path.Combine(Settings.DocPath, Settings.DocFile)); sw.WriteLine(doc_processor.ProcessFile(path)); } } catch (FileNotFoundException) { } } if (!f.CLSCompliant) { sw.WriteLine("[System.CLSCompliant(false)]"); } sw.WriteLine("[AutoGenerated(Category = \"{0}\", Version = \"{1}\", EntryPoint = \"{2}\")]", f.Category, f.Version, Settings.FunctionPrefix + f.WrappedDelegate.Name); sw.WriteLine("public static "); sw.Write(f); sw.WriteLine(); } if (((Settings.Compatibility & Settings.Legacy.NoSeparateFunctionNamespaces) == Settings.Legacy.None) && key != "Core") { sw.Unindent(); sw.WriteLine("}"); sw.WriteLine(); } } sw.Unindent(); sw.WriteLine("}"); }
private static int WriteWrapper(BindStreamWriter sw, int current, Function f) { if ((Settings.Compatibility & Settings.Legacy.NoDocumentation) == 0) { Console.WriteLine("Creating docs for #{0} ({1})", current++, f.Name); WriteDocumentation(sw, f); } WriteMethod(sw, f); return current; }
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(); if ((Settings.Compatibility & Settings.Legacy.NestedEnums) != Settings.Legacy.None) Trace.WriteLine(String.Format("Writing enums to:\t{0}.{1}.{2}", Settings.OutputNamespace, Settings.OutputClass, Settings.NestedEnumsClass)); else Trace.WriteLine(String.Format("Writing enums to:\t{0}", Settings.EnumsOutput)); if ((Settings.Compatibility & Settings.Legacy.ConstIntEnums) == Settings.Legacy.None) { if ((Settings.Compatibility & Settings.Legacy.NestedEnums) != Settings.Legacy.None && !String.IsNullOrEmpty(Settings.NestedEnumsClass)) { sw.WriteLine("public class Enums"); sw.WriteLine("{"); sw.Indent(); } foreach (Enum @enum in enums.Values) { sw.Write(@enum); sw.WriteLine(); } if ((Settings.Compatibility & Settings.Legacy.NestedEnums) != Settings.Legacy.None && !String.IsNullOrEmpty(Settings.NestedEnumsClass)) { sw.Unindent(); sw.WriteLine("}"); } } else { // Tao legacy mode: dump all enums as constants in GLClass. foreach (Constant c in enums[Settings.CompleteEnumName].ConstantCollection.Values) { // Print constants avoiding circular definitions if (c.Name != c.Value) { sw.WriteLine(String.Format( "public const int {0} = {2}((int){1});", c.Name.StartsWith(Settings.ConstantPrefix) ? c.Name : Settings.ConstantPrefix + c.Name, Char.IsDigit(c.Value[0]) ? c.Value : c.Value.StartsWith(Settings.ConstantPrefix) ? c.Value : Settings.ConstantPrefix + c.Value, c.Unchecked ? "unchecked" : "")); } else { } } } }
private static void WriteDocumentation(BindStreamWriter sw, Function f) { try { string path = Path.Combine(Settings.DocPath, Settings.FunctionPrefix + f.WrappedDelegate.Name + ".xml"); if (!File.Exists(path)) path = Path.Combine(Settings.DocPath, Settings.FunctionPrefix + f.TrimmedName + ".xml"); if (!File.Exists(path)) path = Path.Combine(Settings.DocPath, Settings.FunctionPrefix + f.TrimmedName.TrimEnd(numbers) + ".xml"); if (File.Exists(path)) { DocProcessor doc_processor = new DocProcessor(Path.Combine(Settings.DocPath, Settings.DocFile)); sw.WriteLine(doc_processor.ProcessFile(path)); } } catch (FileNotFoundException) { } }
public void WriteBindings(DelegateCollection delegates, FunctionCollection functions, EnumCollection enums) { Console.WriteLine("Writing bindings to {0}", Settings.OutputPath); if (!Directory.Exists(Settings.OutputPath)) { Directory.CreateDirectory(Settings.OutputPath); } string temp_enums_file = Path.GetTempFileName(); string temp_delegates_file = Path.GetTempFileName(); string temp_core_file = Path.GetTempFileName(); string temp_wrappers_file = Path.GetTempFileName(); // Enums using (BindStreamWriter sw = new BindStreamWriter(temp_enums_file)) { WriteLicense(sw); sw.WriteLine("using System;"); sw.WriteLine(); if ((Settings.Compatibility & Settings.Legacy.NestedEnums) != Settings.Legacy.None) { sw.WriteLine("namespace {0}", Settings.OutputNamespace); sw.WriteLine("{"); sw.Indent(); sw.WriteLine("static partial class {0}", Settings.OutputClass); } else { sw.WriteLine("namespace {0}", Settings.EnumsOutput); } sw.WriteLine("{"); sw.Indent(); WriteEnums(sw, Enum.GLEnums); sw.Unindent(); if ((Settings.Compatibility & Settings.Legacy.NestedEnums) != Settings.Legacy.None) { sw.WriteLine("}"); sw.Unindent(); } sw.WriteLine("}"); } // Delegates using (BindStreamWriter sw = new BindStreamWriter(temp_delegates_file)) { WriteLicense(sw); sw.WriteLine("namespace {0}", Settings.OutputNamespace); sw.WriteLine("{"); sw.Indent(); sw.WriteLine("using System;"); sw.WriteLine("using System.Runtime.InteropServices;"); sw.WriteLine("#pragma warning disable 0649"); WriteDelegates(sw, Delegate.Delegates); sw.Unindent(); sw.WriteLine("}"); } // Core using (BindStreamWriter sw = new BindStreamWriter(temp_core_file)) { WriteLicense(sw); sw.WriteLine("namespace {0}", Settings.OutputNamespace); sw.WriteLine("{"); sw.Indent(); //specWriter.WriteTypes(sw, Bind.Structures.Type.CSTypes); sw.WriteLine("using System;"); sw.WriteLine("using System.Runtime.InteropServices;"); WriteImports(sw, Delegate.Delegates); sw.Unindent(); sw.WriteLine("}"); } // Wrappers using (BindStreamWriter sw = new BindStreamWriter(temp_wrappers_file)) { WriteLicense(sw); sw.WriteLine("namespace {0}", Settings.OutputNamespace); sw.WriteLine("{"); sw.Indent(); sw.WriteLine("using System;"); sw.WriteLine("using System.Runtime.InteropServices;"); WriteWrappers(sw, Function.Wrappers, Type.CSTypes); sw.Unindent(); sw.WriteLine("}"); } string output_enums = Path.Combine(Settings.OutputPath, enumsFile); string output_delegates = Path.Combine(Settings.OutputPath, delegatesFile); string output_core = Path.Combine(Settings.OutputPath, importsFile); string output_wrappers = Path.Combine(Settings.OutputPath, wrappersFile); if (File.Exists(output_enums)) { File.Delete(output_enums); } if (File.Exists(output_delegates)) { File.Delete(output_delegates); } if (File.Exists(output_core)) { File.Delete(output_core); } if (File.Exists(output_wrappers)) { File.Delete(output_wrappers); } File.Move(temp_enums_file, output_enums); File.Move(temp_delegates_file, output_delegates); File.Move(temp_core_file, output_core); File.Move(temp_wrappers_file, output_wrappers); }
public void WriteLicense(BindStreamWriter sw) { sw.WriteLine(File.ReadAllText(Path.Combine(Settings.InputPath, Settings.LicenseFile))); sw.WriteLine(); }
public void WriteTypes(BindStreamWriter sw, Dictionary<string, string> CSTypes) { sw.WriteLine(); foreach (string s in CSTypes.Keys) { sw.WriteLine("using {0} = System.{1};", s, CSTypes[s]); } }
public void WriteWrappers(BindStreamWriter sw, FunctionCollection wrappers, Dictionary <string, string> CSTypes) { Trace.WriteLine(String.Format("Writing wrappers to:\t{0}.{1}", Settings.OutputNamespace, Settings.OutputClass)); sw.WriteLine("#pragma warning disable 3019"); // CLSCompliant attribute sw.WriteLine("#pragma warning disable 1591"); // Missing doc comments sw.WriteLine("#pragma warning disable 1572"); // Wrong param comments sw.WriteLine("#pragma warning disable 1573"); // Missing param comments sw.WriteLine(); sw.WriteLine("partial class {0}", Settings.OutputClass); sw.WriteLine("{"); sw.Indent(); //sw.WriteLine("static {0}() {1} {2}", className, "{", "}"); // Static init in GLHelper.cs sw.WriteLine(); int current = 0; foreach (string key in wrappers.Keys) { if (((Settings.Compatibility & Settings.Legacy.NoSeparateFunctionNamespaces) == Settings.Legacy.None) && key != "Core") { if (!Char.IsDigit(key[0])) { sw.WriteLine("public static partial class {0}", key); } else { // Identifiers cannot start with a number: sw.WriteLine("public static partial class {0}{1}", Settings.ConstantPrefix, key); } sw.WriteLine("{"); sw.Indent(); } wrappers[key].Sort(); foreach (Function f in wrappers[key]) { if ((Settings.Compatibility & Settings.Legacy.NoDocumentation) == 0) { Console.WriteLine("Creating docs for #{0} ({1})", current++, f.Name); try { string path = Path.Combine(Settings.DocPath, Settings.FunctionPrefix + f.WrappedDelegate.Name + ".xml"); if (!File.Exists(path)) { path = Path.Combine(Settings.DocPath, Settings.FunctionPrefix + f.TrimmedName + ".xml"); } if (!File.Exists(path)) { path = Path.Combine(Settings.DocPath, Settings.FunctionPrefix + f.TrimmedName.TrimEnd(numbers) + ".xml"); } if (File.Exists(path)) { DocProcessor doc_processor = new DocProcessor(Path.Combine(Settings.DocPath, Settings.DocFile)); sw.WriteLine(doc_processor.ProcessFile(path)); } } catch (FileNotFoundException) { } } if (!f.CLSCompliant) { sw.WriteLine("[System.CLSCompliant(false)]"); } sw.WriteLine("[AutoGenerated(Category = \"{0}\", Version = \"{1}\", EntryPoint = \"{2}\")]", f.Category, f.Version, Settings.FunctionPrefix + f.WrappedDelegate.Name); sw.WriteLine("public static "); sw.Write(f); sw.WriteLine(); } if (((Settings.Compatibility & Settings.Legacy.NoSeparateFunctionNamespaces) == Settings.Legacy.None) && key != "Core") { sw.Unindent(); sw.WriteLine("}"); sw.WriteLine(); } } sw.Unindent(); sw.WriteLine("}"); }
public void WriteBindings(DelegateCollection delegates, FunctionCollection functions, EnumCollection enums) { if (!Directory.Exists(Settings.OutputPath)) { Directory.CreateDirectory(Settings.OutputPath); } using (BindStreamWriter sw = new BindStreamWriter(Path.Combine(Settings.OutputPath, enumsFile))) { sw.WriteLine("namespace {0}", Settings.OutputNamespace); sw.WriteLine("{"); sw.Indent(); if ((Settings.Compatibility & Settings.Legacy.NestedEnums) != Settings.Legacy.None) { sw.WriteLine("public static partial class {0}", Settings.OutputClass); } else { sw.WriteLine("namespace {0}", Settings.EnumsNamespace); } sw.WriteLine("{"); sw.Indent(); WriteEnums(sw, Bind.Structures.Enum.GLEnums); sw.Unindent(); sw.WriteLine("}"); sw.Unindent(); sw.WriteLine("}"); } using (BindStreamWriter sw = new BindStreamWriter(Path.Combine(Settings.OutputPath, delegatesFile))) { sw.WriteLine("namespace {0}", Settings.OutputNamespace); sw.WriteLine("{"); sw.Indent(); sw.WriteLine("using System;"); sw.WriteLine("using System.Runtime.InteropServices;"); sw.WriteLine("#pragma warning disable 0649"); WriteDelegates(sw, Bind.Structures.Delegate.Delegates); sw.WriteLine("#pragma warning restore 0649"); sw.Unindent(); sw.WriteLine("}"); } using (BindStreamWriter sw = new BindStreamWriter(Path.Combine(Settings.OutputPath, importsFile))) { sw.WriteLine("namespace {0}", Settings.OutputNamespace); sw.WriteLine("{"); sw.Indent(); //specWriter.WriteTypes(sw, Bind.Structures.Type.CSTypes); sw.WriteLine("using System;"); sw.WriteLine("using System.Runtime.InteropServices;"); WriteImports(sw, Bind.Structures.Delegate.Delegates); sw.Unindent(); sw.WriteLine("}"); } using (BindStreamWriter sw = new BindStreamWriter(Path.Combine(Settings.OutputPath, wrappersFile))) { sw.WriteLine("namespace {0}", Settings.OutputNamespace); sw.WriteLine("{"); sw.Indent(); sw.WriteLine("using System;"); sw.WriteLine("using System.Runtime.InteropServices;"); WriteWrappers(sw, Bind.Structures.Function.Wrappers, Bind.Structures.Type.CSTypes); sw.Unindent(); sw.WriteLine("}"); } }