Advertisement
mattparks5855

C++ To C# ILibrary

May 20th, 2018
352
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.81 KB | None | 0 0
  1. using System.Xml.Linq;
  2. using CppSharp;
  3. using CppSharp.AST;
  4. using CppSharp.Generators;
  5. using CppSharp.Passes;
  6.  
  7. namespace FlounderSharp.CLI
  8. {
  9.     class Library : ILibrary
  10.     {
  11.         public Library()
  12.         {
  13.         }
  14.  
  15.         /// <summary>
  16.         /// Sets the driver options. First method called.
  17.         /// </summary>
  18.         /// <param name="driver"></param>
  19.         public void Setup(Driver driver)
  20.         {
  21.             // Sets up the parser.
  22.             var parserOptions = driver.ParserOptions;
  23.             parserOptions.AddArguments("-fcxx-exceptions");
  24.             parserOptions.EnableRTTI = true;
  25.             parserOptions.UnityBuild = true;
  26.             parserOptions.Verbose = true;
  27.  
  28.             parserOptions.Defines.Add("FL_EXPORT=__attribute__ ((visibility (\"default\")))");
  29.             parserOptions.Defines.Add("FL_HIDDEN=__attribute__ ((visibility (\"hidden\")))");
  30.  
  31.             // Sets up other options.
  32.             var options = driver.Options;
  33.             options.OutputDir = @"C:\Users\mattp\Documents\Workspace\TestSharp\TestSharp";
  34.             options.GeneratorKind = GeneratorKind.CSharp;
  35.             options.GenerateSingleCSharpFile = true;
  36.             options.MarshalCharAsManagedChar = true;
  37.             options.GenerateFinalizers = false;
  38.             options.CheckSymbols = false;
  39.             options.Verbose = true;
  40.  
  41.             // Creates a new module.
  42.             var module = options.AddModule("TestSharp");
  43.             module.SharedLibraryName = "Test";
  44.             module.OutputNamespace = "";
  45.             module.IncludeDirs.Add(@"C:\Users\mattp\Documents\Workspace\TestSharp\Test\include");
  46.             module.Headers.Add(@"Test.h");
  47.             module.LibraryDirs.Add(@"C:\Users\mattp\Documents\Workspace\TestSharp\Test\lib");
  48.             module.Libraries.Add("Test.lib");
  49.         }
  50.  
  51.         /// <summary>
  52.         /// Setup passes. Second method called.
  53.         /// </summary>
  54.         /// <param name="driver"></param>
  55.         public void SetupPasses(Driver driver)
  56.         {
  57.             driver.Context.TranslationUnitPasses.RenameDeclsUpperCase(RenameTargets.Any);
  58.             driver.Context.TranslationUnitPasses.AddPass(new FunctionToInstanceMethodPass());
  59.         }
  60.  
  61.         /// <summary>
  62.         /// Do transformations that should happen before any passes are processed.
  63.         /// </summary>
  64.         /// <param name="driver"></param>
  65.         /// <param name="ctx"></param>
  66.         public void Preprocess(Driver driver, ASTContext ctx)
  67.         {
  68.         }
  69.  
  70.         /// <summary>
  71.         /// Do transformations that should happen after all passes are processed.
  72.         /// </summary>
  73.         /// <param name="driver"></param>
  74.         /// <param name="ctx"></param>
  75.         public void Postprocess(Driver driver, ASTContext ctx)
  76.         {
  77.         }
  78.     }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement