diff --git a/src/CppParser/Bindings/CLI/CppParser.cpp b/src/CppParser/Bindings/CLI/CppParser.cpp index f6d82172..413cebb3 100644 --- a/src/CppParser/Bindings/CLI/CppParser.cpp +++ b/src/CppParser/Bindings/CLI/CppParser.cpp @@ -97,6 +97,25 @@ void CppSharp::Parser::ParserOptions::clearDefines() ((::CppSharp::CppParser::ParserOptions*)NativePtr)->clearDefines(); } +System::String^ CppSharp::Parser::ParserOptions::getUndefines(unsigned int i) +{ + auto __ret = ((::CppSharp::CppParser::ParserOptions*)NativePtr)->getUndefines(i); + if (__ret == nullptr) return nullptr; + return clix::marshalString(__ret); +} + +void CppSharp::Parser::ParserOptions::addUndefines(System::String^ s) +{ + auto _arg0 = clix::marshalString(s); + auto arg0 = _arg0.c_str(); + ((::CppSharp::CppParser::ParserOptions*)NativePtr)->addUndefines(arg0); +} + +void CppSharp::Parser::ParserOptions::clearUndefines() +{ + ((::CppSharp::CppParser::ParserOptions*)NativePtr)->clearUndefines(); +} + System::String^ CppSharp::Parser::ParserOptions::getLibraryDirs(unsigned int i) { auto __ret = ((::CppSharp::CppParser::ParserOptions*)NativePtr)->getLibraryDirs(i); @@ -164,6 +183,12 @@ unsigned int CppSharp::Parser::ParserOptions::DefinesCount::get() return __ret; } +unsigned int CppSharp::Parser::ParserOptions::UndefinesCount::get() +{ + auto __ret = ((::CppSharp::CppParser::ParserOptions*)NativePtr)->getUndefinesCount(); + return __ret; +} + unsigned int CppSharp::Parser::ParserOptions::LibraryDirsCount::get() { auto __ret = ((::CppSharp::CppParser::ParserOptions*)NativePtr)->getLibraryDirsCount(); diff --git a/src/CppParser/Bindings/CLI/CppParser.h b/src/CppParser/Bindings/CLI/CppParser.h index 93d9e360..4f737172 100644 --- a/src/CppParser/Bindings/CLI/CppParser.h +++ b/src/CppParser/Bindings/CLI/CppParser.h @@ -106,6 +106,11 @@ namespace CppSharp unsigned int get(); } + property unsigned int UndefinesCount + { + unsigned int get(); + } + property unsigned int LibraryDirsCount { unsigned int get(); @@ -189,6 +194,12 @@ namespace CppSharp void clearDefines(); + System::String^ getUndefines(unsigned int i); + + void addUndefines(System::String^ s); + + void clearUndefines(); + System::String^ getLibraryDirs(unsigned int i); void addLibraryDirs(System::String^ s); diff --git a/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppParser.cs b/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppParser.cs index 3b938122..834141a6 100644 --- a/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppParser.cs +++ b/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppParser.cs @@ -47,31 +47,31 @@ namespace CppSharp public unsafe partial class ParserOptions : IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 104)] + [StructLayout(LayoutKind.Explicit, Size = 116)] public partial struct Internal { - [FieldOffset(72)] + [FieldOffset(84)] public global::System.IntPtr ASTContext; - [FieldOffset(76)] + [FieldOffset(88)] public int ToolSetToUse; - [FieldOffset(92)] + [FieldOffset(104)] public CppSharp.Parser.AST.CppAbi Abi; - [FieldOffset(96)] + [FieldOffset(108)] public bool NoStandardIncludes; - [FieldOffset(97)] + [FieldOffset(109)] public bool NoBuiltinIncludes; - [FieldOffset(98)] + [FieldOffset(110)] public bool MicrosoftMode; - [FieldOffset(99)] + [FieldOffset(111)] public bool Verbose; - [FieldOffset(100)] + [FieldOffset(112)] public CppSharp.Parser.LanguageVersion LanguageVersion; [SuppressUnmanagedCodeSecurity] @@ -149,6 +149,21 @@ namespace CppSharp EntryPoint="_ZN8CppSharp9CppParser13ParserOptions12clearDefinesEv")] internal static extern void clearDefines_0(global::System.IntPtr instance); + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser13ParserOptions12getUndefinesEj")] + internal static extern global::System.IntPtr getUndefines_0(global::System.IntPtr instance, uint i); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser13ParserOptions12addUndefinesEPKc")] + internal static extern void addUndefines_0(global::System.IntPtr instance, global::System.IntPtr s); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser13ParserOptions14clearUndefinesEv")] + internal static extern void clearUndefines_0(global::System.IntPtr instance); + [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, EntryPoint="_ZN8CppSharp9CppParser13ParserOptions14getLibraryDirsEj")] @@ -194,6 +209,11 @@ namespace CppSharp EntryPoint="_ZN8CppSharp9CppParser13ParserOptions15getDefinesCountEv")] internal static extern uint getDefinesCount_0(global::System.IntPtr instance); + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser13ParserOptions17getUndefinesCountEv")] + internal static extern uint getUndefinesCount_0(global::System.IntPtr instance); + [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, EntryPoint="_ZN8CppSharp9CppParser13ParserOptions19getLibraryDirsCountEv")] @@ -219,7 +239,7 @@ namespace CppSharp private static global::System.IntPtr __CopyValue(ParserOptions.Internal native) { - var ret = Marshal.AllocHGlobal(104); + var ret = Marshal.AllocHGlobal(116); CppSharp.Parser.ParserOptions.Internal.cctor_2(ret, new global::System.IntPtr(&native)); return ret; } @@ -236,7 +256,7 @@ namespace CppSharp public ParserOptions() { - __Instance = Marshal.AllocHGlobal(104); + __Instance = Marshal.AllocHGlobal(116); Internal.ctor_0(__Instance); } @@ -328,6 +348,25 @@ namespace CppSharp Internal.clearDefines_0(__Instance); } + public string getUndefines(uint i) + { + var __ret = Internal.getUndefines_0(__Instance, i); + if (__ret == global::System.IntPtr.Zero) return null; + return Marshal.PtrToStringAnsi(__ret); + } + + public void addUndefines(string s) + { + var arg0 = Marshal.StringToHGlobalAnsi(s); + Internal.addUndefines_0(__Instance, arg0); + Marshal.FreeHGlobal(arg0); + } + + public void clearUndefines() + { + Internal.clearUndefines_0(__Instance); + } + public string getLibraryDirs(uint i) { var __ret = Internal.getLibraryDirs_0(__Instance, i); @@ -400,6 +439,15 @@ namespace CppSharp } } + public uint UndefinesCount + { + get + { + var __ret = Internal.getUndefinesCount_0(__Instance); + return __ret; + } + } + public uint LibraryDirsCount { get diff --git a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppParser.cs b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppParser.cs index 21565923..47f58d25 100644 --- a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppParser.cs +++ b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppParser.cs @@ -47,31 +47,31 @@ namespace CppSharp public unsafe partial class ParserOptions : IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 128)] + [StructLayout(LayoutKind.Explicit, Size = 140)] public partial struct Internal { - [FieldOffset(84)] + [FieldOffset(96)] public global::System.IntPtr ASTContext; - [FieldOffset(88)] + [FieldOffset(100)] public int ToolSetToUse; - [FieldOffset(116)] + [FieldOffset(128)] public CppSharp.Parser.AST.CppAbi Abi; - [FieldOffset(120)] + [FieldOffset(132)] public bool NoStandardIncludes; - [FieldOffset(121)] + [FieldOffset(133)] public bool NoBuiltinIncludes; - [FieldOffset(122)] + [FieldOffset(134)] public bool MicrosoftMode; - [FieldOffset(123)] + [FieldOffset(135)] public bool Verbose; - [FieldOffset(124)] + [FieldOffset(136)] public CppSharp.Parser.LanguageVersion LanguageVersion; [SuppressUnmanagedCodeSecurity] @@ -149,6 +149,21 @@ namespace CppSharp EntryPoint="?clearDefines@ParserOptions@CppParser@CppSharp@@QAEXXZ")] internal static extern void clearDefines_0(global::System.IntPtr instance); + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, + EntryPoint="?getUndefines@ParserOptions@CppParser@CppSharp@@QAEPBDI@Z")] + internal static extern global::System.IntPtr getUndefines_0(global::System.IntPtr instance, uint i); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, + EntryPoint="?addUndefines@ParserOptions@CppParser@CppSharp@@QAEXPBD@Z")] + internal static extern void addUndefines_0(global::System.IntPtr instance, global::System.IntPtr s); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, + EntryPoint="?clearUndefines@ParserOptions@CppParser@CppSharp@@QAEXXZ")] + internal static extern void clearUndefines_0(global::System.IntPtr instance); + [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, EntryPoint="?getLibraryDirs@ParserOptions@CppParser@CppSharp@@QAEPBDI@Z")] @@ -194,6 +209,11 @@ namespace CppSharp EntryPoint="?getDefinesCount@ParserOptions@CppParser@CppSharp@@QAEIXZ")] internal static extern uint getDefinesCount_0(global::System.IntPtr instance); + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, + EntryPoint="?getUndefinesCount@ParserOptions@CppParser@CppSharp@@QAEIXZ")] + internal static extern uint getUndefinesCount_0(global::System.IntPtr instance); + [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, EntryPoint="?getLibraryDirsCount@ParserOptions@CppParser@CppSharp@@QAEIXZ")] @@ -219,7 +239,7 @@ namespace CppSharp private static global::System.IntPtr __CopyValue(ParserOptions.Internal native) { - var ret = Marshal.AllocHGlobal(128); + var ret = Marshal.AllocHGlobal(140); CppSharp.Parser.ParserOptions.Internal.cctor_2(ret, new global::System.IntPtr(&native)); return ret; } @@ -236,7 +256,7 @@ namespace CppSharp public ParserOptions() { - __Instance = Marshal.AllocHGlobal(128); + __Instance = Marshal.AllocHGlobal(140); Internal.ctor_0(__Instance); } @@ -328,6 +348,25 @@ namespace CppSharp Internal.clearDefines_0(__Instance); } + public string getUndefines(uint i) + { + var __ret = Internal.getUndefines_0(__Instance, i); + if (__ret == global::System.IntPtr.Zero) return null; + return Marshal.PtrToStringAnsi(__ret); + } + + public void addUndefines(string s) + { + var arg0 = Marshal.StringToHGlobalAnsi(s); + Internal.addUndefines_0(__Instance, arg0); + Marshal.FreeHGlobal(arg0); + } + + public void clearUndefines() + { + Internal.clearUndefines_0(__Instance); + } + public string getLibraryDirs(uint i) { var __ret = Internal.getLibraryDirs_0(__Instance, i); @@ -400,6 +439,15 @@ namespace CppSharp } } + public uint UndefinesCount + { + get + { + var __ret = Internal.getUndefinesCount_0(__Instance); + return __ret; + } + } + public uint LibraryDirsCount { get diff --git a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppParser.cs b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppParser.cs index 937b4a29..288cd83d 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppParser.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppParser.cs @@ -47,31 +47,31 @@ namespace CppSharp public unsafe partial class ParserOptions : IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 168)] + [StructLayout(LayoutKind.Explicit, Size = 192)] public partial struct Internal { - [FieldOffset(128)] + [FieldOffset(152)] public global::System.IntPtr ASTContext; - [FieldOffset(136)] + [FieldOffset(160)] public int ToolSetToUse; - [FieldOffset(152)] + [FieldOffset(176)] public CppSharp.Parser.AST.CppAbi Abi; - [FieldOffset(156)] + [FieldOffset(180)] public bool NoStandardIncludes; - [FieldOffset(157)] + [FieldOffset(181)] public bool NoBuiltinIncludes; - [FieldOffset(158)] + [FieldOffset(182)] public bool MicrosoftMode; - [FieldOffset(159)] + [FieldOffset(183)] public bool Verbose; - [FieldOffset(160)] + [FieldOffset(184)] public CppSharp.Parser.LanguageVersion LanguageVersion; [SuppressUnmanagedCodeSecurity] @@ -149,6 +149,21 @@ namespace CppSharp EntryPoint="_ZN8CppSharp9CppParser13ParserOptions12clearDefinesEv")] internal static extern void clearDefines_0(global::System.IntPtr instance); + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser13ParserOptions12getUndefinesEj")] + internal static extern global::System.IntPtr getUndefines_0(global::System.IntPtr instance, uint i); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser13ParserOptions12addUndefinesEPKc")] + internal static extern void addUndefines_0(global::System.IntPtr instance, global::System.IntPtr s); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser13ParserOptions14clearUndefinesEv")] + internal static extern void clearUndefines_0(global::System.IntPtr instance); + [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, EntryPoint="_ZN8CppSharp9CppParser13ParserOptions14getLibraryDirsEj")] @@ -194,6 +209,11 @@ namespace CppSharp EntryPoint="_ZN8CppSharp9CppParser13ParserOptions15getDefinesCountEv")] internal static extern uint getDefinesCount_0(global::System.IntPtr instance); + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser13ParserOptions17getUndefinesCountEv")] + internal static extern uint getUndefinesCount_0(global::System.IntPtr instance); + [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, EntryPoint="_ZN8CppSharp9CppParser13ParserOptions19getLibraryDirsCountEv")] @@ -219,7 +239,7 @@ namespace CppSharp private static global::System.IntPtr __CopyValue(ParserOptions.Internal native) { - var ret = Marshal.AllocHGlobal(168); + var ret = Marshal.AllocHGlobal(192); CppSharp.Parser.ParserOptions.Internal.cctor_1(ret, new global::System.IntPtr(&native)); return ret; } @@ -236,7 +256,7 @@ namespace CppSharp public ParserOptions() { - __Instance = Marshal.AllocHGlobal(168); + __Instance = Marshal.AllocHGlobal(192); Internal.ctor_0(__Instance); } @@ -328,6 +348,25 @@ namespace CppSharp Internal.clearDefines_0(__Instance); } + public string getUndefines(uint i) + { + var __ret = Internal.getUndefines_0(__Instance, i); + if (__ret == global::System.IntPtr.Zero) return null; + return Marshal.PtrToStringAnsi(__ret); + } + + public void addUndefines(string s) + { + var arg0 = Marshal.StringToHGlobalAnsi(s); + Internal.addUndefines_0(__Instance, arg0); + Marshal.FreeHGlobal(arg0); + } + + public void clearUndefines() + { + Internal.clearUndefines_0(__Instance); + } + public string getLibraryDirs(uint i) { var __ret = Internal.getLibraryDirs_0(__Instance, i); @@ -400,6 +439,15 @@ namespace CppSharp } } + public uint UndefinesCount + { + get + { + var __ret = Internal.getUndefinesCount_0(__Instance); + return __ret; + } + } + public uint LibraryDirsCount { get diff --git a/src/CppParser/CppParser.cpp b/src/CppParser/CppParser.cpp index d7e4064f..9ceee95c 100644 --- a/src/CppParser/CppParser.cpp +++ b/src/CppParser/CppParser.cpp @@ -27,6 +27,7 @@ DEF_STRING(ParserOptions, FileName) DEF_VECTOR_STRING(ParserOptions, IncludeDirs) DEF_VECTOR_STRING(ParserOptions, SystemIncludeDirs) DEF_VECTOR_STRING(ParserOptions, Defines) +DEF_VECTOR_STRING(ParserOptions, Undefines) DEF_VECTOR_STRING(ParserOptions, LibraryDirs) DEF_STRING(ParserOptions, TargetTriple) DEF_STRING(ParserTargetInfo, ABI) diff --git a/src/CppParser/CppParser.h b/src/CppParser/CppParser.h index 12197633..114b3875 100644 --- a/src/CppParser/CppParser.h +++ b/src/CppParser/CppParser.h @@ -44,6 +44,7 @@ struct CS_API ParserOptions VECTOR_STRING(IncludeDirs) VECTOR_STRING(SystemIncludeDirs) VECTOR_STRING(Defines) + VECTOR_STRING(Undefines) VECTOR_STRING(LibraryDirs) CppSharp::CppParser::AST::ASTContext* ASTContext; diff --git a/src/CppParser/Parser.cpp b/src/CppParser/Parser.cpp index 6d05870a..5459628b 100644 --- a/src/CppParser/Parser.cpp +++ b/src/CppParser/Parser.cpp @@ -206,6 +206,12 @@ void Parser::SetupHeader() PPOpts.addMacroDef(define); } + for (unsigned I = 0, E = Opts->Undefines.size(); I != E; ++I) + { + const String& undefine = Opts->Undefines[I]; + PPOpts.addMacroUndef(undefine); + } + // Initialize the default platform headers. HSOpts.ResourceDir = GetClangResourceDir("."); HSOpts.AddPath(GetClangBuiltinIncludeDir(), clang::frontend::System, diff --git a/src/Generator/Driver.cs b/src/Generator/Driver.cs index ff02888a..8c8109aa 100644 --- a/src/Generator/Driver.cs +++ b/src/Generator/Driver.cs @@ -157,6 +157,12 @@ namespace CppSharp options.addDefines(define); } + for (uint i = 0; i < Options.UndefinesCount; ++i) + { + var define = Options.getUndefines(i); + options.addUndefines(define); + } + for (uint i = 0; i < Options.LibraryDirsCount; ++i) { var lib = Options.getLibraryDirs(i);