Browse Source

Making the code run properly from a different working directory (#891)

pull/889/head
Mohit Mohta 8 years ago committed by Dimitar Dobrev
parent
commit
65d6c49e1b
  1. 10
      src/CppParser/Bindings/CLI/CppParser.cpp
  2. 6
      src/CppParser/Bindings/CLI/CppParser.h
  3. 35
      src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs
  4. 4
      src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/Std.cs
  5. 35
      src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs
  6. 4
      src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/Std.cs
  7. 35
      src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs
  8. 4
      src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/Std.cs
  9. 35
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs
  10. 6
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/Std.cs
  11. 35
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs
  12. 6
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu/Std.cs
  13. 35
      src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs
  14. 4
      src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/Std.cs
  15. 1
      src/CppParser/CppParser.h
  16. 20
      src/CppParser/Parser.cpp
  17. 2
      src/Parser/ParserOptions.cs

10
src/CppParser/Bindings/CLI/CppParser.cpp

@ -379,6 +379,16 @@ void CppSharp::Parser::CppParserOptions::TargetTriple::set(System::String^ value
((::CppSharp::CppParser::CppParserOptions*)NativePtr)->targetTriple = clix::marshalString<clix::E_UTF8>(value); ((::CppSharp::CppParser::CppParserOptions*)NativePtr)->targetTriple = clix::marshalString<clix::E_UTF8>(value);
} }
System::String^ CppSharp::Parser::CppParserOptions::CurrentDir::get()
{
return clix::marshalString<clix::E_UTF8>(((::CppSharp::CppParser::CppParserOptions*)NativePtr)->currentDir);
}
void CppSharp::Parser::CppParserOptions::CurrentDir::set(System::String^ value)
{
((::CppSharp::CppParser::CppParserOptions*)NativePtr)->currentDir = clix::marshalString<clix::E_UTF8>(value);
}
CppSharp::Parser::AST::CppAbi CppSharp::Parser::CppParserOptions::Abi::get() CppSharp::Parser::AST::CppAbi CppSharp::Parser::CppParserOptions::Abi::get()
{ {
return (CppSharp::Parser::AST::CppAbi)((::CppSharp::CppParser::CppParserOptions*)NativePtr)->abi; return (CppSharp::Parser::AST::CppAbi)((::CppSharp::CppParser::CppParserOptions*)NativePtr)->abi;

6
src/CppParser/Bindings/CLI/CppParser.h

@ -162,6 +162,12 @@ namespace CppSharp
void set(System::String^); void set(System::String^);
} }
property System::String^ CurrentDir
{
System::String^ get();
void set(System::String^);
}
property CppSharp::Parser::AST::CppAbi Abi property CppSharp::Parser::AST::CppAbi Abi
{ {
CppSharp::Parser::AST::CppAbi get(); CppSharp::Parser::AST::CppAbi get();

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

@ -17839,7 +17839,7 @@ namespace CppSharp
public unsafe partial class CppParserOptions : IDisposable public unsafe partial class CppParserOptions : IDisposable
{ {
[StructLayout(LayoutKind.Explicit, Size = 132)] [StructLayout(LayoutKind.Explicit, Size = 144)]
public partial struct __Internal public partial struct __Internal
{ {
[FieldOffset(0)] [FieldOffset(0)]
@ -17876,24 +17876,27 @@ namespace CppSharp
internal global::Std.__1.BasicString.__Internal targetTriple; internal global::Std.__1.BasicString.__Internal targetTriple;
[FieldOffset(116)] [FieldOffset(116)]
internal global::Std.__1.BasicString.__Internal currentDir;
[FieldOffset(128)]
internal global::CppSharp.Parser.AST.CppAbi abi; internal global::CppSharp.Parser.AST.CppAbi abi;
[FieldOffset(120)] [FieldOffset(132)]
internal byte noStandardIncludes; internal byte noStandardIncludes;
[FieldOffset(121)] [FieldOffset(133)]
internal byte noBuiltinIncludes; internal byte noBuiltinIncludes;
[FieldOffset(122)] [FieldOffset(134)]
internal byte microsoftMode; internal byte microsoftMode;
[FieldOffset(123)] [FieldOffset(135)]
internal byte verbose; internal byte verbose;
[FieldOffset(124)] [FieldOffset(136)]
internal global::CppSharp.Parser.LanguageVersion languageVersion; internal global::CppSharp.Parser.LanguageVersion languageVersion;
[FieldOffset(128)] [FieldOffset(140)]
internal global::System.IntPtr targetInfo; internal global::System.IntPtr targetInfo;
[SuppressUnmanagedCodeSecurity] [SuppressUnmanagedCodeSecurity]
@ -18307,6 +18310,24 @@ namespace CppSharp
} }
} }
public string CurrentDir
{
get
{
var __basicStringRet = global::Std.__1.BasicString<sbyte, global::Std.__1.CharTraits<sbyte>, global::Std.__1.Allocator<sbyte>>.__CreateInstance(((global::CppSharp.Parser.CppParserOptions.__Internal*) __Instance)->currentDir);
var __stringRet = global::Std.__1.BasicStringExtensions.CStr(__basicStringRet);
__basicStringRet.Dispose(false);
return __stringRet;
}
set
{
var __allocator0 = new global::Std.__1.Allocator<sbyte>();
var __basicString0 = global::Std.__1.BasicStringExtensions.BasicString(value, __allocator0);
((global::CppSharp.Parser.CppParserOptions.__Internal*) __Instance)->currentDir = *(global::Std.__1.BasicString.__Internal*) __basicString0.__Instance;
}
}
public global::CppSharp.Parser.AST.CppAbi Abi public global::CppSharp.Parser.AST.CppAbi Abi
{ {
get get

4
src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/Std.cs

@ -204,7 +204,7 @@ namespace Std
global::Std.__1.Allocator.__Internal.ctorc__N_std_N___1_S_allocator__C((__Instance + __PointerAdjustment)); global::Std.__1.Allocator.__Internal.ctorc__N_std_N___1_S_allocator__C((__Instance + __PointerAdjustment));
return; return;
} }
throw new global::System.InvalidOperationException(); throw new ArgumentOutOfRangeException("_Tp", string.Join(", ", new[] { typeof(_Tp).FullName }), "global::Std.__1.Allocator<_Tp> maps a C++ template class and therefore it only supports a limited set of types and their subclasses: <sbyte>.");
} }
public void Dispose() public void Dispose()
@ -1566,7 +1566,7 @@ namespace Std
global::Std.__1.BasicString.__Internal.dtorc__N_std_N___1_S_basic_string__C___N_std_N___1_S_char_traits__C___N_std_N___1_S_allocator__C((__Instance + __PointerAdjustment)); global::Std.__1.BasicString.__Internal.dtorc__N_std_N___1_S_basic_string__C___N_std_N___1_S_char_traits__C___N_std_N___1_S_allocator__C((__Instance + __PointerAdjustment));
return; return;
} }
throw new global::System.InvalidOperationException(); throw new ArgumentOutOfRangeException("_CharT, _Traits, _Allocator", string.Join(", ", new[] { typeof(_CharT).FullName, typeof(_Traits).FullName, typeof(_Allocator).FullName }), "global::Std.__1.BasicString<_CharT, _Traits, _Allocator> maps a C++ template class and therefore it only supports a limited set of types and their subclasses: <sbyte, global::Std.__1.CharTraits<sbyte>, global::Std.__1.Allocator<sbyte>>.");
} }
if (__ownsNativeInstance) if (__ownsNativeInstance)
Marshal.FreeHGlobal(__Instance); Marshal.FreeHGlobal(__Instance);

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

