diff --git a/src/CppParser/Bindings/CLI/CppParser.cpp b/src/CppParser/Bindings/CLI/CppParser.cpp index 60d4be9a..239be4b0 100644 --- a/src/CppParser/Bindings/CLI/CppParser.cpp +++ b/src/CppParser/Bindings/CLI/CppParser.cpp @@ -723,6 +723,16 @@ void CppSharp::Parser::ParserResult::Library::set(CppSharp::Parser::AST::NativeL ((::CppSharp::CppParser::ParserResult*)NativePtr)->library = (::CppSharp::CppParser::AST::NativeLibrary*)value->NativePtr; } +CppSharp::Parser::ParserTargetInfo^ CppSharp::Parser::ParserResult::TargetInfo::get() +{ + return (((::CppSharp::CppParser::ParserResult*)NativePtr)->targetInfo == nullptr) ? nullptr : gcnew CppSharp::Parser::ParserTargetInfo((::CppSharp::CppParser::ParserTargetInfo*)((::CppSharp::CppParser::ParserResult*)NativePtr)->targetInfo); +} + +void CppSharp::Parser::ParserResult::TargetInfo::set(CppSharp::Parser::ParserTargetInfo^ value) +{ + ((::CppSharp::CppParser::ParserResult*)NativePtr)->targetInfo = (::CppSharp::CppParser::ParserTargetInfo*)value->NativePtr; +} + unsigned int CppSharp::Parser::ParserResult::DiagnosticsCount::get() { auto __ret = ((::CppSharp::CppParser::ParserResult*)NativePtr)->getDiagnosticsCount(); @@ -761,14 +771,6 @@ CppSharp::Parser::ParserResult^ CppSharp::Parser::ClangParser::ParseLibrary(CppS return (__ret == nullptr) ? nullptr : gcnew CppSharp::Parser::ParserResult((::CppSharp::CppParser::ParserResult*)__ret); } -CppSharp::Parser::ParserTargetInfo^ CppSharp::Parser::ClangParser::GetTargetInfo(CppSharp::Parser::CppParserOptions^ Opts) -{ - auto __arg0 = (::CppSharp::CppParser::CppParserOptions*)Opts->NativePtr; - auto __ret = ::CppSharp::CppParser::ClangParser::GetTargetInfo(__arg0); - if (__ret == nullptr) return nullptr; - return (__ret == nullptr) ? nullptr : gcnew CppSharp::Parser::ParserTargetInfo((::CppSharp::CppParser::ParserTargetInfo*)__ret); -} - CppSharp::Parser::ClangParser::ClangParser() { __ownsNativeInstance = true; diff --git a/src/CppParser/Bindings/CLI/CppParser.h b/src/CppParser/Bindings/CLI/CppParser.h index a390df07..78aee77c 100644 --- a/src/CppParser/Bindings/CLI/CppParser.h +++ b/src/CppParser/Bindings/CLI/CppParser.h @@ -368,6 +368,12 @@ namespace CppSharp void set(CppSharp::Parser::AST::NativeLibrary^); } + property CppSharp::Parser::ParserTargetInfo^ TargetInfo + { + CppSharp::Parser::ParserTargetInfo^ get(); + void set(CppSharp::Parser::ParserTargetInfo^); + } + property unsigned int DiagnosticsCount { unsigned int get(); @@ -406,8 +412,6 @@ namespace CppSharp static CppSharp::Parser::ParserResult^ ParseLibrary(CppSharp::Parser::CppParserOptions^ Opts); - static CppSharp::Parser::ParserTargetInfo^ GetTargetInfo(CppSharp::Parser::CppParserOptions^ Opts); - protected: bool __ownsNativeInstance; }; diff --git a/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs index c7095f99..1bf57148 100644 --- a/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs @@ -18751,7 +18751,7 @@ namespace CppSharp public unsafe partial class ParserResult : IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 20)] + [StructLayout(LayoutKind.Explicit, Size = 24)] public partial struct __Internal { [FieldOffset(0)] @@ -18763,6 +18763,9 @@ namespace CppSharp [FieldOffset(16)] internal global::System.IntPtr library; + [FieldOffset(20)] + internal global::System.IntPtr targetInfo; + [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, EntryPoint="_ZN8CppSharp9CppParser12ParserResultC2Ev")] @@ -18926,6 +18929,24 @@ namespace CppSharp } } + public global::CppSharp.Parser.ParserTargetInfo TargetInfo + { + get + { + global::CppSharp.Parser.ParserTargetInfo __result0; + if (((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo == IntPtr.Zero) __result0 = null; + else if (global::CppSharp.Parser.ParserTargetInfo.NativeToManagedMap.ContainsKey(((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo)) + __result0 = (global::CppSharp.Parser.ParserTargetInfo) global::CppSharp.Parser.ParserTargetInfo.NativeToManagedMap[((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo]; + else __result0 = global::CppSharp.Parser.ParserTargetInfo.__CreateInstance(((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo); + return __result0; + } + + set + { + ((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + } + } + public uint DiagnosticsCount { get @@ -18955,11 +18976,6 @@ namespace CppSharp [DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, EntryPoint="_ZN8CppSharp9CppParser11ClangParser12ParseLibraryEPNS0_16CppParserOptionsE")] internal static extern global::System.IntPtr ParseLibrary(global::System.IntPtr Opts); - - [SuppressUnmanagedCodeSecurity] - [DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, - EntryPoint="_ZN8CppSharp9CppParser11ClangParser13GetTargetInfoEPNS0_16CppParserOptionsE")] - internal static extern global::System.IntPtr GetTargetInfo(global::System.IntPtr Opts); } public global::System.IntPtr __Instance { get; protected set; } @@ -19055,18 +19071,6 @@ namespace CppSharp else __result0 = global::CppSharp.Parser.ParserResult.__CreateInstance(__ret); return __result0; } - - public static global::CppSharp.Parser.ParserTargetInfo GetTargetInfo(global::CppSharp.Parser.CppParserOptions Opts) - { - var __arg0 = ReferenceEquals(Opts, null) ? global::System.IntPtr.Zero : Opts.__Instance; - var __ret = __Internal.GetTargetInfo(__arg0); - global::CppSharp.Parser.ParserTargetInfo __result0; - if (__ret == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.ParserTargetInfo.NativeToManagedMap.ContainsKey(__ret)) - __result0 = (global::CppSharp.Parser.ParserTargetInfo) global::CppSharp.Parser.ParserTargetInfo.NativeToManagedMap[__ret]; - else __result0 = global::CppSharp.Parser.ParserTargetInfo.__CreateInstance(__ret); - return __result0; - } } } } diff --git a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs index 92b4f229..5debd308 100644 --- a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs @@ -18751,7 +18751,7 @@ namespace CppSharp public unsafe partial class ParserResult : IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 20)] + [StructLayout(LayoutKind.Explicit, Size = 24)] public partial struct __Internal { [FieldOffset(0)] @@ -18763,6 +18763,9 @@ namespace CppSharp [FieldOffset(16)] internal global::System.IntPtr library; + [FieldOffset(20)] + internal global::System.IntPtr targetInfo; + [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, EntryPoint="??0ParserResult@CppParser@CppSharp@@QAE@XZ")] @@ -18926,6 +18929,24 @@ namespace CppSharp } } + public global::CppSharp.Parser.ParserTargetInfo TargetInfo + { + get + { + global::CppSharp.Parser.ParserTargetInfo __result0; + if (((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo == IntPtr.Zero) __result0 = null; + else if (global::CppSharp.Parser.ParserTargetInfo.NativeToManagedMap.ContainsKey(((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo)) + __result0 = (global::CppSharp.Parser.ParserTargetInfo) global::CppSharp.Parser.ParserTargetInfo.NativeToManagedMap[((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo]; + else __result0 = global::CppSharp.Parser.ParserTargetInfo.__CreateInstance(((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo); + return __result0; + } + + set + { + ((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + } + } + public uint DiagnosticsCount { get @@ -18955,11 +18976,6 @@ namespace CppSharp [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, EntryPoint="?ParseLibrary@ClangParser@CppParser@CppSharp@@SAPAUParserResult@23@PAUCppParserOptions@23@@Z")] internal static extern global::System.IntPtr ParseLibrary(global::System.IntPtr Opts); - - [SuppressUnmanagedCodeSecurity] - [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, - EntryPoint="?GetTargetInfo@ClangParser@CppParser@CppSharp@@SAPAUParserTargetInfo@23@PAUCppParserOptions@23@@Z")] - internal static extern global::System.IntPtr GetTargetInfo(global::System.IntPtr Opts); } public global::System.IntPtr __Instance { get; protected set; } @@ -19055,18 +19071,6 @@ namespace CppSharp else __result0 = global::CppSharp.Parser.ParserResult.__CreateInstance(__ret); return __result0; } - - public static global::CppSharp.Parser.ParserTargetInfo GetTargetInfo(global::CppSharp.Parser.CppParserOptions Opts) - { - var __arg0 = ReferenceEquals(Opts, null) ? global::System.IntPtr.Zero : Opts.__Instance; - var __ret = __Internal.GetTargetInfo(__arg0); - global::CppSharp.Parser.ParserTargetInfo __result0; - if (__ret == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.ParserTargetInfo.NativeToManagedMap.ContainsKey(__ret)) - __result0 = (global::CppSharp.Parser.ParserTargetInfo) global::CppSharp.Parser.ParserTargetInfo.NativeToManagedMap[__ret]; - else __result0 = global::CppSharp.Parser.ParserTargetInfo.__CreateInstance(__ret); - return __result0; - } } } } diff --git a/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs index b8a0a018..4e399189 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs @@ -18750,7 +18750,7 @@ namespace CppSharp public unsafe partial class ParserResult : IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 40)] + [StructLayout(LayoutKind.Explicit, Size = 48)] public partial struct __Internal { [FieldOffset(0)] @@ -18762,6 +18762,9 @@ namespace CppSharp [FieldOffset(32)] internal global::System.IntPtr library; + [FieldOffset(40)] + internal global::System.IntPtr targetInfo; + [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, EntryPoint="_ZN8CppSharp9CppParser12ParserResultC2Ev")] @@ -18925,6 +18928,24 @@ namespace CppSharp } } + public global::CppSharp.Parser.ParserTargetInfo TargetInfo + { + get + { + global::CppSharp.Parser.ParserTargetInfo __result0; + if (((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo == IntPtr.Zero) __result0 = null; + else if (global::CppSharp.Parser.ParserTargetInfo.NativeToManagedMap.ContainsKey(((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo)) + __result0 = (global::CppSharp.Parser.ParserTargetInfo) global::CppSharp.Parser.ParserTargetInfo.NativeToManagedMap[((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo]; + else __result0 = global::CppSharp.Parser.ParserTargetInfo.__CreateInstance(((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo); + return __result0; + } + + set + { + ((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + } + } + public uint DiagnosticsCount { get @@ -18954,11 +18975,6 @@ namespace CppSharp [DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, EntryPoint="_ZN8CppSharp9CppParser11ClangParser12ParseLibraryEPNS0_16CppParserOptionsE")] internal static extern global::System.IntPtr ParseLibrary(global::System.IntPtr Opts); - - [SuppressUnmanagedCodeSecurity] - [DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, - EntryPoint="_ZN8CppSharp9CppParser11ClangParser13GetTargetInfoEPNS0_16CppParserOptionsE")] - internal static extern global::System.IntPtr GetTargetInfo(global::System.IntPtr Opts); } public global::System.IntPtr __Instance { get; protected set; } @@ -19054,18 +19070,6 @@ namespace CppSharp else __result0 = global::CppSharp.Parser.ParserResult.__CreateInstance(__ret); return __result0; } - - public static global::CppSharp.Parser.ParserTargetInfo GetTargetInfo(global::CppSharp.Parser.CppParserOptions Opts) - { - var __arg0 = ReferenceEquals(Opts, null) ? global::System.IntPtr.Zero : Opts.__Instance; - var __ret = __Internal.GetTargetInfo(__arg0); - global::CppSharp.Parser.ParserTargetInfo __result0; - if (__ret == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.ParserTargetInfo.NativeToManagedMap.ContainsKey(__ret)) - __result0 = (global::CppSharp.Parser.ParserTargetInfo) global::CppSharp.Parser.ParserTargetInfo.NativeToManagedMap[__ret]; - else __result0 = global::CppSharp.Parser.ParserTargetInfo.__CreateInstance(__ret); - return __result0; - } } } } diff --git a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs index 94d81bb1..0c0d2b35 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs @@ -18750,7 +18750,7 @@ namespace CppSharp public unsafe partial class ParserResult : IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 40)] + [StructLayout(LayoutKind.Explicit, Size = 48)] public partial struct __Internal { [FieldOffset(0)] @@ -18762,6 +18762,9 @@ namespace CppSharp [FieldOffset(32)] internal global::System.IntPtr library; + [FieldOffset(40)] + internal global::System.IntPtr targetInfo; + [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, EntryPoint="_ZN8CppSharp9CppParser12ParserResultC2Ev")] @@ -18925,6 +18928,24 @@ namespace CppSharp } } + public global::CppSharp.Parser.ParserTargetInfo TargetInfo + { + get + { + global::CppSharp.Parser.ParserTargetInfo __result0; + if (((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo == IntPtr.Zero) __result0 = null; + else if (global::CppSharp.Parser.ParserTargetInfo.NativeToManagedMap.ContainsKey(((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo)) + __result0 = (global::CppSharp.Parser.ParserTargetInfo) global::CppSharp.Parser.ParserTargetInfo.NativeToManagedMap[((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo]; + else __result0 = global::CppSharp.Parser.ParserTargetInfo.__CreateInstance(((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo); + return __result0; + } + + set + { + ((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + } + } + public uint DiagnosticsCount { get @@ -18954,11 +18975,6 @@ namespace CppSharp [DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, EntryPoint="_ZN8CppSharp9CppParser11ClangParser12ParseLibraryEPNS0_16CppParserOptionsE")] internal static extern global::System.IntPtr ParseLibrary(global::System.IntPtr Opts); - - [SuppressUnmanagedCodeSecurity] - [DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, - EntryPoint="_ZN8CppSharp9CppParser11ClangParser13GetTargetInfoEPNS0_16CppParserOptionsE")] - internal static extern global::System.IntPtr GetTargetInfo(global::System.IntPtr Opts); } public global::System.IntPtr __Instance { get; protected set; } @@ -19054,18 +19070,6 @@ namespace CppSharp else __result0 = global::CppSharp.Parser.ParserResult.__CreateInstance(__ret); return __result0; } - - public static global::CppSharp.Parser.ParserTargetInfo GetTargetInfo(global::CppSharp.Parser.CppParserOptions Opts) - { - var __arg0 = ReferenceEquals(Opts, null) ? global::System.IntPtr.Zero : Opts.__Instance; - var __ret = __Internal.GetTargetInfo(__arg0); - global::CppSharp.Parser.ParserTargetInfo __result0; - if (__ret == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.ParserTargetInfo.NativeToManagedMap.ContainsKey(__ret)) - __result0 = (global::CppSharp.Parser.ParserTargetInfo) global::CppSharp.Parser.ParserTargetInfo.NativeToManagedMap[__ret]; - else __result0 = global::CppSharp.Parser.ParserTargetInfo.__CreateInstance(__ret); - return __result0; - } } } } diff --git a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs index 4995fbb5..21503613 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs @@ -18750,7 +18750,7 @@ namespace CppSharp public unsafe partial class ParserResult : IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 40)] + [StructLayout(LayoutKind.Explicit, Size = 48)] public partial struct __Internal { [FieldOffset(0)] @@ -18762,6 +18762,9 @@ namespace CppSharp [FieldOffset(32)] internal global::System.IntPtr library; + [FieldOffset(40)] + internal global::System.IntPtr targetInfo; + [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, EntryPoint="_ZN8CppSharp9CppParser12ParserResultC2Ev")] @@ -18925,6 +18928,24 @@ namespace CppSharp } } + public global::CppSharp.Parser.ParserTargetInfo TargetInfo + { + get + { + global::CppSharp.Parser.ParserTargetInfo __result0; + if (((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo == IntPtr.Zero) __result0 = null; + else if (global::CppSharp.Parser.ParserTargetInfo.NativeToManagedMap.ContainsKey(((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo)) + __result0 = (global::CppSharp.Parser.ParserTargetInfo) global::CppSharp.Parser.ParserTargetInfo.NativeToManagedMap[((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo]; + else __result0 = global::CppSharp.Parser.ParserTargetInfo.__CreateInstance(((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo); + return __result0; + } + + set + { + ((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + } + } + public uint DiagnosticsCount { get @@ -18954,11 +18975,6 @@ namespace CppSharp [DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, EntryPoint="_ZN8CppSharp9CppParser11ClangParser12ParseLibraryEPNS0_16CppParserOptionsE")] internal static extern global::System.IntPtr ParseLibrary(global::System.IntPtr Opts); - - [SuppressUnmanagedCodeSecurity] - [DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, - EntryPoint="_ZN8CppSharp9CppParser11ClangParser13GetTargetInfoEPNS0_16CppParserOptionsE")] - internal static extern global::System.IntPtr GetTargetInfo(global::System.IntPtr Opts); } public global::System.IntPtr __Instance { get; protected set; } @@ -19054,18 +19070,6 @@ namespace CppSharp else __result0 = global::CppSharp.Parser.ParserResult.__CreateInstance(__ret); return __result0; } - - public static global::CppSharp.Parser.ParserTargetInfo GetTargetInfo(global::CppSharp.Parser.CppParserOptions Opts) - { - var __arg0 = ReferenceEquals(Opts, null) ? global::System.IntPtr.Zero : Opts.__Instance; - var __ret = __Internal.GetTargetInfo(__arg0); - global::CppSharp.Parser.ParserTargetInfo __result0; - if (__ret == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.ParserTargetInfo.NativeToManagedMap.ContainsKey(__ret)) - __result0 = (global::CppSharp.Parser.ParserTargetInfo) global::CppSharp.Parser.ParserTargetInfo.NativeToManagedMap[__ret]; - else __result0 = global::CppSharp.Parser.ParserTargetInfo.__CreateInstance(__ret); - return __result0; - } } } } diff --git a/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs index 43831483..b34fd668 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs @@ -18751,7 +18751,7 @@ namespace CppSharp public unsafe partial class ParserResult : IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 40)] + [StructLayout(LayoutKind.Explicit, Size = 48)] public partial struct __Internal { [FieldOffset(0)] @@ -18763,6 +18763,9 @@ namespace CppSharp [FieldOffset(32)] internal global::System.IntPtr library; + [FieldOffset(40)] + internal global::System.IntPtr targetInfo; + [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, EntryPoint="??0ParserResult@CppParser@CppSharp@@QEAA@XZ")] @@ -18926,6 +18929,24 @@ namespace CppSharp } } + public global::CppSharp.Parser.ParserTargetInfo TargetInfo + { + get + { + global::CppSharp.Parser.ParserTargetInfo __result0; + if (((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo == IntPtr.Zero) __result0 = null; + else if (global::CppSharp.Parser.ParserTargetInfo.NativeToManagedMap.ContainsKey(((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo)) + __result0 = (global::CppSharp.Parser.ParserTargetInfo) global::CppSharp.Parser.ParserTargetInfo.NativeToManagedMap[((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo]; + else __result0 = global::CppSharp.Parser.ParserTargetInfo.__CreateInstance(((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo); + return __result0; + } + + set + { + ((global::CppSharp.Parser.ParserResult.__Internal*) __Instance)->targetInfo = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + } + } + public uint DiagnosticsCount { get @@ -18955,11 +18976,6 @@ namespace CppSharp [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, EntryPoint="?ParseLibrary@ClangParser@CppParser@CppSharp@@SAPEAUParserResult@23@PEAUCppParserOptions@23@@Z")] internal static extern global::System.IntPtr ParseLibrary(global::System.IntPtr Opts); - - [SuppressUnmanagedCodeSecurity] - [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, - EntryPoint="?GetTargetInfo@ClangParser@CppParser@CppSharp@@SAPEAUParserTargetInfo@23@PEAUCppParserOptions@23@@Z")] - internal static extern global::System.IntPtr GetTargetInfo(global::System.IntPtr Opts); } public global::System.IntPtr __Instance { get; protected set; } @@ -19055,18 +19071,6 @@ namespace CppSharp else __result0 = global::CppSharp.Parser.ParserResult.__CreateInstance(__ret); return __result0; } - - public static global::CppSharp.Parser.ParserTargetInfo GetTargetInfo(global::CppSharp.Parser.CppParserOptions Opts) - { - var __arg0 = ReferenceEquals(Opts, null) ? global::System.IntPtr.Zero : Opts.__Instance; - var __ret = __Internal.GetTargetInfo(__arg0); - global::CppSharp.Parser.ParserTargetInfo __result0; - if (__ret == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.ParserTargetInfo.NativeToManagedMap.ContainsKey(__ret)) - __result0 = (global::CppSharp.Parser.ParserTargetInfo) global::CppSharp.Parser.ParserTargetInfo.NativeToManagedMap[__ret]; - else __result0 = global::CppSharp.Parser.ParserTargetInfo.__CreateInstance(__ret); - return __result0; - } } } } diff --git a/src/CppParser/CppParser.cpp b/src/CppParser/CppParser.cpp index 000408fb..e705e1b4 100644 --- a/src/CppParser/CppParser.cpp +++ b/src/CppParser/CppParser.cpp @@ -34,6 +34,7 @@ DEF_VECTOR_STRING(CppParserOptions, SupportedStdTypes) ParserResult::ParserResult() : library(0) + , targetInfo(0) { } @@ -41,10 +42,13 @@ ParserResult::ParserResult(const ParserResult& rhs) : kind(rhs.kind) , Diagnostics(rhs.Diagnostics) , library(rhs.library) + , targetInfo(rhs.targetInfo) {} ParserResult::~ParserResult() { + if (library) + delete library; } ParserDiagnostic::ParserDiagnostic() {} diff --git a/src/CppParser/CppParser.h b/src/CppParser/CppParser.h index 385dd840..98436b92 100644 --- a/src/CppParser/CppParser.h +++ b/src/CppParser/CppParser.h @@ -83,6 +83,7 @@ struct CS_API ParserResult VECTOR(ParserDiagnostic, Diagnostics) NativeLibrary* library; + ParserTargetInfo* targetInfo; }; enum class SourceLocationKind @@ -100,7 +101,6 @@ public: static ParserResult* ParseHeader(CppParserOptions* Opts); static ParserResult* ParseLibrary(CppParserOptions* Opts); - static ParserTargetInfo* GetTargetInfo(CppParserOptions* Opts); }; } } \ No newline at end of file diff --git a/src/CppParser/Parser.cpp b/src/CppParser/Parser.cpp index 37c39395..082cf7bf 100644 --- a/src/CppParser/Parser.cpp +++ b/src/CppParser/Parser.cpp @@ -4063,6 +4063,8 @@ ParserResult* Parser::ParseHeader(const std::vector& SourceFiles) WalkAST(); + res->targetInfo = GetTargetInfo(); + res->kind = ParserResultKind::Success; return res; } @@ -4285,29 +4287,8 @@ ParserResult* ClangParser::ParseLibrary(CppParserOptions* Opts) return Parser.ParseLibrary(Opts->libraryFile); } -ParserTargetInfo* ClangParser::GetTargetInfo(CppParserOptions* Opts) -{ - if (!Opts) - return nullptr; - - Parser parser(Opts); - return parser.GetTargetInfo(); -} - ParserTargetInfo* Parser::GetTargetInfo() { - assert(opts->ASTContext && "Expected a valid ASTContext"); - - Setup(); - - std::unique_ptr SC(new clang::SemaConsumer()); - c->setASTConsumer(std::move(SC)); - - c->createSema(clang::TU_Complete, 0); - - auto DiagClient = new DiagnosticConsumer(); - c->getDiagnostics().setClient(DiagClient); - auto parserTargetInfo = new ParserTargetInfo(); auto& TI = c->getASTContext().getTargetInfo(); diff --git a/src/CppParser/Parser.h b/src/CppParser/Parser.h index 83ed76f1..cfab66f8 100644 --- a/src/CppParser/Parser.h +++ b/src/CppParser/Parser.h @@ -51,13 +51,6 @@ public: void Setup(); ParserResult* ParseHeader(const std::vector& SourceFiles); ParserResult* ParseLibrary(const std::string& File); - ParserResultKind ParseArchive(llvm::StringRef File, - llvm::object::Archive* Archive, - CppSharp::CppParser::NativeLibrary*& NativeLib); - ParserResultKind ParseSharedLib(llvm::StringRef File, - llvm::object::ObjectFile* ObjectFile, - CppSharp::CppParser::NativeLibrary*& NativeLib); - ParserTargetInfo* GetTargetInfo(); private: bool IsSupported(const clang::NamedDecl* ND); @@ -151,6 +144,11 @@ private: llvm::object::basic_symbol_iterator End, CppSharp::CppParser::NativeLibrary*& NativeLib); Declaration* GetDeclarationFromFriend(clang::NamedDecl* FriendDecl); + ParserResultKind ParseArchive(llvm::StringRef File, + llvm::object::Archive* Archive, CppSharp::CppParser::NativeLibrary*& NativeLib); + ParserResultKind ParseSharedLib(llvm::StringRef File, + llvm::object::ObjectFile* ObjectFile, CppSharp::CppParser::NativeLibrary*& NativeLib); + ParserTargetInfo* GetTargetInfo(); int index; CppParserOptions* opts; diff --git a/src/Generator/Driver.cs b/src/Generator/Driver.cs index 4e9ffdc2..b43298b2 100644 --- a/src/Generator/Driver.cs +++ b/src/Generator/Driver.cs @@ -127,25 +127,27 @@ namespace CppSharp if (Options.UnityBuild) { var parserOptions = ParserOptions.BuildForSourceFile(Options.Modules); - var result = parser.ParseSourceFiles(sourceFiles, parserOptions); - result.Dispose(); + using (var result = parser.ParseSourceFiles(sourceFiles, parserOptions)) + Context.TargetInfo = result.TargetInfo; + if (string.IsNullOrEmpty(ParserOptions.TargetTriple)) + ParserOptions.TargetTriple = parserOptions.TargetTriple; } else { - var results = new List(); - foreach (var sourceFile in sourceFiles) { var parserOptions = ParserOptions.BuildForSourceFile( Options.Modules, sourceFile); - results.Add(parser.ParseSourceFile(sourceFile, parserOptions)); + using (ParserResult result = parser.ParseSourceFile(sourceFile, parserOptions)) + if (Context.TargetInfo == null) + Context.TargetInfo = result.TargetInfo; + else + result.TargetInfo.Dispose(); + if (string.IsNullOrEmpty(ParserOptions.TargetTriple)) + ParserOptions.TargetTriple = parserOptions.TargetTriple; } - - foreach (var result in results) - result.Dispose(); } - Context.TargetInfo = parser.GetTargetInfo(ParserOptions); Context.ASTContext = ClangParser.ConvertASTContext(astContext); return !hasParsingErrors; @@ -190,8 +192,6 @@ namespace CppSharp continue; Context.Symbols.Libraries.Add(ClangParser.ConvertLibrary(res.Library)); - - res.Library.Dispose(); } } } diff --git a/src/Generator/Passes/GenerateSymbolsPass.cs b/src/Generator/Passes/GenerateSymbolsPass.cs index bba406ed..c6cd0f21 100644 --- a/src/Generator/Passes/GenerateSymbolsPass.cs +++ b/src/Generator/Passes/GenerateSymbolsPass.cs @@ -184,7 +184,6 @@ namespace CppSharp.Passes Context.Symbols.Libraries.Add(nativeLibrary); Context.Symbols.IndexSymbols(); } - parserResult.Library.Dispose(); } else Diagnostics.Error($"Parsing of {Path.Combine(outputDir, output)} failed."); diff --git a/src/Parser/Parser.cs b/src/Parser/Parser.cs index 0a7fdbf0..847ff00d 100644 --- a/src/Parser/Parser.cs +++ b/src/Parser/Parser.cs @@ -35,16 +35,6 @@ namespace CppSharp ASTContext = context; } - /// - /// Gets target information for a specific target triple. - /// - public ParserTargetInfo GetTargetInfo(ParserOptions options) - { - options.ASTContext = ASTContext; - - return Parser.ClangParser.GetTargetInfo(options); - } - /// /// Parses a C++ source file as a translation unit. ///