Browse Source

Factor out the SDL-related code to separate file.

pull/1/head
triton 13 years ago
parent
commit
dee42a91a8
  1. 16
      src/Generator/Generator.cs
  2. 58
      src/Generator/Program.cs

16
src/Generator/Generator.cs

@ -8,14 +8,14 @@ using Cxxi.Templates; @@ -8,14 +8,14 @@ using Cxxi.Templates;
public partial class Generator
{
public List<Transformation> Transformations { get; set; }
public List<ModuleTransform> Transformations { get; set; }
Library Library;
Options Options;
public Generator(Library library, Options options)
{
Transformations = new List<Transformation>();
Transformations = new List<ModuleTransform>();
Library = library;
Options = options;
@ -98,7 +98,7 @@ public partial class Generator @@ -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 @@ -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 @@ -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)

58
src/Generator/Program.cs

@ -81,8 +81,12 @@ class Program @@ -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 @@ -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 @@ -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 @@ -167,7 +125,7 @@ class Program
library = new Library(options.OutputNamespace);
ParseNativeHeaders();
ParseCode();
GenerateCode();
}

Loading…
Cancel
Save