@ -17839,7 +17839,7 @@ namespace CppSharp
public unsafe partial class CppParserOptions : IDisposable public unsafe partial class CppParserOptions : IDisposable
{ {
[StructLayout(LayoutKind.Explicit, Size = 156)] [StructLayout(LayoutKind.Explicit, Size = 180)]
public partial struct __Internal public partial struct __Internal
{ {
[FieldOffset(0)] [FieldOffset(0)]
@ -17876,24 +17876,27 @@ namespace CppSharp
internal global::Std.BasicString.__Internal targetTriple; internal global::Std.BasicString.__Internal targetTriple;
[FieldOffset(140)] [FieldOffset(140)]
internal global::Std.BasicString.__Internal currentDir;
[FieldOffset(164)]
internal global::CppSharp.Parser.AST.CppAbi abi; internal global::CppSharp.Parser.AST.CppAbi abi;
[FieldOffset(144)] [FieldOffset(168)]
internal byte noStandardIncludes; internal byte noStandardIncludes;
[FieldOffset(145)] [FieldOffset(169)]
internal byte noBuiltinIncludes; internal byte noBuiltinIncludes;
[FieldOffset(146)] [FieldOffset(170)]
internal byte microsoftMode; internal byte microsoftMode;
[FieldOffset(147)] [FieldOffset(171)]
internal byte verbose; internal byte verbose;
[FieldOffset(148)] [FieldOffset(172)]
internal global::CppSharp.Parser.LanguageVersion languageVersion; internal global::CppSharp.Parser.LanguageVersion languageVersion;
[FieldOffset(152)] [FieldOffset(176)]
internal global::System.IntPtr targetInfo; internal global::System.IntPtr targetInfo;
[SuppressUnmanagedCodeSecurity] [SuppressUnmanagedCodeSecurity]
@ -18307,6 +18310,24 @@ namespace CppSharp
} }
} }
public string CurrentDir
{
get
{
var __basicStringRet = global::Std.BasicString<sbyte, global::Std.CharTraits<sbyte>, global::Std.Allocator<sbyte>>.__CreateInstance(((global::CppSharp.Parser.CppParserOptions.__Internal*) __Instance)->currentDir);
var __stringRet = global::Std.BasicStringExtensions.CStr(__basicStringRet);
__basicStringRet.Dispose(false);
return __stringRet;
}
set
{
var __allocator0 = new global::Std.Allocator<sbyte>();
var __basicString0 = global::Std.BasicStringExtensions.BasicString(value, __allocator0);
((global::CppSharp.Parser.CppParserOptions.__Internal*) __Instance)->currentDir = *(global::Std.BasicString.__Internal*) __basicString0.__Instance;
}
}
public global::CppSharp.Parser.AST.CppAbi Abi public global::CppSharp.Parser.AST.CppAbi Abi
{ {
get get

4
src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/Std.cs

@ -524,7 +524,7 @@ namespace Std
global::Std.Allocator.__Internal.ctorc__N_std_S_allocator__C((__Instance + __PointerAdjustment)); global::Std.Allocator.__Internal.ctorc__N_std_S_allocator__C((__Instance + __PointerAdjustment));
return; return;
} }
throw new global::System.InvalidOperationException(); throw new ArgumentOutOfRangeException("_Ty", string.Join(", ", new[] { typeof(_Ty).FullName }), "global::Std.Allocator<_Ty> maps a C++ template class and therefore it only supports a limited set of types and their subclasses: <sbyte>.");
} }
public void Dispose() public void Dispose()
@ -672,7 +672,7 @@ namespace Std
global::Std.BasicString.__Internal.dtorc__N_std_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C((__Instance + __PointerAdjustment), 0); global::Std.BasicString.__Internal.dtorc__N_std_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C((__Instance + __PointerAdjustment), 0);
return; return;
} }
throw new global::System.InvalidOperationException(); throw new ArgumentOutOfRangeException("_Elem, _Traits, _Alloc", string.Join(", ", new[] { typeof(_Elem).FullName, typeof(_Traits).FullName, typeof(_Alloc).FullName }), "global::Std.BasicString<_Elem, _Traits, _Alloc> maps a C++ template class and therefore it only supports a limited set of types and their subclasses: <sbyte, global::Std.CharTraits<sbyte>, global::Std.Allocator<sbyte>>.");
} }
if (__ownsNativeInstance) if (__ownsNativeInstance)
Marshal.FreeHGlobal(__Instance); Marshal.FreeHGlobal(__Instance);

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

