Browse Source

Updates the examples to the new interfaces.

pull/1/head
triton 13 years ago
parent
commit
9654661ec1
  1. 153
      examples/Flood/Flood.cs
  2. 86
      examples/SDL/SDL.cs

153
examples/Flood/Flood.cs

@ -1,4 +1,5 @@
using Cxxi.Generators; using System.Collections.Generic;
using Cxxi.Generators;
using Cxxi.Generators.CLI; using Cxxi.Generators.CLI;
using Cxxi.Passes; using Cxxi.Passes;
using Cxxi.Types; using Cxxi.Types;
@ -6,68 +7,116 @@ using Cxxi.Types;
namespace Cxxi.Libraries namespace Cxxi.Libraries
{ {
/// <summary> /// <summary>
/// Transform the Flush library declarations to something more .NET friendly. /// Transform the Flood library declarations to something more .NET friendly.
/// </summary> /// </summary>
class Flush : ILibrary class Flood : ILibrary
{ {
public void Preprocess(LibraryHelpers g) public void Preprocess(Library lib)
{ {
g.IgnoreModulessWithName("API.h"); lib.IgnoreModulessWithName("API.h");
g.IgnoreModulessWithName("Concurrency.h"); lib.IgnoreModulessWithName("Concurrency.h");
g.IgnoreModulessWithName("ConcurrentQueue.h"); lib.IgnoreModulessWithName("ConcurrentQueue.h");
g.IgnoreModulessWithName("Delegate.h"); lib.IgnoreModulessWithName("Delegate.h");
g.IgnoreModulessWithName("Event.h"); lib.IgnoreModulessWithName("Event.h");
g.IgnoreModulessWithName("Handle.h"); lib.IgnoreModulessWithName("Handle.h");
//g.IgnoreModulessWithName("Memory.h"); lib.IgnoreModulessWithName("Object.h");
g.IgnoreModulessWithName("Object.h"); lib.IgnoreModulessWithName("Pointers.h");
g.IgnoreModulessWithName("Pointers.h"); lib.IgnoreModulessWithName("References.h");
g.IgnoreModulessWithName("References.h"); lib.IgnoreModulessWithName("ReflectionHelpers.h");
//g.IgnoreModulessWithName("Reflection.h");
g.IgnoreModulessWithName("Serialization.h");
//Core //Core
g.SetClassAsValueType("StringHash"); lib.SetClassAsValueType("StringHash");
g.IgnoreClassWithName("RawStringCompare"); lib.IgnoreClassWithName("RawStringCompare");
g.IgnoreFunctionWithName("LogCreate"); lib.IgnoreFunctionWithName("LogCreate");
g.SetClassAsValueType("LogEntry"); lib.SetClassAsValueType("LogEntry");
g.SetClassAsValueType("FileWatchEvent"); lib.SetClassAsValueType("FileWatchEvent");
g.SetClassAsValueType("ExtensionMetadata"); lib.SetClassAsValueType("ExtensionMetadata");
g.IgnoreClassWithName("StreamFuncs"); lib.IgnoreFunctionWithName("AllocatorAllocate");
lib.IgnoreFunctionWithName("AllocatorDeallocate");
lib.SetNameOfFunction("AllocatorReset", "AllocatorResetMemory");
lib.IgnoreFunctionWithPattern(".+GetType");
lib.SetClassAsOpaque("FileStream");
lib.IgnoreClassWithName("StreamFuncs");
lib.IgnoreFunctionWithName("ClassGetIdMap");
lib.IgnoreFunctionWithName("ReflectionSetHandleContext");
lib.IgnoreFunctionWithName("SerializerCreateJSON");
lib.IgnoreFunctionWithName("SerializerCreateBinary");
// Math // Math
g.SetClassAsValueType("ColorP"); lib.SetClassAsValueType("ColorP");
g.SetClassAsValueType("Color"); lib.SetClassAsValueType("Color");
g.SetClassAsValueType("Vector2P"); lib.SetClassAsValueType("Vector2P");
g.SetClassAsValueType("Vector2"); lib.SetClassAsValueType("Vector2");
g.SetClassAsValueType("Vector2i"); lib.SetClassAsValueType("Vector2i");
g.SetClassAsValueType("Vector3P"); lib.SetClassAsValueType("Vector3P");
g.SetClassAsValueType("Vector3"); lib.SetClassAsValueType("Vector3");
g.SetClassAsValueType("Vector4"); lib.SetClassAsValueType("Vector4");
g.SetClassAsValueType("EulerAngles"); lib.SetClassAsValueType("EulerAngles");
g.SetClassAsValueType("QuaternionP"); lib.SetClassAsValueType("QuaternionP");
g.SetClassAsValueType("Quaternion"); lib.SetClassAsValueType("Quaternion");
lib.SetClassAsValueType("Matrix4x4");
// Resources // Resources
g.IgnoreFunctionWithName("ResourcesInitialize"); lib.IgnoreFunctionWithName("ResourcesInitialize");
g.IgnoreFunctionWithName("ResourcesDeinitialize"); lib.IgnoreFunctionWithName("ResourcesDeinitialize");
g.SetClassAsValueType("ResourceEvent"); lib.SetClassAsValueType("ResourceEvent");
g.SetClassAsValueType("ResourceLoadOption"); lib.SetClassAsValueType("ResourceLoadOption");
g.SetClassAsValueType("ResourceLoadOptions"); lib.SetClassAsValueType("ResourceLoadOptions");
lib.SetNameOfClassMethod("Texture", "allocate", "alloc");
// Engine // Engine
g.IgnoreClassMethodWithName("Engine", "addSubsystem"); lib.IgnoreClassMethodWithName("Engine", "addSubsystem");
}
public void Postprocess(Library lib)
{
} }
public void Postprocess(LibraryHelpers generator) public void Setup(DriverOptions options)
{ {
options.LibraryName = "Engine";
options.OutputNamespace = "Flood";
options.OutputDir = @"C:\Development\flood2\src\EngineManaged\Bindings";
options.IncludeDirs.Add(@"C:\Development\flood2\inc");
options.GeneratorKind = LanguageGeneratorKind.CPlusPlusCLI;
SetupHeaders(options.Headers);
}
public void SetupHeaders(List<string> headers)
{
var sources = new string[]
{
"Core/Log.h",
"Core/Extension.h",
"Core/Reflection.h",
"Core/Serialization.h",
"Resources/Resource.h",
"Resources/ResourceLoader.h",
"Resources/ResourceManager.h",
"Graphics/Graphics.h",
"Graphics/RenderDevice.h",
"Graphics/RenderBatch.h",
"Graphics/Texture.h",
"Engine/Engine.h"
};
headers.AddRange(sources);
} }
public void SetupPasses(PassBuilder p) public void SetupPasses(PassBuilder p)
{ {
p.RenameDeclsCase(RenameTargets.Function | RenameTargets.Method | RenameTargets.Field, const RenameTargets renameTargets = RenameTargets.Function
RenameCasePattern.UpperCamelCase); | RenameTargets.Method | RenameTargets.Field;
p.RenameDeclsCase(renameTargets, RenameCasePattern.UpperCamelCase);
p.FunctionToInstanceMethod();
p.FunctionToStaticMethod();
p.CheckDuplicateNames();
} }
public void GenerateStart(TextTemplate template) public void GenerateStart(TextTemplate template)
@ -90,7 +139,7 @@ namespace Cxxi.Libraries
} }
} }
namespace Types.Flush namespace Types.Flood
{ {
[TypeMap("RefPtr")] [TypeMap("RefPtr")]
public class RefPtr : TypeMap public class RefPtr : TypeMap
@ -127,15 +176,27 @@ namespace Cxxi.Libraries
public override string MarshalFromNative(MarshalContext ctx) public override string MarshalFromNative(MarshalContext ctx)
{ {
return string.Format("(HandleId){0}", ctx.ReturnVarName); return string.Format("{0}.id", ctx.ReturnVarName);
} }
} }
[TypeMap("Path")] [TypeMap("Path")]
[TypeMap("String")] [TypeMap("String")]
[TypeMap("StringWide")]
public class String : Cxxi.Types.Std.String public class String : Cxxi.Types.Std.String
{ {
} }
[TypeMap("StringWide")]
public class StringWide : Cxxi.Types.Std.WString
{
}
static class Program
{
public static void Main(string[] args)
{
Cxxi.Program.Run(new Libraries.Flood());
}
}
} }
} }

