From dee42a91a805ee8fe8cf01a6118e164d70e0f579 Mon Sep 17 00:00:00 2001 From: triton Date: Wed, 5 Sep 2012 22:17:08 +0100 Subject: [PATCH] Factor out the SDL-related code to separate file. --- src/Generator/Generator.cs | 16 +++++------ src/Generator/Program.cs | 58 ++++++-------------------------------- 2 files changed, 15 insertions(+), 59 deletions(-) diff --git a/src/Generator/Generator.cs b/src/Generator/Generator.cs index b47328cd..52e44804 100644 --- a/src/Generator/Generator.cs +++ b/src/Generator/Generator.cs @@ -8,14 +8,14 @@ using Cxxi.Templates; public partial class Generator { - public List Transformations { get; set; } + public List Transformations { get; set; } Library Library; Options Options; public Generator(Library library, Options options) { - Transformations = new List(); + Transformations = new List(); Library = library; Options = options; @@ -98,7 +98,7 @@ public partial class Generator // Process everything in the global namespace for now. foreach (var module in Library.Modules) { - ProcessNamespace(module.Global); + ProcessNamespace(module); } } @@ -117,15 +117,13 @@ public partial class Generator // Process everything in the global namespace for now. foreach (var module in Library.Modules) { - Namespace global = module.Global; - - foreach (Enumeration @enum in global.Enums) + foreach (Enumeration @enum in module.Enums) TransformEnum(@enum); - foreach (Function function in global.Functions) + foreach (Function function in module.Functions) TransformFunction(function); - foreach (Class @class in global.Classes) + foreach (Class @class in module.Classes) TransformClass(@class); } } @@ -133,7 +131,7 @@ public partial class Generator void TransformType(Declaration type) { foreach (var transform in Transformations) - transform.ProcessType(type); + transform.ProcessDeclaration(type); } void TransformClass(Class @class) diff --git a/src/Generator/Program.cs b/src/Generator/Program.cs index e32ae9ae..4a569039 100644 --- a/src/Generator/Program.cs +++ b/src/Generator/Program.cs @@ -81,8 +81,12 @@ class Program } } - public void ParseNativeHeaders() + public void ParseCode() { + var Opts = new ParserOptions(); + Opts.Library = library; + Opts.Verbose = false; + Console.WriteLine("Parsing native code..."); foreach (var file in options.Headers) @@ -99,10 +103,8 @@ class Program continue; } - var Opts = new ParserOptions(); - Opts.FileName = path; - Opts.Library = library; - Opts.Verbose = false; + var module = new Module(path); + Opts.FileName = path; if (!ClangParser.Parse(Opts)) { @@ -114,50 +116,6 @@ class Program } } - void TransformSDL(Generator g) - { - g.IgnoreEnumWithMatchingItem("SDL_FALSE"); - g.IgnoreEnumWithMatchingItem("DUMMY_ENUM_VALUE"); - g.IgnoreEnumWithMatchingItem("SDL_ENOMEM"); - - g.SetNameOfEnumWithMatchingItem("SDL_SCANCODE_UNKNOWN", "ScanCode"); - g.SetNameOfEnumWithMatchingItem("SDLK_UNKNOWN", "Key"); - g.SetNameOfEnumWithMatchingItem("KMOD_NONE", "KeyModifier"); - g.SetNameOfEnumWithMatchingItem("SDL_LOG_CATEGORY_CUSTOM", "LogCategory"); - - g.GenerateEnumFromMacros("InitFlags", "SDL_INIT_(.*)").SetFlags(); - g.GenerateEnumFromMacros("Endianness", "SDL_(.*)_ENDIAN"); - g.GenerateEnumFromMacros("KeyState", "SDL_RELEASED", "SDL_PRESSED"); - - g.GenerateEnumFromMacros("AlphaState", "SDL_ALPHA_(.*)"); - - g.GenerateEnumFromMacros("HatState", "SDL_HAT_(.*)"); - - g.IgnoreModuleWithName("SDL_atomic*"); - g.IgnoreModuleWithName("SDL_endian*"); - g.IgnoreModuleWithName("SDL_main*"); - g.IgnoreModuleWithName("SDL_mutex*"); - g.IgnoreModuleWithName("SDL_stdinc*"); - - g.RemovePrefix("SDL_"); - g.RemovePrefix("SCANCODE_"); - g.RemovePrefix("SDLK_"); - g.RemovePrefix("KMOD_"); - g.RemovePrefix("LOG_CATEGORY_"); - - g.Process(); - - g.FindEnum("PIXELTYPE").Name = "PixelType"; - g.FindEnum("BITMAPORDER").Name = "BitmapOrder"; - g.FindEnum("PACKEDORDER").Name = "PackedOrder"; - g.FindEnum("ARRAYORDER").Name = "ArrayOrder"; - g.FindEnum("PACKEDLAYOUT").Name = "PackedLayout"; - g.FindEnum("PIXELFORMAT").Name = "PixelFormat"; - g.FindEnum("assert_state").Name = "AssertState"; - - //gen.FindEnum("LOG_CATEGORY").Name = "LogCategory"; - } - public void Run(String[] args) { options = new Options(); @@ -167,7 +125,7 @@ class Program library = new Library(options.OutputNamespace); - ParseNativeHeaders(); + ParseCode(); GenerateCode(); }