Browse Source

Reused the parsing of headers to get the target info as well.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/1005/head
Dimitar Dobrev 8 years ago
parent
commit
33bc64ad9a
  1. 18
      src/CppParser/Bindings/CLI/CppParser.cpp
  2. 8
      src/CppParser/Bindings/CLI/CppParser.h
  3. 40
      src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs
  4. 40
      src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs
  5. 40
      src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs
  6. 40
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs
  7. 40
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs
  8. 40
      src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs
  9. 4
      src/CppParser/CppParser.cpp
  10. 2
      src/CppParser/CppParser.h
  11. 23
      src/CppParser/Parser.cpp
  12. 12
      src/CppParser/Parser.h
  13. 22
      src/Generator/Driver.cs
  14. 1
      src/Generator/Passes/GenerateSymbolsPass.cs
  15. 10
      src/Parser/Parser.cs

18
src/CppParser/Bindings/CLI/CppParser.cpp

@ -723,6 +723,16 @@ void CppSharp::Parser::ParserResult::Library::set(CppSharp::Parser::AST::NativeL @@ -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 @@ -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;

8
src/CppParser/Bindings/CLI/CppParser.h

@ -368,6 +368,12 @@ namespace CppSharp @@ -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 @@ -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;
};

40
src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs

@ -18751,7 +18751,7 @@ namespace CppSharp @@ -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 @@ -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 @@ -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 @@ -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 @@ -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;
}
}
}
}

40
src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs

@ -18751,7 +18751,7 @@ namespace CppSharp @@ -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 @@ -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 @@ -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 @@ -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 @@ -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;
}
}
}
}

40
src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs

@ -18750,7 +18750,7 @@ namespace CppSharp @@ -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 @@ -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 @@ -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 @@ -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 @@ -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;
}
}
}
}

40
src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs

@ -18750,7 +18750,7 @@ namespace CppSharp @@ -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 @@ -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 @@ -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 @@ -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 @@ -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;
}
}
}
}

40
src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs

@ -18750,7 +18750,7 @@ namespace CppSharp @@ -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 @@ -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 @@ -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 @@ -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 @@ -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;
}
}
}
}

40
src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs

@ -18751,7 +18751,7 @@ namespace CppSharp @@ -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 @@ -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 @@ -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 @@ -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 @@ -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;
}
}
}
}

4
src/CppParser/CppParser.cpp

@ -34,6 +34,7 @@ DEF_VECTOR_STRING(CppParserOptions, SupportedStdTypes) @@ -34,6 +34,7 @@ DEF_VECTOR_STRING(CppParserOptions, SupportedStdTypes)
ParserResult::ParserResult()
: library(0)
, targetInfo(0)
{
}
@ -41,10 +42,13 @@ ParserResult::ParserResult(const ParserResult& rhs) @@ -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() {}

2
src/CppParser/CppParser.h

@ -83,6 +83,7 @@ struct CS_API ParserResult @@ -83,6 +83,7 @@ struct CS_API ParserResult
VECTOR(ParserDiagnostic, Diagnostics)
NativeLibrary* library;
ParserTargetInfo* targetInfo;
};
enum class SourceLocationKind
@ -100,7 +101,6 @@ public: @@ -100,7 +101,6 @@ public:
static ParserResult* ParseHeader(CppParserOptions* Opts);
static ParserResult* ParseLibrary(CppParserOptions* Opts);
static ParserTargetInfo* GetTargetInfo(CppParserOptions* Opts);
};
} }

23
src/CppParser/Parser.cpp

@ -4063,6 +4063,8 @@ ParserResult* Parser::ParseHeader(const std::vector<std::string>& SourceFiles) @@ -4063,6 +4063,8 @@ ParserResult* Parser::ParseHeader(const std::vector<std::string>& SourceFiles)
WalkAST();
res->targetInfo = GetTargetInfo();
res->kind = ParserResultKind::Success;
return res;
}
@ -4285,29 +4287,8 @@ ParserResult* ClangParser::ParseLibrary(CppParserOptions* Opts) @@ -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<clang::SemaConsumer> 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();

12
src/CppParser/Parser.h

@ -51,13 +51,6 @@ public: @@ -51,13 +51,6 @@ public:
void Setup();
ParserResult* ParseHeader(const std::vector<std::string>& 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: @@ -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;

22
src/Generator/Driver.cs

@ -127,25 +127,27 @@ namespace CppSharp @@ -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<ParserResult>();
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 @@ -190,8 +192,6 @@ namespace CppSharp
continue;
Context.Symbols.Libraries.Add(ClangParser.ConvertLibrary(res.Library));
res.Library.Dispose();
}
}
}

1
src/Generator/Passes/GenerateSymbolsPass.cs

@ -184,7 +184,6 @@ namespace CppSharp.Passes @@ -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.");

10
src/Parser/Parser.cs

@ -35,16 +35,6 @@ namespace CppSharp @@ -35,16 +35,6 @@ namespace CppSharp
ASTContext = context;
}
/// <summary>
/// Gets target information for a specific target triple.
/// </summary>
public ParserTargetInfo GetTargetInfo(ParserOptions options)
{
options.ASTContext = ASTContext;
return Parser.ClangParser.GetTargetInfo(options);
}
/// <summary>
/// Parses a C++ source file as a translation unit.
/// </summary>

Loading…
Cancel
Save