86
examples/SDL/SDL.cs

@ -1,4 +1,6 @@
using Cxxi.Generators; using System.Collections.Generic;
using Cxxi.Generators;
using Cxxi.Passes;
namespace Cxxi namespace Cxxi
{ {
@ -7,49 +9,53 @@ namespace Cxxi
/// </summary> /// </summary>
class SDL : ILibrary class SDL : ILibrary
{ {
public void Preprocess(LibraryHelpers g) public void Setup(DriverOptions options)
{ {
g.IgnoreEnumWithMatchingItem("SDL_FALSE"); options.LibraryName = "SDL";
g.IgnoreEnumWithMatchingItem("DUMMY_ENUM_VALUE"); options.Headers.Add("SDL/SDL.h");
options.IncludeDirs.Add(".");
g.SetNameOfEnumWithMatchingItem("SDL_SCANCODE_UNKNOWN", "ScanCode"); options.OutputDir = "SDL";
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("InputState", "SDL_RELEASED", "SDL_PRESSED");
g.GenerateEnumFromMacros("AlphaState", "SDL_ALPHA_(.*)"); public void Preprocess(Library lib)
{
lib.IgnoreEnumWithMatchingItem("SDL_FALSE");
lib.IgnoreEnumWithMatchingItem("DUMMY_ENUM_VALUE");
g.GenerateEnumFromMacros("HatState", "SDL_HAT_(.*)"); lib.SetNameOfEnumWithMatchingItem("SDL_SCANCODE_UNKNOWN", "ScanCode");
lib.SetNameOfEnumWithMatchingItem("SDLK_UNKNOWN", "Key");
lib.SetNameOfEnumWithMatchingItem("KMOD_NONE", "KeyModifier");
lib.SetNameOfEnumWithMatchingItem("SDL_LOG_CATEGORY_CUSTOM", "LogCategory");
g.IgnoreModulessWithName("SDL_atomic*"); lib.GenerateEnumFromMacros("InitFlags", "SDL_INIT_(.*)").SetFlags();
g.IgnoreModulessWithName("SDL_endian*"); lib.GenerateEnumFromMacros("Endianness", "SDL_(.*)_ENDIAN");
g.IgnoreModulessWithName("SDL_main*"); lib.GenerateEnumFromMacros("InputState", "SDL_RELEASED", "SDL_PRESSED");
g.IgnoreModulessWithName("SDL_mutex*"); lib.GenerateEnumFromMacros("AlphaState", "SDL_ALPHA_(.*)");
g.IgnoreModulessWithName("SDL_stdinc*"); lib.GenerateEnumFromMacros("HatState", "SDL_HAT_(.*)");
//g.IgnoreModuleWithName("SDL_error"); lib.IgnoreModulessWithName("SDL_atomic*");
lib.IgnoreModulessWithName("SDL_endian*");
lib.IgnoreModulessWithName("SDL_main*");
lib.IgnoreModulessWithName("SDL_mutex*");
lib.IgnoreModulessWithName("SDL_stdinc*");
//lib.IgnoreModuleWithName("SDL_error");
g.IgnoreEnumWithMatchingItem("SDL_ENOMEM"); lib.IgnoreEnumWithMatchingItem("SDL_ENOMEM");
g.IgnoreFunctionWithName("SDL_Error"); lib.IgnoreFunctionWithName("SDL_Error");
} }
public void Postprocess(LibraryHelpers generator) public void Postprocess(Library lib)
{ {
generator.SetNameOfEnumWithName("PIXELTYPE", "PixelType"); lib.SetNameOfEnumWithName("PIXELTYPE", "PixelType");
generator.SetNameOfEnumWithName("BITMAPORDER", "BitmapOrder"); lib.SetNameOfEnumWithName("BITMAPORDER", "BitmapOrder");
generator.SetNameOfEnumWithName("PACKEDORDER", "PackedOrder"); lib.SetNameOfEnumWithName("PACKEDORDER", "PackedOrder");
generator.SetNameOfEnumWithName("ARRAYORDER", "ArrayOrder"); lib.SetNameOfEnumWithName("ARRAYORDER", "ArrayOrder");
generator.SetNameOfEnumWithName("PACKEDLAYOUT", "PackedLayout"); lib.SetNameOfEnumWithName("PACKEDLAYOUT", "PackedLayout");
generator.SetNameOfEnumWithName("PIXELFORMAT", "PixelFormats"); lib.SetNameOfEnumWithName("PIXELFORMAT", "PixelFormats");
generator.SetNameOfEnumWithName("assert_state", "AssertState"); lib.SetNameOfEnumWithName("assert_state", "AssertState");
generator.SetClassBindName("assert_data", "AssertData"); lib.SetClassBindName("assert_data", "AssertData");
generator.SetNameOfEnumWithName("eventaction", "EventAction"); lib.SetNameOfEnumWithName("eventaction", "EventAction");
//lib.SetNameOfEnumWithName("LOG_CATEGORY", "LogCategory");
//gen.SetNameOfEnumWithName("LOG_CATEGORY", "LogCategory");
} }
public void SetupPasses(PassBuilder p) public void SetupPasses(PassBuilder p)
@ -63,12 +69,18 @@ namespace Cxxi
public void GenerateStart(TextTemplate template) public void GenerateStart(TextTemplate template)
{ {
throw new System.NotImplementedException();
} }
public void GenerateAfterNamespaces(TextTemplate template) public void GenerateAfterNamespaces(TextTemplate template)
{ {
throw new System.NotImplementedException(); }
static class Program
{
public static void Main(string[] args)
{
Cxxi.Program.Run(new SDL());
}
} }
} }
} }

Loading…
Cancel
Save