diff --git a/build/Parser.lua b/build/Parser.lua index 6f0c138c..4b445117 100644 --- a/build/Parser.lua +++ b/build/Parser.lua @@ -11,9 +11,5 @@ function SetupCSharpParser() end function SetupParser() - if string.match(action, "vs*") and os.is_windows() then - SetupCLIParser() - else - SetupCSharpParser() - end + SetupCSharpParser() end \ No newline at end of file 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 03e7768f..504fea30 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 @@ -1,8 +1,6 @@ //---------------------------------------------------------------------------- -// // This is autogenerated code by CppSharp. // Do not edit this file or all your changes will be lost after re-generation. -// //---------------------------------------------------------------------------- using System; using System.Runtime.InteropServices; @@ -47,9 +45,352 @@ namespace CppSharp User = 4 } + public unsafe abstract partial class AbstractModule : IDisposable + { + [StructLayout(LayoutKind.Explicit, Size = 52)] + public partial struct Internal + { + [FieldOffset(0)] + public global::System.IntPtr vfptr0; + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModuleC2Ev")] + internal static extern void ctor_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModuleC2ERKS1_")] + internal static extern void cctor_1(global::System.IntPtr instance, global::System.IntPtr _0); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule14getIncludeDirsEj")] + internal static extern global::System.IntPtr getIncludeDirs_0(global::System.IntPtr instance, uint i); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule14addIncludeDirsEPKc")] + internal static extern void addIncludeDirs_0(global::System.IntPtr instance, global::System.IntPtr s); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule16clearIncludeDirsEv")] + internal static extern void clearIncludeDirs_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule14getLibraryDirsEj")] + internal static extern global::System.IntPtr getLibraryDirs_0(global::System.IntPtr instance, uint i); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule14addLibraryDirsEPKc")] + internal static extern void addLibraryDirs_0(global::System.IntPtr instance, global::System.IntPtr s); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule16clearLibraryDirsEv")] + internal static extern void clearLibraryDirs_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule10getDefinesEj")] + internal static extern global::System.IntPtr getDefines_0(global::System.IntPtr instance, uint i); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule10addDefinesEPKc")] + internal static extern void addDefines_0(global::System.IntPtr instance, global::System.IntPtr s); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule12clearDefinesEv")] + internal static extern void clearDefines_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule12getUndefinesEj")] + 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="_ZN8CppSharp9CppParser14AbstractModule12addUndefinesEPKc")] + 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="_ZN8CppSharp9CppParser14AbstractModule14clearUndefinesEv")] + internal static extern void clearUndefines_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule19getIncludeDirsCountEv")] + internal static extern uint getIncludeDirsCount_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule19getLibraryDirsCountEv")] + internal static extern uint getLibraryDirsCount_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule15getDefinesCountEv")] + internal static extern uint getDefinesCount_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule17getUndefinesCountEv")] + internal static extern uint getUndefinesCount_0(global::System.IntPtr instance); + } + + public global::System.IntPtr __Instance { get; protected set; } + + protected int __PointerAdjustment; + public static readonly System.Collections.Concurrent.ConcurrentDictionary NativeToManagedMap = new System.Collections.Concurrent.ConcurrentDictionary(); + protected void*[] __OriginalVTables; + + protected bool __ownsNativeInstance; + + public static AbstractModule __CreateInstance(global::System.IntPtr native, bool skipVTables = false) + { + return new AbstractModuleInternal(native.ToPointer(), skipVTables); + } + + public static AbstractModule __CreateInstance(AbstractModule.Internal native, bool skipVTables = false) + { + return new AbstractModuleInternal(native, skipVTables); + } + + protected AbstractModule(void* native, bool skipVTables = false) + { + if (native == null) + return; + __Instance = new global::System.IntPtr(native); + if (skipVTables) + __OriginalVTables = new void*[] { ((Internal*) native)->vfptr0.ToPointer() }; + else + SetupVTables(true); + } + + protected AbstractModule() + { + __Instance = Marshal.AllocHGlobal(52); + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + Internal.ctor_0((__Instance + __PointerAdjustment)); + SetupVTables(GetType().FullName == "CppSharp.CppParser.dll.CppSharp.Parser.AbstractModule"); + } + + protected AbstractModule(CppSharp.Parser.AbstractModule _0) + { + __Instance = Marshal.AllocHGlobal(52); + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + if (ReferenceEquals(_0, null)) + throw new global::System.ArgumentNullException("_0", "Cannot be null because it is a C++ reference (&)."); + var arg0 = _0.__Instance; + Internal.cctor_1((__Instance + __PointerAdjustment), arg0); + SetupVTables(GetType().FullName == "CppSharp.CppParser.dll.CppSharp.Parser.AbstractModule"); + } + + public void Dispose() + { + Dispose(disposing: true); + } + + protected virtual void Dispose(bool disposing) + { + CppSharp.Parser.AbstractModule __dummy; + NativeToManagedMap.TryRemove(__Instance, out __dummy); + ((Internal*) __Instance)->vfptr0 = new global::System.IntPtr(__OriginalVTables[0]); + if (__ownsNativeInstance) + Marshal.FreeHGlobal(__Instance); + } + + public string getIncludeDirs(uint i) + { + var __ret = Internal.getIncludeDirs_0((__Instance + __PointerAdjustment), i); + return Marshal.PtrToStringAnsi(__ret); + } + + public void addIncludeDirs(string s) + { + var arg0 = Marshal.StringToHGlobalAnsi(s); + Internal.addIncludeDirs_0((__Instance + __PointerAdjustment), arg0); + Marshal.FreeHGlobal(arg0); + } + + public void clearIncludeDirs() + { + Internal.clearIncludeDirs_0((__Instance + __PointerAdjustment)); + } + + public string getLibraryDirs(uint i) + { + var __ret = Internal.getLibraryDirs_0((__Instance + __PointerAdjustment), i); + return Marshal.PtrToStringAnsi(__ret); + } + + public void addLibraryDirs(string s) + { + var arg0 = Marshal.StringToHGlobalAnsi(s); + Internal.addLibraryDirs_0((__Instance + __PointerAdjustment), arg0); + Marshal.FreeHGlobal(arg0); + } + + public void clearLibraryDirs() + { + Internal.clearLibraryDirs_0((__Instance + __PointerAdjustment)); + } + + public string getDefines(uint i) + { + var __ret = Internal.getDefines_0((__Instance + __PointerAdjustment), i); + return Marshal.PtrToStringAnsi(__ret); + } + + public void addDefines(string s) + { + var arg0 = Marshal.StringToHGlobalAnsi(s); + Internal.addDefines_0((__Instance + __PointerAdjustment), arg0); + Marshal.FreeHGlobal(arg0); + } + + public void clearDefines() + { + Internal.clearDefines_0((__Instance + __PointerAdjustment)); + } + + public string getUndefines(uint i) + { + var __ret = Internal.getUndefines_0((__Instance + __PointerAdjustment), i); + return Marshal.PtrToStringAnsi(__ret); + } + + public void addUndefines(string s) + { + var arg0 = Marshal.StringToHGlobalAnsi(s); + Internal.addUndefines_0((__Instance + __PointerAdjustment), arg0); + Marshal.FreeHGlobal(arg0); + } + + public void clearUndefines() + { + Internal.clearUndefines_0((__Instance + __PointerAdjustment)); + } + + public uint IncludeDirsCount + { + get + { + var __ret = Internal.getIncludeDirsCount_0((__Instance + __PointerAdjustment)); + return __ret; + } + } + + public uint LibraryDirsCount + { + get + { + var __ret = Internal.getLibraryDirsCount_0((__Instance + __PointerAdjustment)); + return __ret; + } + } + + public uint DefinesCount + { + get + { + var __ret = Internal.getDefinesCount_0((__Instance + __PointerAdjustment)); + return __ret; + } + } + + public uint UndefinesCount + { + get + { + var __ret = Internal.getUndefinesCount_0((__Instance + __PointerAdjustment)); + return __ret; + } + } + + #region Virtual table interop + + // virtual ~AbstractModule() = 0 + private static Delegates.Action_IntPtr _dtor_0DelegateInstance; + + private static void _dtor_0DelegateHook(global::System.IntPtr instance) + { + if (!NativeToManagedMap.ContainsKey(instance)) + throw new global::System.Exception("No managed instance was found"); + + var __target = (AbstractModule) NativeToManagedMap[instance]; + if (__target.__ownsNativeInstance) + __target.SetupVTables(); + __target.Dispose(false); + } + + private static void*[] __ManagedVTables; + private static void*[] __ManagedVTablesDtorOnly; + private static void*[] _Thunks; + + private void SetupVTables(bool destructorOnly = false) + { + if (__OriginalVTables != null) + return; + var native = (Internal*) __Instance.ToPointer(); + + __OriginalVTables = new void*[] { ((Internal*) native)->vfptr0.ToPointer() }; + + if (_Thunks == null) + { + _Thunks = new void*[1]; + _dtor_0DelegateInstance += _dtor_0DelegateHook; + _Thunks[0] = Marshal.GetFunctionPointerForDelegate(_dtor_0DelegateInstance).ToPointer(); + } + + if (destructorOnly) + { + if (__ManagedVTablesDtorOnly == null) + { + __ManagedVTablesDtorOnly = new void*[1]; + var vtptr = Marshal.AllocHGlobal(4 * 4); + var vfptr0 = vtptr + 2 * 4; + __ManagedVTablesDtorOnly[0] = vfptr0.ToPointer(); + *(void**)(vfptr0 + -8) = *(void**)(native->vfptr0 + -8); + *(void**)(vfptr0 + -4) = *(void**)(native->vfptr0 + -4); + *(void**)(vfptr0 + 0) = *(void**)(native->vfptr0 + 0); + *(void**)(vfptr0 + 4) = _Thunks[0]; + } + + native->vfptr0 = new IntPtr(__ManagedVTablesDtorOnly[0]); + } + else + { + if (__ManagedVTables == null) + { + __ManagedVTables = new void*[1]; + var vtptr = Marshal.AllocHGlobal(4 * 4); + var vfptr0 = vtptr + 2 * 4; + __ManagedVTables[0] = vfptr0.ToPointer(); + *(void**)(vfptr0 + -8) = *(void**)(native->vfptr0 + -8); + *(void**)(vfptr0 + -4) = *(void**)(native->vfptr0 + -4); + *(void**)(vfptr0 + 0) = *(void**)(native->vfptr0 + 0); + *(void**)(vfptr0 + 4) = _Thunks[0]; + } + + native->vfptr0 = new IntPtr(__ManagedVTables[0]); + } + } + + #endregion + } + public unsafe partial class ParserOptions : IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 120)] + [StructLayout(LayoutKind.Explicit, Size = 124)] public partial struct Internal { [FieldOffset(84)] @@ -79,6 +420,9 @@ namespace CppSharp [FieldOffset(116)] public global::System.IntPtr TargetInfo; + [FieldOffset(120)] + public global::System.IntPtr Module; + [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, EntryPoint="_ZN8CppSharp9CppParser13ParserOptionsC2Ev")] @@ -255,7 +599,7 @@ namespace CppSharp private static void* __CopyValue(ParserOptions.Internal native) { - var ret = Marshal.AllocHGlobal(120); + var ret = Marshal.AllocHGlobal(124); CppSharp.Parser.ParserOptions.Internal.cctor_2(ret, new global::System.IntPtr(&native)); return ret.ToPointer(); } @@ -276,7 +620,7 @@ namespace CppSharp public ParserOptions() { - __Instance = Marshal.AllocHGlobal(120); + __Instance = Marshal.AllocHGlobal(124); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; Internal.ctor_0((__Instance + __PointerAdjustment)); @@ -284,7 +628,7 @@ namespace CppSharp public ParserOptions(CppSharp.Parser.ParserOptions _0) { - __Instance = Marshal.AllocHGlobal(120); + __Instance = Marshal.AllocHGlobal(124); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; if (ReferenceEquals(_0, null)) @@ -627,6 +971,24 @@ namespace CppSharp ((Internal*) __Instance)->TargetInfo = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; } } + + public CppSharp.Parser.AbstractModule Module + { + get + { + CppSharp.Parser.AbstractModule __result0; + if (((Internal*) __Instance)->Module == IntPtr.Zero) __result0 = null; + else if (CppSharp.Parser.AbstractModule.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Module)) + __result0 = (CppSharp.Parser.AbstractModule) CppSharp.Parser.AbstractModule.NativeToManagedMap[((Internal*) __Instance)->Module]; + else CppSharp.Parser.AbstractModule.NativeToManagedMap[((Internal*) __Instance)->Module] = __result0 = (CppSharp.Parser.AbstractModule) CppSharp.Parser.AbstractModule.__CreateInstance(((Internal*) __Instance)->Module); + return __result0; + } + + set + { + ((Internal*) __Instance)->Module = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + } + } } public unsafe partial class ParserDiagnostic : IDisposable @@ -1156,5 +1518,30 @@ namespace CppSharp return __result0; } } + + internal unsafe partial class AbstractModuleInternal : CppSharp.Parser.AbstractModule, IDisposable + { + private static void* __CopyValue(AbstractModule.Internal native) + { + var ret = Marshal.AllocHGlobal(52); + *(AbstractModule.Internal*) ret = native; + return ret.ToPointer(); + } + + internal AbstractModuleInternal(AbstractModule.Internal native, bool skipVTables = false) + : this(__CopyValue(native), skipVTables) + { + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + } + + internal AbstractModuleInternal(void* native, bool skipVTables = false) + : base((void*) null) + { + __PointerAdjustment = 0; + __Instance = new global::System.IntPtr(native); + __OriginalVTables = new void*[] { ((Internal*) native)->vfptr0.ToPointer() }; + } + } } } diff --git a/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/Target.cs b/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/Target.cs index 918b4984..743700f7 100644 --- a/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/Target.cs +++ b/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/Target.cs @@ -1,8 +1,6 @@ //---------------------------------------------------------------------------- -// // This is autogenerated code by CppSharp. // Do not edit this file or all your changes will be lost after re-generation. -// //---------------------------------------------------------------------------- using System; using System.Runtime.InteropServices; @@ -756,3 +754,9 @@ namespace CppSharp } } } + +namespace Delegates +{ + [SuppressUnmanagedCodeSecurity, UnmanagedFunctionPointerAttribute(global::System.Runtime.InteropServices.CallingConvention.Cdecl)] + public unsafe delegate void Action_IntPtr(global::System.IntPtr instance); +} 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 52bbb48a..b56253bc 100644 --- a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppParser.cs +++ b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppParser.cs @@ -1,8 +1,6 @@ //---------------------------------------------------------------------------- -// // This is autogenerated code by CppSharp. // Do not edit this file or all your changes will be lost after re-generation. -// //---------------------------------------------------------------------------- using System; using System.Runtime.InteropServices; @@ -47,9 +45,344 @@ namespace CppSharp User = 4 } + public unsafe abstract partial class AbstractModule : IDisposable + { + [StructLayout(LayoutKind.Explicit, Size = 52)] + public partial struct Internal + { + [FieldOffset(0)] + public global::System.IntPtr vfptr0; + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, + EntryPoint="??0AbstractModule@CppParser@CppSharp@@QAE@XZ")] + internal static extern global::System.IntPtr ctor_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, + EntryPoint="??0AbstractModule@CppParser@CppSharp@@QAE@ABV012@@Z")] + internal static extern global::System.IntPtr cctor_1(global::System.IntPtr instance, global::System.IntPtr _0); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, + EntryPoint="?getIncludeDirs@AbstractModule@CppParser@CppSharp@@QAEPBDI@Z")] + internal static extern global::System.IntPtr getIncludeDirs_0(global::System.IntPtr instance, uint i); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, + EntryPoint="?addIncludeDirs@AbstractModule@CppParser@CppSharp@@QAEXPBD@Z")] + internal static extern void addIncludeDirs_0(global::System.IntPtr instance, global::System.IntPtr s); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, + EntryPoint="?clearIncludeDirs@AbstractModule@CppParser@CppSharp@@QAEXXZ")] + internal static extern void clearIncludeDirs_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, + EntryPoint="?getLibraryDirs@AbstractModule@CppParser@CppSharp@@QAEPBDI@Z")] + internal static extern global::System.IntPtr getLibraryDirs_0(global::System.IntPtr instance, uint i); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, + EntryPoint="?addLibraryDirs@AbstractModule@CppParser@CppSharp@@QAEXPBD@Z")] + internal static extern void addLibraryDirs_0(global::System.IntPtr instance, global::System.IntPtr s); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, + EntryPoint="?clearLibraryDirs@AbstractModule@CppParser@CppSharp@@QAEXXZ")] + internal static extern void clearLibraryDirs_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, + EntryPoint="?getDefines@AbstractModule@CppParser@CppSharp@@QAEPBDI@Z")] + internal static extern global::System.IntPtr getDefines_0(global::System.IntPtr instance, uint i); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, + EntryPoint="?addDefines@AbstractModule@CppParser@CppSharp@@QAEXPBD@Z")] + internal static extern void addDefines_0(global::System.IntPtr instance, global::System.IntPtr s); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, + EntryPoint="?clearDefines@AbstractModule@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@AbstractModule@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@AbstractModule@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@AbstractModule@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="?getIncludeDirsCount@AbstractModule@CppParser@CppSharp@@QAEIXZ")] + internal static extern uint getIncludeDirsCount_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, + EntryPoint="?getLibraryDirsCount@AbstractModule@CppParser@CppSharp@@QAEIXZ")] + internal static extern uint getLibraryDirsCount_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, + EntryPoint="?getDefinesCount@AbstractModule@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@AbstractModule@CppParser@CppSharp@@QAEIXZ")] + internal static extern uint getUndefinesCount_0(global::System.IntPtr instance); + } + + public global::System.IntPtr __Instance { get; protected set; } + + protected int __PointerAdjustment; + public static readonly System.Collections.Concurrent.ConcurrentDictionary NativeToManagedMap = new System.Collections.Concurrent.ConcurrentDictionary(); + protected void*[] __OriginalVTables; + + protected bool __ownsNativeInstance; + + public static AbstractModule __CreateInstance(global::System.IntPtr native, bool skipVTables = false) + { + return new AbstractModuleInternal(native.ToPointer(), skipVTables); + } + + public static AbstractModule __CreateInstance(AbstractModule.Internal native, bool skipVTables = false) + { + return new AbstractModuleInternal(native, skipVTables); + } + + protected AbstractModule(void* native, bool skipVTables = false) + { + if (native == null) + return; + __Instance = new global::System.IntPtr(native); + if (skipVTables) + __OriginalVTables = new void*[] { ((Internal*) native)->vfptr0.ToPointer() }; + else + SetupVTables(true); + } + + protected AbstractModule() + { + __Instance = Marshal.AllocHGlobal(52); + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + Internal.ctor_0((__Instance + __PointerAdjustment)); + SetupVTables(GetType().FullName == "CppSharp.CppParser.dll.CppSharp.Parser.AbstractModule"); + } + + protected AbstractModule(CppSharp.Parser.AbstractModule _0) + { + __Instance = Marshal.AllocHGlobal(52); + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + if (ReferenceEquals(_0, null)) + throw new global::System.ArgumentNullException("_0", "Cannot be null because it is a C++ reference (&)."); + var arg0 = _0.__Instance; + Internal.cctor_1((__Instance + __PointerAdjustment), arg0); + SetupVTables(GetType().FullName == "CppSharp.CppParser.dll.CppSharp.Parser.AbstractModule"); + } + + public void Dispose() + { + Dispose(disposing: true); + } + + protected virtual void Dispose(bool disposing) + { + CppSharp.Parser.AbstractModule __dummy; + NativeToManagedMap.TryRemove(__Instance, out __dummy); + ((Internal*) __Instance)->vfptr0 = new global::System.IntPtr(__OriginalVTables[0]); + if (__ownsNativeInstance) + Marshal.FreeHGlobal(__Instance); + } + + public string getIncludeDirs(uint i) + { + var __ret = Internal.getIncludeDirs_0((__Instance + __PointerAdjustment), i); + return Marshal.PtrToStringAnsi(__ret); + } + + public void addIncludeDirs(string s) + { + var arg0 = Marshal.StringToHGlobalAnsi(s); + Internal.addIncludeDirs_0((__Instance + __PointerAdjustment), arg0); + Marshal.FreeHGlobal(arg0); + } + + public void clearIncludeDirs() + { + Internal.clearIncludeDirs_0((__Instance + __PointerAdjustment)); + } + + public string getLibraryDirs(uint i) + { + var __ret = Internal.getLibraryDirs_0((__Instance + __PointerAdjustment), i); + return Marshal.PtrToStringAnsi(__ret); + } + + public void addLibraryDirs(string s) + { + var arg0 = Marshal.StringToHGlobalAnsi(s); + Internal.addLibraryDirs_0((__Instance + __PointerAdjustment), arg0); + Marshal.FreeHGlobal(arg0); + } + + public void clearLibraryDirs() + { + Internal.clearLibraryDirs_0((__Instance + __PointerAdjustment)); + } + + public string getDefines(uint i) + { + var __ret = Internal.getDefines_0((__Instance + __PointerAdjustment), i); + return Marshal.PtrToStringAnsi(__ret); + } + + public void addDefines(string s) + { + var arg0 = Marshal.StringToHGlobalAnsi(s); + Internal.addDefines_0((__Instance + __PointerAdjustment), arg0); + Marshal.FreeHGlobal(arg0); + } + + public void clearDefines() + { + Internal.clearDefines_0((__Instance + __PointerAdjustment)); + } + + public string getUndefines(uint i) + { + var __ret = Internal.getUndefines_0((__Instance + __PointerAdjustment), i); + return Marshal.PtrToStringAnsi(__ret); + } + + public void addUndefines(string s) + { + var arg0 = Marshal.StringToHGlobalAnsi(s); + Internal.addUndefines_0((__Instance + __PointerAdjustment), arg0); + Marshal.FreeHGlobal(arg0); + } + + public void clearUndefines() + { + Internal.clearUndefines_0((__Instance + __PointerAdjustment)); + } + + public uint IncludeDirsCount + { + get + { + var __ret = Internal.getIncludeDirsCount_0((__Instance + __PointerAdjustment)); + return __ret; + } + } + + public uint LibraryDirsCount + { + get + { + var __ret = Internal.getLibraryDirsCount_0((__Instance + __PointerAdjustment)); + return __ret; + } + } + + public uint DefinesCount + { + get + { + var __ret = Internal.getDefinesCount_0((__Instance + __PointerAdjustment)); + return __ret; + } + } + + public uint UndefinesCount + { + get + { + var __ret = Internal.getUndefinesCount_0((__Instance + __PointerAdjustment)); + return __ret; + } + } + + #region Virtual table interop + + // virtual ~AbstractModule() = 0 + private static Delegates.Action_IntPtr_int _dtor_0DelegateInstance; + + private static void _dtor_0DelegateHook(global::System.IntPtr instance, int delete) + { + if (!NativeToManagedMap.ContainsKey(instance)) + throw new global::System.Exception("No managed instance was found"); + + var __target = (AbstractModule) NativeToManagedMap[instance]; + if (__target.__ownsNativeInstance) + __target.SetupVTables(); + __target.Dispose(false); + } + + private static void*[] __ManagedVTables; + private static void*[] __ManagedVTablesDtorOnly; + private static void*[] _Thunks; + + private void SetupVTables(bool destructorOnly = false) + { + if (__OriginalVTables != null) + return; + var native = (Internal*) __Instance.ToPointer(); + + __OriginalVTables = new void*[] { ((Internal*) native)->vfptr0.ToPointer() }; + + if (_Thunks == null) + { + _Thunks = new void*[1]; + _dtor_0DelegateInstance += _dtor_0DelegateHook; + _Thunks[0] = Marshal.GetFunctionPointerForDelegate(_dtor_0DelegateInstance).ToPointer(); + } + + if (destructorOnly) + { + if (__ManagedVTablesDtorOnly == null) + { + __ManagedVTablesDtorOnly = new void*[1]; + var vfptr0 = Marshal.AllocHGlobal(1 * 4); + __ManagedVTablesDtorOnly[0] = vfptr0.ToPointer(); + *(void**)(vfptr0 + 0) = _Thunks[0]; + } + + native->vfptr0 = new IntPtr(__ManagedVTablesDtorOnly[0]); + } + else + { + if (__ManagedVTables == null) + { + __ManagedVTables = new void*[1]; + var vfptr0 = Marshal.AllocHGlobal(1 * 4); + __ManagedVTables[0] = vfptr0.ToPointer(); + *(void**)(vfptr0 + 0) = _Thunks[0]; + } + + native->vfptr0 = new IntPtr(__ManagedVTables[0]); + } + } + + #endregion + } + public unsafe partial class ParserOptions : IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 144)] + [StructLayout(LayoutKind.Explicit, Size = 148)] public partial struct Internal { [FieldOffset(96)] @@ -79,6 +412,9 @@ namespace CppSharp [FieldOffset(140)] public global::System.IntPtr TargetInfo; + [FieldOffset(144)] + public global::System.IntPtr Module; + [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, EntryPoint="??0ParserOptions@CppParser@CppSharp@@QAE@XZ")] @@ -255,7 +591,7 @@ namespace CppSharp private static void* __CopyValue(ParserOptions.Internal native) { - var ret = Marshal.AllocHGlobal(144); + var ret = Marshal.AllocHGlobal(148); CppSharp.Parser.ParserOptions.Internal.cctor_2(ret, new global::System.IntPtr(&native)); return ret.ToPointer(); } @@ -276,7 +612,7 @@ namespace CppSharp public ParserOptions() { - __Instance = Marshal.AllocHGlobal(144); + __Instance = Marshal.AllocHGlobal(148); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; Internal.ctor_0((__Instance + __PointerAdjustment)); @@ -284,7 +620,7 @@ namespace CppSharp public ParserOptions(CppSharp.Parser.ParserOptions _0) { - __Instance = Marshal.AllocHGlobal(144); + __Instance = Marshal.AllocHGlobal(148); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; if (ReferenceEquals(_0, null)) @@ -627,6 +963,24 @@ namespace CppSharp ((Internal*) __Instance)->TargetInfo = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; } } + + public CppSharp.Parser.AbstractModule Module + { + get + { + CppSharp.Parser.AbstractModule __result0; + if (((Internal*) __Instance)->Module == IntPtr.Zero) __result0 = null; + else if (CppSharp.Parser.AbstractModule.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Module)) + __result0 = (CppSharp.Parser.AbstractModule) CppSharp.Parser.AbstractModule.NativeToManagedMap[((Internal*) __Instance)->Module]; + else CppSharp.Parser.AbstractModule.NativeToManagedMap[((Internal*) __Instance)->Module] = __result0 = (CppSharp.Parser.AbstractModule) CppSharp.Parser.AbstractModule.__CreateInstance(((Internal*) __Instance)->Module); + return __result0; + } + + set + { + ((Internal*) __Instance)->Module = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + } + } } public unsafe partial class ParserDiagnostic : IDisposable @@ -1156,5 +1510,30 @@ namespace CppSharp return __result0; } } + + internal unsafe partial class AbstractModuleInternal : CppSharp.Parser.AbstractModule, IDisposable + { + private static void* __CopyValue(AbstractModule.Internal native) + { + var ret = Marshal.AllocHGlobal(52); + *(AbstractModule.Internal*) ret = native; + return ret.ToPointer(); + } + + internal AbstractModuleInternal(AbstractModule.Internal native, bool skipVTables = false) + : this(__CopyValue(native), skipVTables) + { + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + } + + internal AbstractModuleInternal(void* native, bool skipVTables = false) + : base((void*) null) + { + __PointerAdjustment = 0; + __Instance = new global::System.IntPtr(native); + __OriginalVTables = new void*[] { ((Internal*) native)->vfptr0.ToPointer() }; + } + } } } diff --git a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/Target.cs b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/Target.cs index da1a9f69..6cb33839 100644 --- a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/Target.cs +++ b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/Target.cs @@ -1,8 +1,6 @@ //---------------------------------------------------------------------------- -// // This is autogenerated code by CppSharp. // Do not edit this file or all your changes will be lost after re-generation. -// //---------------------------------------------------------------------------- using System; using System.Runtime.InteropServices; @@ -756,3 +754,9 @@ namespace CppSharp } } } + +namespace Delegates +{ + [SuppressUnmanagedCodeSecurity, UnmanagedFunctionPointerAttribute(global::System.Runtime.InteropServices.CallingConvention.ThisCall)] + public unsafe delegate void Action_IntPtr_int(global::System.IntPtr instance, int arg1); +} diff --git a/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppParser.cs b/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppParser.cs index bc0920d6..141f9f37 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppParser.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppParser.cs @@ -1,8 +1,6 @@ //---------------------------------------------------------------------------- -// // This is autogenerated code by CppSharp. // Do not edit this file or all your changes will be lost after re-generation. -// //---------------------------------------------------------------------------- using System; using System.Runtime.InteropServices; @@ -47,9 +45,352 @@ namespace CppSharp User = 4 } + public unsafe abstract partial class AbstractModule : IDisposable + { + [StructLayout(LayoutKind.Explicit, Size = 104)] + public partial struct Internal + { + [FieldOffset(0)] + public global::System.IntPtr vfptr0; + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModuleC2Ev")] + internal static extern void ctor_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModuleC2ERKS1_")] + internal static extern void cctor_1(global::System.IntPtr instance, global::System.IntPtr _0); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule14getIncludeDirsEj")] + internal static extern global::System.IntPtr getIncludeDirs_0(global::System.IntPtr instance, uint i); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule14addIncludeDirsEPKc")] + internal static extern void addIncludeDirs_0(global::System.IntPtr instance, global::System.IntPtr s); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule16clearIncludeDirsEv")] + internal static extern void clearIncludeDirs_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule14getLibraryDirsEj")] + internal static extern global::System.IntPtr getLibraryDirs_0(global::System.IntPtr instance, uint i); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule14addLibraryDirsEPKc")] + internal static extern void addLibraryDirs_0(global::System.IntPtr instance, global::System.IntPtr s); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule16clearLibraryDirsEv")] + internal static extern void clearLibraryDirs_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule10getDefinesEj")] + internal static extern global::System.IntPtr getDefines_0(global::System.IntPtr instance, uint i); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule10addDefinesEPKc")] + internal static extern void addDefines_0(global::System.IntPtr instance, global::System.IntPtr s); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule12clearDefinesEv")] + internal static extern void clearDefines_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule12getUndefinesEj")] + 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="_ZN8CppSharp9CppParser14AbstractModule12addUndefinesEPKc")] + 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="_ZN8CppSharp9CppParser14AbstractModule14clearUndefinesEv")] + internal static extern void clearUndefines_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule19getIncludeDirsCountEv")] + internal static extern uint getIncludeDirsCount_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule19getLibraryDirsCountEv")] + internal static extern uint getLibraryDirsCount_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule15getDefinesCountEv")] + internal static extern uint getDefinesCount_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule17getUndefinesCountEv")] + internal static extern uint getUndefinesCount_0(global::System.IntPtr instance); + } + + public global::System.IntPtr __Instance { get; protected set; } + + protected int __PointerAdjustment; + public static readonly System.Collections.Concurrent.ConcurrentDictionary NativeToManagedMap = new System.Collections.Concurrent.ConcurrentDictionary(); + protected void*[] __OriginalVTables; + + protected bool __ownsNativeInstance; + + public static AbstractModule __CreateInstance(global::System.IntPtr native, bool skipVTables = false) + { + return new AbstractModuleInternal(native.ToPointer(), skipVTables); + } + + public static AbstractModule __CreateInstance(AbstractModule.Internal native, bool skipVTables = false) + { + return new AbstractModuleInternal(native, skipVTables); + } + + protected AbstractModule(void* native, bool skipVTables = false) + { + if (native == null) + return; + __Instance = new global::System.IntPtr(native); + if (skipVTables) + __OriginalVTables = new void*[] { ((Internal*) native)->vfptr0.ToPointer() }; + else + SetupVTables(true); + } + + protected AbstractModule() + { + __Instance = Marshal.AllocHGlobal(104); + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + Internal.ctor_0((__Instance + __PointerAdjustment)); + SetupVTables(GetType().FullName == "CppSharp.CppParser.dll.CppSharp.Parser.AbstractModule"); + } + + protected AbstractModule(CppSharp.Parser.AbstractModule _0) + { + __Instance = Marshal.AllocHGlobal(104); + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + if (ReferenceEquals(_0, null)) + throw new global::System.ArgumentNullException("_0", "Cannot be null because it is a C++ reference (&)."); + var arg0 = _0.__Instance; + Internal.cctor_1((__Instance + __PointerAdjustment), arg0); + SetupVTables(GetType().FullName == "CppSharp.CppParser.dll.CppSharp.Parser.AbstractModule"); + } + + public void Dispose() + { + Dispose(disposing: true); + } + + protected virtual void Dispose(bool disposing) + { + CppSharp.Parser.AbstractModule __dummy; + NativeToManagedMap.TryRemove(__Instance, out __dummy); + ((Internal*) __Instance)->vfptr0 = new global::System.IntPtr(__OriginalVTables[0]); + if (__ownsNativeInstance) + Marshal.FreeHGlobal(__Instance); + } + + public string getIncludeDirs(uint i) + { + var __ret = Internal.getIncludeDirs_0((__Instance + __PointerAdjustment), i); + return Marshal.PtrToStringAnsi(__ret); + } + + public void addIncludeDirs(string s) + { + var arg0 = Marshal.StringToHGlobalAnsi(s); + Internal.addIncludeDirs_0((__Instance + __PointerAdjustment), arg0); + Marshal.FreeHGlobal(arg0); + } + + public void clearIncludeDirs() + { + Internal.clearIncludeDirs_0((__Instance + __PointerAdjustment)); + } + + public string getLibraryDirs(uint i) + { + var __ret = Internal.getLibraryDirs_0((__Instance + __PointerAdjustment), i); + return Marshal.PtrToStringAnsi(__ret); + } + + public void addLibraryDirs(string s) + { + var arg0 = Marshal.StringToHGlobalAnsi(s); + Internal.addLibraryDirs_0((__Instance + __PointerAdjustment), arg0); + Marshal.FreeHGlobal(arg0); + } + + public void clearLibraryDirs() + { + Internal.clearLibraryDirs_0((__Instance + __PointerAdjustment)); + } + + public string getDefines(uint i) + { + var __ret = Internal.getDefines_0((__Instance + __PointerAdjustment), i); + return Marshal.PtrToStringAnsi(__ret); + } + + public void addDefines(string s) + { + var arg0 = Marshal.StringToHGlobalAnsi(s); + Internal.addDefines_0((__Instance + __PointerAdjustment), arg0); + Marshal.FreeHGlobal(arg0); + } + + public void clearDefines() + { + Internal.clearDefines_0((__Instance + __PointerAdjustment)); + } + + public string getUndefines(uint i) + { + var __ret = Internal.getUndefines_0((__Instance + __PointerAdjustment), i); + return Marshal.PtrToStringAnsi(__ret); + } + + public void addUndefines(string s) + { + var arg0 = Marshal.StringToHGlobalAnsi(s); + Internal.addUndefines_0((__Instance + __PointerAdjustment), arg0); + Marshal.FreeHGlobal(arg0); + } + + public void clearUndefines() + { + Internal.clearUndefines_0((__Instance + __PointerAdjustment)); + } + + public uint IncludeDirsCount + { + get + { + var __ret = Internal.getIncludeDirsCount_0((__Instance + __PointerAdjustment)); + return __ret; + } + } + + public uint LibraryDirsCount + { + get + { + var __ret = Internal.getLibraryDirsCount_0((__Instance + __PointerAdjustment)); + return __ret; + } + } + + public uint DefinesCount + { + get + { + var __ret = Internal.getDefinesCount_0((__Instance + __PointerAdjustment)); + return __ret; + } + } + + public uint UndefinesCount + { + get + { + var __ret = Internal.getUndefinesCount_0((__Instance + __PointerAdjustment)); + return __ret; + } + } + + #region Virtual table interop + + // virtual ~AbstractModule() = 0 + private static Delegates.Action_IntPtr _dtor_0DelegateInstance; + + private static void _dtor_0DelegateHook(global::System.IntPtr instance) + { + if (!NativeToManagedMap.ContainsKey(instance)) + throw new global::System.Exception("No managed instance was found"); + + var __target = (AbstractModule) NativeToManagedMap[instance]; + if (__target.__ownsNativeInstance) + __target.SetupVTables(); + __target.Dispose(false); + } + + private static void*[] __ManagedVTables; + private static void*[] __ManagedVTablesDtorOnly; + private static void*[] _Thunks; + + private void SetupVTables(bool destructorOnly = false) + { + if (__OriginalVTables != null) + return; + var native = (Internal*) __Instance.ToPointer(); + + __OriginalVTables = new void*[] { ((Internal*) native)->vfptr0.ToPointer() }; + + if (_Thunks == null) + { + _Thunks = new void*[1]; + _dtor_0DelegateInstance += _dtor_0DelegateHook; + _Thunks[0] = Marshal.GetFunctionPointerForDelegate(_dtor_0DelegateInstance).ToPointer(); + } + + if (destructorOnly) + { + if (__ManagedVTablesDtorOnly == null) + { + __ManagedVTablesDtorOnly = new void*[1]; + var vtptr = Marshal.AllocHGlobal(4 * 8); + var vfptr0 = vtptr + 2 * 8; + __ManagedVTablesDtorOnly[0] = vfptr0.ToPointer(); + *(void**)(vfptr0 + -16) = *(void**)(native->vfptr0 + -16); + *(void**)(vfptr0 + -8) = *(void**)(native->vfptr0 + -8); + *(void**)(vfptr0 + 0) = *(void**)(native->vfptr0 + 0); + *(void**)(vfptr0 + 8) = _Thunks[0]; + } + + native->vfptr0 = new IntPtr(__ManagedVTablesDtorOnly[0]); + } + else + { + if (__ManagedVTables == null) + { + __ManagedVTables = new void*[1]; + var vtptr = Marshal.AllocHGlobal(4 * 8); + var vfptr0 = vtptr + 2 * 8; + __ManagedVTables[0] = vfptr0.ToPointer(); + *(void**)(vfptr0 + -16) = *(void**)(native->vfptr0 + -16); + *(void**)(vfptr0 + -8) = *(void**)(native->vfptr0 + -8); + *(void**)(vfptr0 + 0) = *(void**)(native->vfptr0 + 0); + *(void**)(vfptr0 + 8) = _Thunks[0]; + } + + native->vfptr0 = new IntPtr(__ManagedVTables[0]); + } + } + + #endregion + } + public unsafe partial class ParserOptions : IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 232)] + [StructLayout(LayoutKind.Explicit, Size = 240)] public partial struct Internal { [FieldOffset(168)] @@ -79,6 +420,9 @@ namespace CppSharp [FieldOffset(224)] public global::System.IntPtr TargetInfo; + [FieldOffset(232)] + public global::System.IntPtr Module; + [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, EntryPoint="_ZN8CppSharp9CppParser13ParserOptionsC2Ev")] @@ -255,7 +599,7 @@ namespace CppSharp private static void* __CopyValue(ParserOptions.Internal native) { - var ret = Marshal.AllocHGlobal(232); + var ret = Marshal.AllocHGlobal(240); CppSharp.Parser.ParserOptions.Internal.cctor_2(ret, new global::System.IntPtr(&native)); return ret.ToPointer(); } @@ -276,7 +620,7 @@ namespace CppSharp public ParserOptions() { - __Instance = Marshal.AllocHGlobal(232); + __Instance = Marshal.AllocHGlobal(240); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; Internal.ctor_0((__Instance + __PointerAdjustment)); @@ -284,7 +628,7 @@ namespace CppSharp public ParserOptions(CppSharp.Parser.ParserOptions _0) { - __Instance = Marshal.AllocHGlobal(232); + __Instance = Marshal.AllocHGlobal(240); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; if (ReferenceEquals(_0, null)) @@ -627,6 +971,24 @@ namespace CppSharp ((Internal*) __Instance)->TargetInfo = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; } } + + public CppSharp.Parser.AbstractModule Module + { + get + { + CppSharp.Parser.AbstractModule __result0; + if (((Internal*) __Instance)->Module == IntPtr.Zero) __result0 = null; + else if (CppSharp.Parser.AbstractModule.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Module)) + __result0 = (CppSharp.Parser.AbstractModule) CppSharp.Parser.AbstractModule.NativeToManagedMap[((Internal*) __Instance)->Module]; + else CppSharp.Parser.AbstractModule.NativeToManagedMap[((Internal*) __Instance)->Module] = __result0 = (CppSharp.Parser.AbstractModule) CppSharp.Parser.AbstractModule.__CreateInstance(((Internal*) __Instance)->Module); + return __result0; + } + + set + { + ((Internal*) __Instance)->Module = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + } + } } public unsafe partial class ParserDiagnostic : IDisposable @@ -1156,5 +1518,30 @@ namespace CppSharp return __result0; } } + + internal unsafe partial class AbstractModuleInternal : CppSharp.Parser.AbstractModule, IDisposable + { + private static void* __CopyValue(AbstractModule.Internal native) + { + var ret = Marshal.AllocHGlobal(104); + *(AbstractModule.Internal*) ret = native; + return ret.ToPointer(); + } + + internal AbstractModuleInternal(AbstractModule.Internal native, bool skipVTables = false) + : this(__CopyValue(native), skipVTables) + { + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + } + + internal AbstractModuleInternal(void* native, bool skipVTables = false) + : base((void*) null) + { + __PointerAdjustment = 0; + __Instance = new global::System.IntPtr(native); + __OriginalVTables = new void*[] { ((Internal*) native)->vfptr0.ToPointer() }; + } + } } } 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 f967a685..df7ca863 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppParser.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppParser.cs @@ -1,8 +1,6 @@ //---------------------------------------------------------------------------- -// // This is autogenerated code by CppSharp. // Do not edit this file or all your changes will be lost after re-generation. -// //---------------------------------------------------------------------------- using System; using System.Runtime.InteropServices; @@ -47,9 +45,352 @@ namespace CppSharp User = 4 } + public unsafe abstract partial class AbstractModule : IDisposable + { + [StructLayout(LayoutKind.Explicit, Size = 104)] + public partial struct Internal + { + [FieldOffset(0)] + public global::System.IntPtr vfptr0; + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModuleC2Ev")] + internal static extern void ctor_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModuleC2ERKS1_")] + internal static extern void cctor_1(global::System.IntPtr instance, global::System.IntPtr _0); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule14getIncludeDirsEj")] + internal static extern global::System.IntPtr getIncludeDirs_0(global::System.IntPtr instance, uint i); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule14addIncludeDirsEPKc")] + internal static extern void addIncludeDirs_0(global::System.IntPtr instance, global::System.IntPtr s); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule16clearIncludeDirsEv")] + internal static extern void clearIncludeDirs_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule14getLibraryDirsEj")] + internal static extern global::System.IntPtr getLibraryDirs_0(global::System.IntPtr instance, uint i); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule14addLibraryDirsEPKc")] + internal static extern void addLibraryDirs_0(global::System.IntPtr instance, global::System.IntPtr s); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule16clearLibraryDirsEv")] + internal static extern void clearLibraryDirs_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule10getDefinesEj")] + internal static extern global::System.IntPtr getDefines_0(global::System.IntPtr instance, uint i); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule10addDefinesEPKc")] + internal static extern void addDefines_0(global::System.IntPtr instance, global::System.IntPtr s); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule12clearDefinesEv")] + internal static extern void clearDefines_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule12getUndefinesEj")] + 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="_ZN8CppSharp9CppParser14AbstractModule12addUndefinesEPKc")] + 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="_ZN8CppSharp9CppParser14AbstractModule14clearUndefinesEv")] + internal static extern void clearUndefines_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule19getIncludeDirsCountEv")] + internal static extern uint getIncludeDirsCount_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule19getLibraryDirsCountEv")] + internal static extern uint getLibraryDirsCount_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule15getDefinesCountEv")] + internal static extern uint getDefinesCount_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser14AbstractModule17getUndefinesCountEv")] + internal static extern uint getUndefinesCount_0(global::System.IntPtr instance); + } + + public global::System.IntPtr __Instance { get; protected set; } + + protected int __PointerAdjustment; + public static readonly System.Collections.Concurrent.ConcurrentDictionary NativeToManagedMap = new System.Collections.Concurrent.ConcurrentDictionary(); + protected void*[] __OriginalVTables; + + protected bool __ownsNativeInstance; + + public static AbstractModule __CreateInstance(global::System.IntPtr native, bool skipVTables = false) + { + return new AbstractModuleInternal(native.ToPointer(), skipVTables); + } + + public static AbstractModule __CreateInstance(AbstractModule.Internal native, bool skipVTables = false) + { + return new AbstractModuleInternal(native, skipVTables); + } + + protected AbstractModule(void* native, bool skipVTables = false) + { + if (native == null) + return; + __Instance = new global::System.IntPtr(native); + if (skipVTables) + __OriginalVTables = new void*[] { ((Internal*) native)->vfptr0.ToPointer() }; + else + SetupVTables(true); + } + + protected AbstractModule() + { + __Instance = Marshal.AllocHGlobal(104); + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + Internal.ctor_0((__Instance + __PointerAdjustment)); + SetupVTables(GetType().FullName == "CppSharp.CppParser.dll.CppSharp.Parser.AbstractModule"); + } + + protected AbstractModule(CppSharp.Parser.AbstractModule _0) + { + __Instance = Marshal.AllocHGlobal(104); + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + if (ReferenceEquals(_0, null)) + throw new global::System.ArgumentNullException("_0", "Cannot be null because it is a C++ reference (&)."); + var arg0 = _0.__Instance; + Internal.cctor_1((__Instance + __PointerAdjustment), arg0); + SetupVTables(GetType().FullName == "CppSharp.CppParser.dll.CppSharp.Parser.AbstractModule"); + } + + public void Dispose() + { + Dispose(disposing: true); + } + + protected virtual void Dispose(bool disposing) + { + CppSharp.Parser.AbstractModule __dummy; + NativeToManagedMap.TryRemove(__Instance, out __dummy); + ((Internal*) __Instance)->vfptr0 = new global::System.IntPtr(__OriginalVTables[0]); + if (__ownsNativeInstance) + Marshal.FreeHGlobal(__Instance); + } + + public string getIncludeDirs(uint i) + { + var __ret = Internal.getIncludeDirs_0((__Instance + __PointerAdjustment), i); + return Marshal.PtrToStringAnsi(__ret); + } + + public void addIncludeDirs(string s) + { + var arg0 = Marshal.StringToHGlobalAnsi(s); + Internal.addIncludeDirs_0((__Instance + __PointerAdjustment), arg0); + Marshal.FreeHGlobal(arg0); + } + + public void clearIncludeDirs() + { + Internal.clearIncludeDirs_0((__Instance + __PointerAdjustment)); + } + + public string getLibraryDirs(uint i) + { + var __ret = Internal.getLibraryDirs_0((__Instance + __PointerAdjustment), i); + return Marshal.PtrToStringAnsi(__ret); + } + + public void addLibraryDirs(string s) + { + var arg0 = Marshal.StringToHGlobalAnsi(s); + Internal.addLibraryDirs_0((__Instance + __PointerAdjustment), arg0); + Marshal.FreeHGlobal(arg0); + } + + public void clearLibraryDirs() + { + Internal.clearLibraryDirs_0((__Instance + __PointerAdjustment)); + } + + public string getDefines(uint i) + { + var __ret = Internal.getDefines_0((__Instance + __PointerAdjustment), i); + return Marshal.PtrToStringAnsi(__ret); + } + + public void addDefines(string s) + { + var arg0 = Marshal.StringToHGlobalAnsi(s); + Internal.addDefines_0((__Instance + __PointerAdjustment), arg0); + Marshal.FreeHGlobal(arg0); + } + + public void clearDefines() + { + Internal.clearDefines_0((__Instance + __PointerAdjustment)); + } + + public string getUndefines(uint i) + { + var __ret = Internal.getUndefines_0((__Instance + __PointerAdjustment), i); + return Marshal.PtrToStringAnsi(__ret); + } + + public void addUndefines(string s) + { + var arg0 = Marshal.StringToHGlobalAnsi(s); + Internal.addUndefines_0((__Instance + __PointerAdjustment), arg0); + Marshal.FreeHGlobal(arg0); + } + + public void clearUndefines() + { + Internal.clearUndefines_0((__Instance + __PointerAdjustment)); + } + + public uint IncludeDirsCount + { + get + { + var __ret = Internal.getIncludeDirsCount_0((__Instance + __PointerAdjustment)); + return __ret; + } + } + + public uint LibraryDirsCount + { + get + { + var __ret = Internal.getLibraryDirsCount_0((__Instance + __PointerAdjustment)); + return __ret; + } + } + + public uint DefinesCount + { + get + { + var __ret = Internal.getDefinesCount_0((__Instance + __PointerAdjustment)); + return __ret; + } + } + + public uint UndefinesCount + { + get + { + var __ret = Internal.getUndefinesCount_0((__Instance + __PointerAdjustment)); + return __ret; + } + } + + #region Virtual table interop + + // virtual ~AbstractModule() = 0 + private static Delegates.Action_IntPtr _dtor_0DelegateInstance; + + private static void _dtor_0DelegateHook(global::System.IntPtr instance) + { + if (!NativeToManagedMap.ContainsKey(instance)) + throw new global::System.Exception("No managed instance was found"); + + var __target = (AbstractModule) NativeToManagedMap[instance]; + if (__target.__ownsNativeInstance) + __target.SetupVTables(); + __target.Dispose(false); + } + + private static void*[] __ManagedVTables; + private static void*[] __ManagedVTablesDtorOnly; + private static void*[] _Thunks; + + private void SetupVTables(bool destructorOnly = false) + { + if (__OriginalVTables != null) + return; + var native = (Internal*) __Instance.ToPointer(); + + __OriginalVTables = new void*[] { ((Internal*) native)->vfptr0.ToPointer() }; + + if (_Thunks == null) + { + _Thunks = new void*[1]; + _dtor_0DelegateInstance += _dtor_0DelegateHook; + _Thunks[0] = Marshal.GetFunctionPointerForDelegate(_dtor_0DelegateInstance).ToPointer(); + } + + if (destructorOnly) + { + if (__ManagedVTablesDtorOnly == null) + { + __ManagedVTablesDtorOnly = new void*[1]; + var vtptr = Marshal.AllocHGlobal(4 * 8); + var vfptr0 = vtptr + 2 * 8; + __ManagedVTablesDtorOnly[0] = vfptr0.ToPointer(); + *(void**)(vfptr0 + -16) = *(void**)(native->vfptr0 + -16); + *(void**)(vfptr0 + -8) = *(void**)(native->vfptr0 + -8); + *(void**)(vfptr0 + 0) = *(void**)(native->vfptr0 + 0); + *(void**)(vfptr0 + 8) = _Thunks[0]; + } + + native->vfptr0 = new IntPtr(__ManagedVTablesDtorOnly[0]); + } + else + { + if (__ManagedVTables == null) + { + __ManagedVTables = new void*[1]; + var vtptr = Marshal.AllocHGlobal(4 * 8); + var vfptr0 = vtptr + 2 * 8; + __ManagedVTables[0] = vfptr0.ToPointer(); + *(void**)(vfptr0 + -16) = *(void**)(native->vfptr0 + -16); + *(void**)(vfptr0 + -8) = *(void**)(native->vfptr0 + -8); + *(void**)(vfptr0 + 0) = *(void**)(native->vfptr0 + 0); + *(void**)(vfptr0 + 8) = _Thunks[0]; + } + + native->vfptr0 = new IntPtr(__ManagedVTables[0]); + } + } + + #endregion + } + public unsafe partial class ParserOptions : IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 200)] + [StructLayout(LayoutKind.Explicit, Size = 208)] public partial struct Internal { [FieldOffset(152)] @@ -79,6 +420,9 @@ namespace CppSharp [FieldOffset(192)] public global::System.IntPtr TargetInfo; + [FieldOffset(200)] + public global::System.IntPtr Module; + [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, EntryPoint="_ZN8CppSharp9CppParser13ParserOptionsC2Ev")] @@ -255,7 +599,7 @@ namespace CppSharp private static void* __CopyValue(ParserOptions.Internal native) { - var ret = Marshal.AllocHGlobal(200); + var ret = Marshal.AllocHGlobal(208); CppSharp.Parser.ParserOptions.Internal.cctor_1(ret, new global::System.IntPtr(&native)); return ret.ToPointer(); } @@ -276,7 +620,7 @@ namespace CppSharp public ParserOptions() { - __Instance = Marshal.AllocHGlobal(200); + __Instance = Marshal.AllocHGlobal(208); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; Internal.ctor_0((__Instance + __PointerAdjustment)); @@ -284,7 +628,7 @@ namespace CppSharp public ParserOptions(CppSharp.Parser.ParserOptions _0) { - __Instance = Marshal.AllocHGlobal(200); + __Instance = Marshal.AllocHGlobal(208); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; if (ReferenceEquals(_0, null)) @@ -627,6 +971,24 @@ namespace CppSharp ((Internal*) __Instance)->TargetInfo = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; } } + + public CppSharp.Parser.AbstractModule Module + { + get + { + CppSharp.Parser.AbstractModule __result0; + if (((Internal*) __Instance)->Module == IntPtr.Zero) __result0 = null; + else if (CppSharp.Parser.AbstractModule.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Module)) + __result0 = (CppSharp.Parser.AbstractModule) CppSharp.Parser.AbstractModule.NativeToManagedMap[((Internal*) __Instance)->Module]; + else CppSharp.Parser.AbstractModule.NativeToManagedMap[((Internal*) __Instance)->Module] = __result0 = (CppSharp.Parser.AbstractModule) CppSharp.Parser.AbstractModule.__CreateInstance(((Internal*) __Instance)->Module); + return __result0; + } + + set + { + ((Internal*) __Instance)->Module = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + } + } } public unsafe partial class ParserDiagnostic : IDisposable @@ -1156,5 +1518,30 @@ namespace CppSharp return __result0; } } + + internal unsafe partial class AbstractModuleInternal : CppSharp.Parser.AbstractModule, IDisposable + { + private static void* __CopyValue(AbstractModule.Internal native) + { + var ret = Marshal.AllocHGlobal(104); + *(AbstractModule.Internal*) ret = native; + return ret.ToPointer(); + } + + internal AbstractModuleInternal(AbstractModule.Internal native, bool skipVTables = false) + : this(__CopyValue(native), skipVTables) + { + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + } + + internal AbstractModuleInternal(void* native, bool skipVTables = false) + : base((void*) null) + { + __PointerAdjustment = 0; + __Instance = new global::System.IntPtr(native); + __OriginalVTables = new void*[] { ((Internal*) native)->vfptr0.ToPointer() }; + } + } } } diff --git a/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppParser.cs b/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppParser.cs index 0df31f4a..34b5ccf9 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppParser.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppParser.cs @@ -1,8 +1,6 @@ //---------------------------------------------------------------------------- -// // This is autogenerated code by CppSharp. // Do not edit this file or all your changes will be lost after re-generation. -// //---------------------------------------------------------------------------- using System; using System.Runtime.InteropServices; @@ -47,9 +45,304 @@ namespace CppSharp User = 4 } + public unsafe abstract partial class AbstractModule : IDisposable + { + [StructLayout(LayoutKind.Explicit, Size = 104)] + public partial struct Internal + { + [FieldOffset(0)] + public global::System.IntPtr vfptr0; + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="??0AbstractModule@CppParser@CppSharp@@QEAA@XZ")] + internal static extern global::System.IntPtr ctor_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="??0AbstractModule@CppParser@CppSharp@@QEAA@AEBV012@@Z")] + internal static extern global::System.IntPtr cctor_1(global::System.IntPtr instance, global::System.IntPtr _0); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="?getIncludeDirs@AbstractModule@CppParser@CppSharp@@QEAAPEBDI@Z")] + internal static extern global::System.IntPtr getIncludeDirs_0(global::System.IntPtr instance, uint i); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="?addIncludeDirs@AbstractModule@CppParser@CppSharp@@QEAAXPEBD@Z")] + internal static extern void addIncludeDirs_0(global::System.IntPtr instance, global::System.IntPtr s); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="?clearIncludeDirs@AbstractModule@CppParser@CppSharp@@QEAAXXZ")] + internal static extern void clearIncludeDirs_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="?getLibraryDirs@AbstractModule@CppParser@CppSharp@@QEAAPEBDI@Z")] + internal static extern global::System.IntPtr getLibraryDirs_0(global::System.IntPtr instance, uint i); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="?addLibraryDirs@AbstractModule@CppParser@CppSharp@@QEAAXPEBD@Z")] + internal static extern void addLibraryDirs_0(global::System.IntPtr instance, global::System.IntPtr s); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="?clearLibraryDirs@AbstractModule@CppParser@CppSharp@@QEAAXXZ")] + internal static extern void clearLibraryDirs_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="?getDefines@AbstractModule@CppParser@CppSharp@@QEAAPEBDI@Z")] + internal static extern global::System.IntPtr getDefines_0(global::System.IntPtr instance, uint i); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="?addDefines@AbstractModule@CppParser@CppSharp@@QEAAXPEBD@Z")] + internal static extern void addDefines_0(global::System.IntPtr instance, global::System.IntPtr s); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="?clearDefines@AbstractModule@CppParser@CppSharp@@QEAAXXZ")] + internal static extern void clearDefines_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="?getUndefines@AbstractModule@CppParser@CppSharp@@QEAAPEBDI@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.Cdecl, + EntryPoint="?addUndefines@AbstractModule@CppParser@CppSharp@@QEAAXPEBD@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.Cdecl, + EntryPoint="?clearUndefines@AbstractModule@CppParser@CppSharp@@QEAAXXZ")] + internal static extern void clearUndefines_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="?getIncludeDirsCount@AbstractModule@CppParser@CppSharp@@QEAAIXZ")] + internal static extern uint getIncludeDirsCount_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="?getLibraryDirsCount@AbstractModule@CppParser@CppSharp@@QEAAIXZ")] + internal static extern uint getLibraryDirsCount_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="?getDefinesCount@AbstractModule@CppParser@CppSharp@@QEAAIXZ")] + internal static extern uint getDefinesCount_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="?getUndefinesCount@AbstractModule@CppParser@CppSharp@@QEAAIXZ")] + internal static extern uint getUndefinesCount_0(global::System.IntPtr instance); + } + + public global::System.IntPtr __Instance { get; protected set; } + + protected int __PointerAdjustment; + public static readonly System.Collections.Concurrent.ConcurrentDictionary NativeToManagedMap = new System.Collections.Concurrent.ConcurrentDictionary(); + protected void*[] __OriginalVTables; + + protected bool __ownsNativeInstance; + + public static AbstractModule __CreateInstance(global::System.IntPtr native, bool skipVTables = false) + { + return new AbstractModuleInternal(native.ToPointer(), skipVTables); + } + + public static AbstractModule __CreateInstance(AbstractModule.Internal native, bool skipVTables = false) + { + return new AbstractModuleInternal(native, skipVTables); + } + + protected AbstractModule(void* native, bool skipVTables = false) + { + if (native == null) + return; + __Instance = new global::System.IntPtr(native); + if (skipVTables) + __OriginalVTables = new void*[] { ((Internal*) native)->vfptr0.ToPointer() }; + else + SetupVTables(true); + } + + protected AbstractModule() + { + __Instance = Marshal.AllocHGlobal(104); + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + Internal.ctor_0((__Instance + __PointerAdjustment)); + SetupVTables(GetType().FullName == "CppSharp.CppParser.dll.CppSharp.Parser.AbstractModule"); + } + + protected AbstractModule(CppSharp.Parser.AbstractModule _0) + { + __Instance = Marshal.AllocHGlobal(104); + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + if (ReferenceEquals(_0, null)) + throw new global::System.ArgumentNullException("_0", "Cannot be null because it is a C++ reference (&)."); + var arg0 = _0.__Instance; + Internal.cctor_1((__Instance + __PointerAdjustment), arg0); + SetupVTables(GetType().FullName == "CppSharp.CppParser.dll.CppSharp.Parser.AbstractModule"); + } + + public void Dispose() + { + Dispose(disposing: true); + } + + protected virtual void Dispose(bool disposing) + { + CppSharp.Parser.AbstractModule __dummy; + NativeToManagedMap.TryRemove(__Instance, out __dummy); + ((Internal*) __Instance)->vfptr0 = new global::System.IntPtr(__OriginalVTables[0]); + if (__ownsNativeInstance) + Marshal.FreeHGlobal(__Instance); + } + + public string getIncludeDirs(uint i) + { + var __ret = Internal.getIncludeDirs_0((__Instance + __PointerAdjustment), i); + return Marshal.PtrToStringAnsi(__ret); + } + + public void addIncludeDirs(string s) + { + var arg0 = Marshal.StringToHGlobalAnsi(s); + Internal.addIncludeDirs_0((__Instance + __PointerAdjustment), arg0); + Marshal.FreeHGlobal(arg0); + } + + public void clearIncludeDirs() + { + Internal.clearIncludeDirs_0((__Instance + __PointerAdjustment)); + } + + public string getLibraryDirs(uint i) + { + var __ret = Internal.getLibraryDirs_0((__Instance + __PointerAdjustment), i); + return Marshal.PtrToStringAnsi(__ret); + } + + public void addLibraryDirs(string s) + { + var arg0 = Marshal.StringToHGlobalAnsi(s); + Internal.addLibraryDirs_0((__Instance + __PointerAdjustment), arg0); + Marshal.FreeHGlobal(arg0); + } + + public void clearLibraryDirs() + { + Internal.clearLibraryDirs_0((__Instance + __PointerAdjustment)); + } + + public string getDefines(uint i) + { + var __ret = Internal.getDefines_0((__Instance + __PointerAdjustment), i); + return Marshal.PtrToStringAnsi(__ret); + } + + public void addDefines(string s) + { + var arg0 = Marshal.StringToHGlobalAnsi(s); + Internal.addDefines_0((__Instance + __PointerAdjustment), arg0); + Marshal.FreeHGlobal(arg0); + } + + public void clearDefines() + { + Internal.clearDefines_0((__Instance + __PointerAdjustment)); + } + + public string getUndefines(uint i) + { + var __ret = Internal.getUndefines_0((__Instance + __PointerAdjustment), i); + return Marshal.PtrToStringAnsi(__ret); + } + + public void addUndefines(string s) + { + var arg0 = Marshal.StringToHGlobalAnsi(s); + Internal.addUndefines_0((__Instance + __PointerAdjustment), arg0); + Marshal.FreeHGlobal(arg0); + } + + public void clearUndefines() + { + Internal.clearUndefines_0((__Instance + __PointerAdjustment)); + } + + public uint IncludeDirsCount + { + get + { + var __ret = Internal.getIncludeDirsCount_0((__Instance + __PointerAdjustment)); + return __ret; + } + } + + public uint LibraryDirsCount + { + get + { + var __ret = Internal.getLibraryDirsCount_0((__Instance + __PointerAdjustment)); + return __ret; + } + } + + public uint DefinesCount + { + get + { + var __ret = Internal.getDefinesCount_0((__Instance + __PointerAdjustment)); + return __ret; + } + } + + public uint UndefinesCount + { + get + { + var __ret = Internal.getUndefinesCount_0((__Instance + __PointerAdjustment)); + return __ret; + } + } + + #region Virtual table interop + + private static void _dtor_0DelegateHook(global::System.IntPtr instance, int delete) + { + if (!NativeToManagedMap.ContainsKey(instance)) + throw new global::System.Exception("No managed instance was found"); + + var __target = (AbstractModule) NativeToManagedMap[instance]; + if (__target.__ownsNativeInstance) + __target.SetupVTables(); + __target.Dispose(false); + } + + private static void*[] __ManagedVTables; + private static void*[] __ManagedVTablesDtorOnly; + private static void*[] _Thunks; + + private void SetupVTables(bool destructorOnly = false) + { + } + + #endregion + } + public unsafe partial class ParserOptions : IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 248)] + [StructLayout(LayoutKind.Explicit, Size = 256)] public partial struct Internal { [FieldOffset(176)] @@ -79,6 +372,9 @@ namespace CppSharp [FieldOffset(240)] public global::System.IntPtr TargetInfo; + [FieldOffset(248)] + public global::System.IntPtr Module; + [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, EntryPoint="??0ParserOptions@CppParser@CppSharp@@QEAA@XZ")] @@ -255,7 +551,7 @@ namespace CppSharp private static void* __CopyValue(ParserOptions.Internal native) { - var ret = Marshal.AllocHGlobal(248); + var ret = Marshal.AllocHGlobal(256); CppSharp.Parser.ParserOptions.Internal.cctor_2(ret, new global::System.IntPtr(&native)); return ret.ToPointer(); } @@ -276,7 +572,7 @@ namespace CppSharp public ParserOptions() { - __Instance = Marshal.AllocHGlobal(248); + __Instance = Marshal.AllocHGlobal(256); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; Internal.ctor_0((__Instance + __PointerAdjustment)); @@ -284,7 +580,7 @@ namespace CppSharp public ParserOptions(CppSharp.Parser.ParserOptions _0) { - __Instance = Marshal.AllocHGlobal(248); + __Instance = Marshal.AllocHGlobal(256); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; if (ReferenceEquals(_0, null)) @@ -627,6 +923,24 @@ namespace CppSharp ((Internal*) __Instance)->TargetInfo = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; } } + + public CppSharp.Parser.AbstractModule Module + { + get + { + CppSharp.Parser.AbstractModule __result0; + if (((Internal*) __Instance)->Module == IntPtr.Zero) __result0 = null; + else if (CppSharp.Parser.AbstractModule.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Module)) + __result0 = (CppSharp.Parser.AbstractModule) CppSharp.Parser.AbstractModule.NativeToManagedMap[((Internal*) __Instance)->Module]; + else CppSharp.Parser.AbstractModule.NativeToManagedMap[((Internal*) __Instance)->Module] = __result0 = (CppSharp.Parser.AbstractModule) CppSharp.Parser.AbstractModule.__CreateInstance(((Internal*) __Instance)->Module); + return __result0; + } + + set + { + ((Internal*) __Instance)->Module = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + } + } } public unsafe partial class ParserDiagnostic : IDisposable @@ -1156,5 +1470,30 @@ namespace CppSharp return __result0; } } + + internal unsafe partial class AbstractModuleInternal : CppSharp.Parser.AbstractModule, IDisposable + { + private static void* __CopyValue(AbstractModule.Internal native) + { + var ret = Marshal.AllocHGlobal(104); + *(AbstractModule.Internal*) ret = native; + return ret.ToPointer(); + } + + internal AbstractModuleInternal(AbstractModule.Internal native, bool skipVTables = false) + : this(__CopyValue(native), skipVTables) + { + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + } + + internal AbstractModuleInternal(void* native, bool skipVTables = false) + : base((void*) null) + { + __PointerAdjustment = 0; + __Instance = new global::System.IntPtr(native); + __OriginalVTables = new void*[] { ((Internal*) native)->vfptr0.ToPointer() }; + } + } } } diff --git a/src/CppParser/Bindings/ParserGen.cs b/src/CppParser/Bindings/ParserGen.cs index 766c1e0c..ddd8bb3b 100644 --- a/src/CppParser/Bindings/ParserGen.cs +++ b/src/CppParser/Bindings/ParserGen.cs @@ -71,8 +71,8 @@ namespace CppSharp SetupLinuxOptions(options); var basePath = Path.Combine(GetSourceDirectory("src"), "CppParser"); - options.addIncludeDirs(basePath); - options.addLibraryDirs("."); + options.Module.addIncludeDirs(basePath); + options.Module.addLibraryDirs("."); options.OutputDir = Path.Combine(GetSourceDirectory("src"), "CppParser", "Bindings", Kind.ToString()); @@ -89,7 +89,7 @@ namespace CppSharp options.MicrosoftMode = false; options.NoBuiltinIncludes = true; - string[] sysincdirs = new[] { + string[] sysincdirs = { "/usr/include/c++/4.8", "/usr/include/x86_64-linux-gnu/c++/4.8", "/usr/include/c++/4.8/backward", diff --git a/src/CppParser/CppParser.cpp b/src/CppParser/CppParser.cpp index ccb9fc02..2fbd7277 100644 --- a/src/CppParser/CppParser.cpp +++ b/src/CppParser/CppParser.cpp @@ -10,6 +10,19 @@ namespace CppSharp { namespace CppParser { +AbstractModule::AbstractModule() +{ +} + +AbstractModule::~AbstractModule() +{ +} + +DEF_VECTOR_STRING(AbstractModule, IncludeDirs) +DEF_VECTOR_STRING(AbstractModule, LibraryDirs) +DEF_VECTOR_STRING(AbstractModule, Defines) +DEF_VECTOR_STRING(AbstractModule, Undefines) + ParserOptions::ParserOptions() : ASTContext(0) , ToolSetToUse(0) @@ -20,16 +33,13 @@ ParserOptions::ParserOptions() , Verbose(false) , LanguageVersion(CppParser::LanguageVersion::CPlusPlus11) , TargetInfo(0) + , Module(0) { } DEF_VECTOR_STRING(ParserOptions, Arguments) 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 c579e6a8..bfa06c61 100644 --- a/src/CppParser/CppParser.h +++ b/src/CppParser/CppParser.h @@ -31,6 +31,17 @@ enum class LanguageVersion CPlusPlus11 }; +class CS_API AbstractModule +{ +public: + AbstractModule(); + VECTOR_STRING(IncludeDirs) + VECTOR_STRING(LibraryDirs) + VECTOR_STRING(Defines) + VECTOR_STRING(Undefines) + ~AbstractModule(); +}; + struct CS_API ParserOptions { ParserOptions(); @@ -41,11 +52,7 @@ struct CS_API ParserOptions STRING(FileName) // Include directories - VECTOR_STRING(IncludeDirs) VECTOR_STRING(SystemIncludeDirs) - VECTOR_STRING(Defines) - VECTOR_STRING(Undefines) - VECTOR_STRING(LibraryDirs) CppSharp::CppParser::AST::ASTContext* ASTContext; @@ -60,6 +67,8 @@ struct CS_API ParserOptions LanguageVersion LanguageVersion; ParserTargetInfo* TargetInfo; + + AbstractModule* Module; }; enum class ParserDiagnosticLevel diff --git a/src/CppParser/Parser.cpp b/src/CppParser/Parser.cpp index c4c503f9..d999a1e4 100644 --- a/src/CppParser/Parser.cpp +++ b/src/CppParser/Parser.cpp @@ -159,7 +159,7 @@ void Parser::SetupHeader() for (unsigned I = 0, E = Opts->Arguments.size(); I != E; ++I) { - const String& Arg = Opts->Arguments[I]; + const auto& Arg = Opts->Arguments[I]; args.push_back(Arg.c_str()); } @@ -210,27 +210,27 @@ void Parser::SetupHeader() if (Opts->Verbose) HSOpts.Verbose = true; - for (unsigned I = 0, E = Opts->IncludeDirs.size(); I != E; ++I) + for (unsigned I = 0, E = Opts->Module->IncludeDirs.size(); I != E; ++I) { - const String& s = Opts->IncludeDirs[I]; + const auto& s = Opts->Module->IncludeDirs[I]; HSOpts.AddPath(s, frontend::Angled, false, false); } for (unsigned I = 0, E = Opts->SystemIncludeDirs.size(); I != E; ++I) { - String s = Opts->SystemIncludeDirs[I]; + const auto& s = Opts->SystemIncludeDirs[I]; HSOpts.AddPath(s, frontend::System, false, false); } - for (unsigned I = 0, E = Opts->Defines.size(); I != E; ++I) + for (unsigned I = 0, E = Opts->Module->Defines.size(); I != E; ++I) { - const String& define = Opts->Defines[I]; + const auto& define = Opts->Module->Defines[I]; PPOpts.addMacroDef(define); } - for (unsigned I = 0, E = Opts->Undefines.size(); I != E; ++I) + for (unsigned I = 0, E = Opts->Module->Undefines.size(); I != E; ++I) { - const String& undefine = Opts->Undefines[I]; + const auto& undefine = Opts->Module->Undefines[I]; PPOpts.addMacroUndef(undefine); } @@ -2334,7 +2334,7 @@ void Parser::WalkFunction(clang::FunctionDecl* FD, Function* F, F->ReturnType = GetQualifiedType(FD->getReturnType(), WalkType(FD->getReturnType(), &RTL)); - String Mangled = GetDeclMangledName(FD); + const auto& Mangled = GetDeclMangledName(FD); F->Mangled = Mangled; clang::SourceLocation ParamStartLoc = FD->getLocStart(); @@ -3476,9 +3476,9 @@ ParserResult* Parser::ParseLibrary(const std::string& File, ParserResult* res) llvm::StringRef FileEntry; - for (unsigned I = 0, E = Opts->LibraryDirs.size(); I != E; ++I) + for (unsigned I = 0, E = Opts->Module->LibraryDirs.size(); I != E; ++I) { - auto& LibDir = Opts->LibraryDirs[I]; + auto& LibDir = Opts->Module->LibraryDirs[I]; llvm::SmallString<256> Path(LibDir); llvm::sys::path::append(Path, File); diff --git a/src/CppParser/Parser.h b/src/CppParser/Parser.h index 684d3ebb..6fe2fd7e 100644 --- a/src/CppParser/Parser.h +++ b/src/CppParser/Parser.h @@ -21,7 +21,6 @@ #include "CppParser.h" #include -typedef std::string String; namespace clang { namespace CodeGen { diff --git a/src/Generator/Module.cs b/src/Generator/Module.cs index dd766117..f6a85b6a 100644 --- a/src/Generator/Module.cs +++ b/src/Generator/Module.cs @@ -1,8 +1,12 @@ using System.Collections.Generic; +using CppSharp.Parser; namespace CppSharp { - public class Module + /// + /// Contains sets of headers and optionally libraries to wrap in a one target library. + /// + public class Module : AbstractModule { public Module() { diff --git a/src/Generator/Options.cs b/src/Generator/Options.cs index 9adf3672..44960045 100644 --- a/src/Generator/Options.cs +++ b/src/Generator/Options.cs @@ -60,23 +60,21 @@ namespace CppSharp public bool DryRun; // Parser options - public List Headers { get { return Module.Headers; } } + public List Headers { get { return ((Module) Module).Headers; } } public bool IgnoreParseWarnings; public bool IgnoreParseErrors; - public Module Module { get; set; } - public bool IsItaniumLikeAbi { get { return Abi != CppAbi.Microsoft; } } public bool IsMicrosoftAbi { get { return Abi == CppAbi.Microsoft; } } // Library options - public List Libraries { get { return Module.Libraries; } } + public List Libraries { get { return ((Module) Module).Libraries; } } public bool CheckSymbols; public string SharedLibraryName { - get { return Module.SharedLibraryName; } - set { Module.SharedLibraryName = value; } + get { return ((Module) Module).SharedLibraryName; } + set { ((Module) Module).SharedLibraryName = value; } } // Generator options @@ -84,16 +82,16 @@ namespace CppSharp public string OutputNamespace { - get { return Module.OutputNamespace; } - set { Module.OutputNamespace = value; } + get { return ((Module) Module).OutputNamespace; } + set { ((Module) Module).OutputNamespace = value; } } public string OutputDir; public string LibraryName { - get { return Module.LibraryName; } - set { Module.LibraryName = value; } + get { return ((Module) Module).LibraryName; } + set { ((Module) Module).LibraryName = value; } } public bool OutputInteropIncludes; @@ -158,14 +156,14 @@ namespace CppSharp public string InlinesLibraryName { - get { return Module.InlinesLibraryName; } - set { Module.InlinesLibraryName = value; } + get { return ((Module) Module).InlinesLibraryName; } + set { ((Module) Module).InlinesLibraryName = value; } } public string TemplatesLibraryName { - get { return Module.TemplatesLibraryName; } - set { Module.TemplatesLibraryName = value; } + get { return ((Module) Module).TemplatesLibraryName; } + set { ((Module) Module).TemplatesLibraryName = value; } } public bool IsCSharpGenerator