@ -17838,7 +17838,7 @@ namespace CppSharp
public unsafe partial class CppParserOptions : IDisposable public unsafe partial class CppParserOptions : IDisposable
{ {
[StructLayout(LayoutKind.Explicit, Size = 256)] [StructLayout(LayoutKind.Explicit, Size = 280)]
public partial struct __Internal public partial struct __Internal
{ {
[FieldOffset(0)] [FieldOffset(0)]
@ -17875,24 +17875,27 @@ namespace CppSharp
internal global::Std.__1.BasicString.__Internal targetTriple; internal global::Std.__1.BasicString.__Internal targetTriple;
[FieldOffset(232)] [FieldOffset(232)]
internal global::Std.__1.BasicString.__Internal currentDir;
[FieldOffset(256)]
internal global::CppSharp.Parser.AST.CppAbi abi; internal global::CppSharp.Parser.AST.CppAbi abi;
[FieldOffset(236)] [FieldOffset(260)]
internal byte noStandardIncludes; internal byte noStandardIncludes;
[FieldOffset(237)] [FieldOffset(261)]
internal byte noBuiltinIncludes; internal byte noBuiltinIncludes;
[FieldOffset(238)] [FieldOffset(262)]
internal byte microsoftMode; internal byte microsoftMode;
[FieldOffset(239)] [FieldOffset(263)]
internal byte verbose; internal byte verbose;
[FieldOffset(240)] [FieldOffset(264)]
internal global::CppSharp.Parser.LanguageVersion languageVersion; internal global::CppSharp.Parser.LanguageVersion languageVersion;
[FieldOffset(248)] [FieldOffset(272)]
internal global::System.IntPtr targetInfo; internal global::System.IntPtr targetInfo;
[SuppressUnmanagedCodeSecurity] [SuppressUnmanagedCodeSecurity]
@ -18306,6 +18309,24 @@ namespace CppSharp
} }
} }
public string CurrentDir
{
get
{
var __basicStringRet = global::Std.__1.BasicString<sbyte, global::Std.__1.CharTraits<sbyte>, global::Std.__1.Allocator<sbyte>>.__CreateInstance(((global::CppSharp.Parser.CppParserOptions.__Internal*) __Instance)->currentDir);
var __stringRet = global::Std.__1.BasicStringExtensions.CStr(__basicStringRet);
__basicStringRet.Dispose(false);
return __stringRet;
}
set
{
var __allocator0 = new global::Std.__1.Allocator<sbyte>();
var __basicString0 = global::Std.__1.BasicStringExtensions.BasicString(value, __allocator0);
((global::CppSharp.Parser.CppParserOptions.__Internal*) __Instance)->currentDir = *(global::Std.__1.BasicString.__Internal*) __basicString0.__Instance;
}
}
public global::CppSharp.Parser.AST.CppAbi Abi public global::CppSharp.Parser.AST.CppAbi Abi
{ {
get get

4
src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/Std.cs

@ -204,7 +204,7 @@ namespace Std
global::Std.__1.Allocator.__Internal.ctorc__N_std_N___1_S_allocator__C((__Instance + __PointerAdjustment)); global::Std.__1.Allocator.__Internal.ctorc__N_std_N___1_S_allocator__C((__Instance + __PointerAdjustment));
return; return;
} }
throw new global::System.InvalidOperationException(); throw new ArgumentOutOfRangeException("_Tp", string.Join(", ", new[] { typeof(_Tp).FullName }), "global::Std.__1.Allocator<_Tp> maps a C++ template class and therefore it only supports a limited set of types and their subclasses: <sbyte>.");
} }
public void Dispose() public void Dispose()
@ -1566,7 +1566,7 @@ namespace Std
global::Std.__1.BasicString.__Internal.dtorc__N_std_N___1_S_basic_string__C___N_std_N___1_S_char_traits__C___N_std_N___1_S_allocator__C((__Instance + __PointerAdjustment)); global::Std.__1.BasicString.__Internal.dtorc__N_std_N___1_S_basic_string__C___N_std_N___1_S_char_traits__C___N_std_N___1_S_allocator__C((__Instance + __PointerAdjustment));
return; return;
} }
throw new global::System.InvalidOperationException(); throw new ArgumentOutOfRangeException("_CharT, _Traits, _Allocator", string.Join(", ", new[] { typeof(_CharT).FullName, typeof(_Traits).FullName, typeof(_Allocator).FullName }), "global::Std.__1.BasicString<_CharT, _Traits, _Allocator> maps a C++ template class and therefore it only supports a limited set of types and their subclasses: <sbyte, global::Std.__1.CharTraits<sbyte>, global::Std.__1.Allocator<sbyte>>.");
} }
if (__ownsNativeInstance) if (__ownsNativeInstance)
Marshal.FreeHGlobal(__Instance); Marshal.FreeHGlobal(__Instance);

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

