Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Xml.Linq;
- using CppSharp;
- using CppSharp.AST;
- using CppSharp.Generators;
- using CppSharp.Passes;
- namespace FlounderSharp.CLI
- {
- class Library : ILibrary
- {
- public Library()
- {
- }
- /// <summary>
- /// Sets the driver options. First method called.
- /// </summary>
- /// <param name="driver"></param>
- public void Setup(Driver driver)
- {
- // Sets up the parser.
- var parserOptions = driver.ParserOptions;
- parserOptions.AddArguments("-fcxx-exceptions");
- parserOptions.EnableRTTI = true;
- parserOptions.UnityBuild = true;
- parserOptions.Verbose = true;
- parserOptions.Defines.Add("FL_EXPORT=__attribute__ ((visibility (\"default\")))");
- parserOptions.Defines.Add("FL_HIDDEN=__attribute__ ((visibility (\"hidden\")))");
- // Sets up other options.
- var options = driver.Options;
- options.OutputDir = @"C:\Users\mattp\Documents\Workspace\TestSharp\TestSharp";
- options.GeneratorKind = GeneratorKind.CSharp;
- options.GenerateSingleCSharpFile = true;
- options.MarshalCharAsManagedChar = true;
- options.GenerateFinalizers = false;
- options.CheckSymbols = false;
- options.Verbose = true;
- // Creates a new module.
- var module = options.AddModule("TestSharp");
- module.SharedLibraryName = "Test";
- module.OutputNamespace = "";
- module.IncludeDirs.Add(@"C:\Users\mattp\Documents\Workspace\TestSharp\Test\include");
- module.Headers.Add(@"Test.h");
- module.LibraryDirs.Add(@"C:\Users\mattp\Documents\Workspace\TestSharp\Test\lib");
- module.Libraries.Add("Test.lib");
- }
- /// <summary>
- /// Setup passes. Second method called.
- /// </summary>
- /// <param name="driver"></param>
- public void SetupPasses(Driver driver)
- {
- driver.Context.TranslationUnitPasses.RenameDeclsUpperCase(RenameTargets.Any);
- driver.Context.TranslationUnitPasses.AddPass(new FunctionToInstanceMethodPass());
- }
- /// <summary>
- /// Do transformations that should happen before any passes are processed.
- /// </summary>
- /// <param name="driver"></param>
- /// <param name="ctx"></param>
- public void Preprocess(Driver driver, ASTContext ctx)
- {
- }
- /// <summary>
- /// Do transformations that should happen after all passes are processed.
- /// </summary>
- /// <param name="driver"></param>
- /// <param name="ctx"></param>
- public void Postprocess(Driver driver, ASTContext ctx)
- {
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement