Browse Source

Added a bindings generator for the new parser.

pull/72/merge
triton 12 years ago
parent
commit
7c7ae1595d
  1. 56
      src/CppParser/Bindings/ParserGen.cs
  2. 54
      src/CppParser/Bindings/premake4.lua

56
src/CppParser/Bindings/ParserGen.cs

@ -0,0 +1,56 @@
using CppSharp.AST;
using CppSharp.Generators;
namespace CppSharp
{
class ParserGen : ILibrary
{
private readonly LanguageGeneratorKind Kind;
public ParserGen(LanguageGeneratorKind kind)
{
Kind = kind;
}
public void Setup(Driver driver)
{
var options = driver.Options;
options.LibraryName = "CppSharp";
options.GeneratorKind = Kind;
options.Headers.Add("AST.h");
options.Headers.Add("CppParser.h");
options.IncludeDirs.Add("../../../src/CppParser/");
options.Libraries.Add("CppSharp.CppParser.lib");
options.LibraryDirs.Add(".");
options.OutputDir = "../../../src/CppParser/Bindings/";
options.OutputDir += Kind.ToString();
options.GenerateLibraryNamespace = false;
//options.CheckSymbols = false;
}
public void SetupPasses(Driver driver)
{
}
public void Preprocess(Driver driver, Library lib)
{
lib.SetClassAsValueType("CppSharp::ParserOptions");
lib.SetClassAsValueType("CppSharp::ParserDiagnostic");
lib.SetClassAsValueType("CppSharp::ParserResult");
lib.RenameNamespace("CppSharp::CppParser", "Parser");
}
public void Postprocess(Library lib)
{
}
public static void Main(string[] args)
{
ConsoleDriver.Run(new ParserGen(LanguageGeneratorKind.CLI));
ConsoleDriver.Run(new ParserGen(LanguageGeneratorKind.CSharp));
}
}
}

54
src/CppParser/Bindings/premake4.lua

@ -0,0 +1,54 @@
project "CppSharp.Parser.Gen"
kind "ConsoleApp"
language "C#"
location "."
debugdir "."
files { "ParserGen.cs", "*.lua" }
links { "CppSharp.AST", "CppSharp.Generator", "CppSharp.Parser" }
project "CppSharp.Parser.CLI"
kind "SharedLib"
language "C++"
SetupNativeProject()
dependson { "CppSharp.CppParser" }
flags { common_flags, "Managed" }
configuration "vs*"
buildoptions { clang_msvc_flags }
configuration "*"
files
{
"CLI/AST.h",
"CLI/AST.cpp",
"CLI/**.h",
"CLI/**.cpp",
"**.lua"
}
includedirs { "../../../include/", "../../../src/CppParser/" }
configuration "*"
links { "CppSharp.CppParser" }
project "CppSharp.Parser.CSharp"
kind "SharedLib"
language "C#"
location "."
dependson { "CppSharp.CppParser" }
flags { common_flags, "Unsafe" }
files
{
"CSharp/**.cs",
"**.lua"
}
links { "CppSharp.Runtime" }
Loading…
Cancel
Save