@ -17838,7 +17838,7 @@ namespace CppSharp
public unsafe partial class CppParserOptions : IDisposable public unsafe partial class CppParserOptions : IDisposable
{ {
[StructLayout(LayoutKind.Explicit, Size = 272)] [StructLayout(LayoutKind.Explicit, Size = 304)]
public partial struct __Internal public partial struct __Internal
{ {
[FieldOffset(0)] [FieldOffset(0)]
@ -17875,24 +17875,27 @@ namespace CppSharp
internal global::Std.Cxx11.BasicString.__Internal targetTriple; internal global::Std.Cxx11.BasicString.__Internal targetTriple;
[FieldOffset(248)] [FieldOffset(248)]
internal global::Std.Cxx11.BasicString.__Internal currentDir;
[FieldOffset(280)]
internal global::CppSharp.Parser.AST.CppAbi abi; internal global::CppSharp.Parser.AST.CppAbi abi;
[FieldOffset(252)] [FieldOffset(284)]
internal byte noStandardIncludes; internal byte noStandardIncludes;
[FieldOffset(253)] [FieldOffset(285)]
internal byte noBuiltinIncludes; internal byte noBuiltinIncludes;
[FieldOffset(254)] [FieldOffset(286)]
internal byte microsoftMode; internal byte microsoftMode;
[FieldOffset(255)] [FieldOffset(287)]
internal byte verbose; internal byte verbose;
[FieldOffset(256)] [FieldOffset(288)]
internal global::CppSharp.Parser.LanguageVersion languageVersion; internal global::CppSharp.Parser.LanguageVersion languageVersion;
[FieldOffset(264)] [FieldOffset(296)]
internal global::System.IntPtr targetInfo; internal global::System.IntPtr targetInfo;
[SuppressUnmanagedCodeSecurity] [SuppressUnmanagedCodeSecurity]
@ -18306,6 +18309,24 @@ namespace CppSharp
} }
} }
public string CurrentDir
{
get
{
var __basicStringRet = global::Std.Cxx11.BasicString<sbyte, global::Std.CharTraits<sbyte>, global::Std.Allocator<sbyte>>.__CreateInstance(((global::CppSharp.Parser.CppParserOptions.__Internal*) __Instance)->currentDir);
var __stringRet = global::Std.Cxx11.BasicStringExtensions.CStr(__basicStringRet);
__basicStringRet.Dispose(false);
return __stringRet;
}
set
{
var __allocator0 = new global::Std.Allocator<sbyte>();
var __basicString0 = global::Std.Cxx11.BasicStringExtensions.BasicString(value, __allocator0);
((global::CppSharp.Parser.CppParserOptions.__Internal*) __Instance)->currentDir = *(global::Std.Cxx11.BasicString.__Internal*) __basicString0.__Instance;
}
}
public global::CppSharp.Parser.AST.CppAbi Abi public global::CppSharp.Parser.AST.CppAbi Abi
{ {
get get

6
src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/Std.cs

@ -108,7 +108,7 @@ namespace Std
global::Std.Allocator.__Internal.ctorc__N_std_S_allocator__C((__Instance + __PointerAdjustment)); global::Std.Allocator.__Internal.ctorc__N_std_S_allocator__C((__Instance + __PointerAdjustment));
return; return;
} }
throw new global::System.InvalidOperationException(); throw new ArgumentOutOfRangeException("_Tp", string.Join(", ", new[] { typeof(_Tp).FullName }), "global::Std.Allocator<_Tp> maps a C++ template class and therefore it only supports a limited set of types and their subclasses: <sbyte>.");
} }
public void Dispose() public void Dispose()
@ -130,7 +130,7 @@ namespace Std
global::Std.Allocator.__Internal.dtorc__N_std_S_allocator__C((__Instance + __PointerAdjustment)); global::Std.Allocator.__Internal.dtorc__N_std_S_allocator__C((__Instance + __PointerAdjustment));
return; return;
} }
throw new global::System.InvalidOperationException(); throw new ArgumentOutOfRangeException("_Tp", string.Join(", ", new[] { typeof(_Tp).FullName }), "global::Std.Allocator<_Tp> maps a C++ template class and therefore it only supports a limited set of types and their subclasses: <sbyte>.");
} }
if (__ownsNativeInstance) if (__ownsNativeInstance)
Marshal.FreeHGlobal(__Instance); Marshal.FreeHGlobal(__Instance);
@ -815,7 +815,7 @@ namespace Std
global::Std.Cxx11.BasicString.__Internal.dtorc__N_std_N___cxx11_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C((__Instance + __PointerAdjustment)); global::Std.Cxx11.BasicString.__Internal.dtorc__N_std_N___cxx11_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C((__Instance + __PointerAdjustment));
return; return;
} }
throw new global::System.InvalidOperationException(); throw new ArgumentOutOfRangeException("_CharT, _Traits, _Alloc", string.Join(", ", new[] { typeof(_CharT).FullName, typeof(_Traits).FullName, typeof(_Alloc).FullName }), "global::Std.Cxx11.BasicString<_CharT, _Traits, _Alloc> maps a C++ template class and therefore it only supports a limited set of types and their subclasses: <sbyte, global::Std.CharTraits<sbyte>, global::Std.Allocator<sbyte>>.");
} }
if (__ownsNativeInstance) if (__ownsNativeInstance)
Marshal.FreeHGlobal(__Instance); Marshal.FreeHGlobal(__Instance);

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

@ -17838,7 +17838,7 @@ namespace CppSharp
public unsafe partial class CppParserOptions : IDisposable public unsafe partial class CppParserOptions : IDisposable
{ {
[StructLayout(LayoutKind.Explicit, Size = 224)] [StructLayout(LayoutKind.Explicit, Size = 232)]
public partial struct __Internal public partial struct __Internal
{ {
[FieldOffset(0)] [FieldOffset(0)]
@ -17875,24 +17875,27 @@ namespace CppSharp
internal global::Std.BasicString.__Internal targetTriple; internal global::Std.BasicString.__Internal targetTriple;
[FieldOffset(200)] [FieldOffset(200)]
internal global::Std.BasicString.__Internal currentDir;
[FieldOffset(208)]
internal global::CppSharp.Parser.AST.CppAbi abi; internal global::CppSharp.Parser.AST.CppAbi abi;
[FieldOffset(204)] [FieldOffset(212)]
internal byte noStandardIncludes; internal byte noStandardIncludes;
[FieldOffset(205)] [FieldOffset(213)]
internal byte noBuiltinIncludes; internal byte noBuiltinIncludes;
[FieldOffset(206)] [FieldOffset(214)]
internal byte microsoftMode; internal byte microsoftMode;
[FieldOffset(207)] [FieldOffset(215)]
internal byte verbose; internal byte verbose;
[FieldOffset(208)] [FieldOffset(216)]
internal global::CppSharp.Parser.LanguageVersion languageVersion; internal global::CppSharp.Parser.LanguageVersion languageVersion;
[FieldOffset(216)] [FieldOffset(224)]
internal global::System.IntPtr targetInfo; internal global::System.IntPtr targetInfo;
[SuppressUnmanagedCodeSecurity] [SuppressUnmanagedCodeSecurity]
@ -18306,6 +18309,24 @@ namespace CppSharp
} }
} }
public string CurrentDir
{
get
{
var __basicStringRet = global::Std.BasicString<sbyte, global::Std.CharTraits<sbyte>, global::Std.Allocator<sbyte>>.__CreateInstance(((global::CppSharp.Parser.CppParserOptions.__Internal*) __Instance)->currentDir);
var __stringRet = global::Std.BasicStringExtensions.CStr(__basicStringRet);
__basicStringRet.Dispose(false);
return __stringRet;
}
set
{
var __allocator0 = new global::Std.Allocator<sbyte>();
var __basicString0 = global::Std.BasicStringExtensions.BasicString(value, __allocator0);
((global::CppSharp.Parser.CppParserOptions.__Internal*) __Instance)->currentDir = *(global::Std.BasicString.__Internal*) __basicString0.__Instance;
}
}
public global::CppSharp.Parser.AST.CppAbi Abi public global::CppSharp.Parser.AST.CppAbi Abi
{ {
get get

6
src/CppParser/Bindings/CSharp/x86_64-linux-gnu/Std.cs

@ -117,7 +117,7 @@ namespace Std
global::Std.Allocator.__Internal.ctorc__N_std_S_allocator__C((__Instance + __PointerAdjustment)); global::Std.Allocator.__Internal.ctorc__N_std_S_allocator__C((__Instance + __PointerAdjustment));
return; return;
} }
throw new global::System.InvalidOperationException(); throw new ArgumentOutOfRangeException("_Tp", string.Join(", ", new[] { typeof(_Tp).FullName }), "global::Std.Allocator<_Tp> maps a C++ template class and therefore it only supports a limited set of types and their subclasses: <sbyte>.");
} }
public void Dispose() public void Dispose()
@ -139,7 +139,7 @@ namespace Std
global::Std.Allocator.__Internal.dtorc__N_std_S_allocator__C((__Instance + __PointerAdjustment)); global::Std.Allocator.__Internal.dtorc__N_std_S_allocator__C((__Instance + __PointerAdjustment));
return; return;
} }
throw new global::System.InvalidOperationException(); throw new ArgumentOutOfRangeException("_Tp", string.Join(", ", new[] { typeof(_Tp).FullName }), "global::Std.Allocator<_Tp> maps a C++ template class and therefore it only supports a limited set of types and their subclasses: <sbyte>.");
} }
if (__ownsNativeInstance) if (__ownsNativeInstance)
Marshal.FreeHGlobal(__Instance); Marshal.FreeHGlobal(__Instance);
@ -816,7 +816,7 @@ namespace Std
global::Std.BasicString.__Internal.dtorc__N_std_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C((__Instance + __PointerAdjustment)); global::Std.BasicString.__Internal.dtorc__N_std_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C((__Instance + __PointerAdjustment));
return; return;
} }
throw new global::System.InvalidOperationException(); throw new ArgumentOutOfRangeException("_CharT, _Traits, _Alloc", string.Join(", ", new[] { typeof(_CharT).FullName, typeof(_Traits).FullName, typeof(_Alloc).FullName }), "global::Std.BasicString<_CharT, _Traits, _Alloc> maps a C++ template class and therefore it only supports a limited set of types and their subclasses: <sbyte, global::Std.CharTraits<sbyte>, global::Std.Allocator<sbyte>>.");
} }
if (__ownsNativeInstance) if (__ownsNativeInstance)
Marshal.FreeHGlobal(__Instance); Marshal.FreeHGlobal(__Instance);

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

@ -17839,7 +17839,7 @@ namespace CppSharp
public unsafe partial class CppParserOptions : IDisposable public unsafe partial class CppParserOptions : IDisposable
{ {
[StructLayout(LayoutKind.Explicit, Size = 272)] [StructLayout(LayoutKind.Explicit, Size = 304)]
public partial struct __Internal public partial struct __Internal
{ {
[FieldOffset(0)] [FieldOffset(0)]
@ -17876,24 +17876,27 @@ namespace CppSharp
internal global::Std.BasicString.__Internal targetTriple; internal global::Std.BasicString.__Internal targetTriple;
[FieldOffset(248)] [FieldOffset(248)]
internal global::Std.BasicString.__Internal currentDir;
[FieldOffset(280)]
internal global::CppSharp.Parser.AST.CppAbi abi; internal global::CppSharp.Parser.AST.CppAbi abi;
[FieldOffset(252)] [FieldOffset(284)]
internal byte noStandardIncludes; internal byte noStandardIncludes;
[FieldOffset(253)] [FieldOffset(285)]
internal byte noBuiltinIncludes; internal byte noBuiltinIncludes;
[FieldOffset(254)] [FieldOffset(286)]
internal byte microsoftMode; internal byte microsoftMode;
[FieldOffset(255)] [FieldOffset(287)]
internal byte verbose; internal byte verbose;
[FieldOffset(256)] [FieldOffset(288)]
internal global::CppSharp.Parser.LanguageVersion languageVersion; internal global::CppSharp.Parser.LanguageVersion languageVersion;
[FieldOffset(264)] [FieldOffset(296)]
internal global::System.IntPtr targetInfo; internal global::System.IntPtr targetInfo;
[SuppressUnmanagedCodeSecurity] [SuppressUnmanagedCodeSecurity]
@ -18307,6 +18310,24 @@ namespace CppSharp
} }
} }
public string CurrentDir
{
get
{
var __basicStringRet = global::Std.BasicString<sbyte, global::Std.CharTraits<sbyte>, global::Std.Allocator<sbyte>>.__CreateInstance(((global::CppSharp.Parser.CppParserOptions.__Internal*) __Instance)->currentDir);
var __stringRet = global::Std.BasicStringExtensions.CStr(__basicStringRet);
__basicStringRet.Dispose(false);
return __stringRet;
}
set
{
var __allocator0 = new global::Std.Allocator<sbyte>();
var __basicString0 = global::Std.BasicStringExtensions.BasicString(value, __allocator0);
((global::CppSharp.Parser.CppParserOptions.__Internal*) __Instance)->currentDir = *(global::Std.BasicString.__Internal*) __basicString0.__Instance;
}
}
public global::CppSharp.Parser.AST.CppAbi Abi public global::CppSharp.Parser.AST.CppAbi Abi
{ {
get get

4
src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/Std.cs

@ -524,7 +524,7 @@ namespace Std
global::Std.Allocator.__Internal.ctorc__N_std_S_allocator__C((__Instance + __PointerAdjustment)); global::Std.Allocator.__Internal.ctorc__N_std_S_allocator__C((__Instance + __PointerAdjustment));
return; return;
} }
throw new global::System.InvalidOperationException(); throw new ArgumentOutOfRangeException("_Ty", string.Join(", ", new[] { typeof(_Ty).FullName }), "global::Std.Allocator<_Ty> maps a C++ template class and therefore it only supports a limited set of types and their subclasses: <sbyte>.");
} }
public void Dispose() public void Dispose()
@ -682,7 +682,7 @@ namespace Std
global::Std.BasicString.__Internal.dtorc__N_std_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C((__Instance + __PointerAdjustment), 0); global::Std.BasicString.__Internal.dtorc__N_std_S_basic_string__C___N_std_S_char_traits__C___N_std_S_allocator__C((__Instance + __PointerAdjustment), 0);
return; return;
} }
throw new global::System.InvalidOperationException(); throw new ArgumentOutOfRangeException("_Elem, _Traits, _Alloc", string.Join(", ", new[] { typeof(_Elem).FullName, typeof(_Traits).FullName, typeof(_Alloc).FullName }), "global::Std.BasicString<_Elem, _Traits, _Alloc> maps a C++ template class and therefore it only supports a limited set of types and their subclasses: <sbyte, global::Std.CharTraits<sbyte>, global::Std.Allocator<sbyte>>.");
} }
if (__ownsNativeInstance) if (__ownsNativeInstance)
Marshal.FreeHGlobal(__Instance); Marshal.FreeHGlobal(__Instance);

1
src/CppParser/CppParser.h

@ -64,6 +64,7 @@ struct CS_API CppParserOptions
int toolSetToUse; int toolSetToUse;
std::string targetTriple; std::string targetTriple;
std::string currentDir;
CppAbi abi; CppAbi abi;
bool noStandardIncludes; bool noStandardIncludes;

20
src/CppParser/Parser.cpp

@ -71,19 +71,6 @@ Parser::Parser(CppParserOptions* Opts) : lib(Opts->ASTContext), opts(Opts), inde
{ {
} }
//-----------------------------------//
std::string GetCurrentLibraryDir()
{
#ifdef HAVE_DLFCN
Dl_info dl_info;
dladdr((void *)GetCurrentLibraryDir, &dl_info);
return dl_info.dli_fname;
#else
return ".";
#endif
}
LayoutField Parser::WalkVTablePointer(Class* Class, LayoutField Parser::WalkVTablePointer(Class* Class,
const clang::CharUnits& Offset, const std::string& prefix) const clang::CharUnits& Offset, const std::string& prefix)
{ {
@ -201,15 +188,14 @@ void Parser::ReadClassLayout(Class* Class, const clang::RecordDecl* RD,
} }
} }
static std::string GetClangResourceDir() static std::string GetClangResourceDir(std::string CurrentDir)
{ {
using namespace llvm; using namespace llvm;
using namespace clang; using namespace clang;
// Compute the path to the resource directory. // Compute the path to the resource directory.
StringRef ClangResourceDir(CLANG_RESOURCE_DIR); StringRef ClangResourceDir(CLANG_RESOURCE_DIR);
SmallString<128> P(CurrentDir);
SmallString<128> P(GetCurrentLibraryDir());
llvm::sys::path::remove_filename(P); llvm::sys::path::remove_filename(P);
if (ClangResourceDir != "") if (ClangResourceDir != "")
@ -342,7 +328,7 @@ void Parser::SetupHeader()
#ifndef __APPLE__ #ifndef __APPLE__
// Initialize the default platform headers. // Initialize the default platform headers.
HSOpts.ResourceDir = GetClangResourceDir(); HSOpts.ResourceDir = GetClangResourceDir(opts->currentDir);
llvm::SmallString<128> ResourceDir(HSOpts.ResourceDir); llvm::SmallString<128> ResourceDir(HSOpts.ResourceDir);
llvm::sys::path::append(ResourceDir, "include"); llvm::sys::path::append(ResourceDir, "include");

2
src/Parser/ParserOptions.cs

@ -1,4 +1,5 @@
using CppSharp.Parser.AST; using CppSharp.Parser.AST;
using System.Reflection;
namespace CppSharp.Parser namespace CppSharp.Parser
{ {
@ -8,6 +9,7 @@ namespace CppSharp.Parser
{ {
Abi = Platform.IsUnixPlatform ? CppAbi.Itanium : CppAbi.Microsoft; Abi = Platform.IsUnixPlatform ? CppAbi.Itanium : CppAbi.Microsoft;
MicrosoftMode = !Platform.IsUnixPlatform; MicrosoftMode = !Platform.IsUnixPlatform;
CurrentDir = Assembly.GetExecutingAssembly().Location;
} }
public bool IsItaniumLikeAbi { get { return Abi != CppAbi.Microsoft; } } public bool IsItaniumLikeAbi { get { return Abi != CppAbi.Microsoft; } }

Loading…
Cancel
Save