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 @@ -379,6 +379,16 @@ void CppSharp::Parser::CppParserOptions::TargetTriple::set(System::String^ 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()
{
return (CppSharp::Parser::AST::CppAbi)((::CppSharp::CppParser::CppParserOptions*)NativePtr)->abi;

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

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

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

@ -17839,7 +17839,7 @@ namespace CppSharp @@ -17839,7 +17839,7 @@ namespace CppSharp
public unsafe partial class CppParserOptions : IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 132)]
[StructLayout(LayoutKind.Explicit, Size = 144)]
public partial struct __Internal
{
[FieldOffset(0)]
@ -17876,24 +17876,27 @@ namespace CppSharp @@ -17876,24 +17876,27 @@ namespace CppSharp
internal global::Std.__1.BasicString.__Internal targetTriple;
[FieldOffset(116)]
internal global::Std.__1.BasicString.__Internal currentDir;
[FieldOffset(128)]
internal global::CppSharp.Parser.AST.CppAbi abi;
[FieldOffset(120)]
[FieldOffset(132)]
internal byte noStandardIncludes;
[FieldOffset(121)]
[FieldOffset(133)]
internal byte noBuiltinIncludes;
[FieldOffset(122)]
[FieldOffset(134)]
internal byte microsoftMode;
[FieldOffset(123)]
[FieldOffset(135)]
internal byte verbose;
[FieldOffset(124)]
[FieldOffset(136)]
internal global::CppSharp.Parser.LanguageVersion languageVersion;
[FieldOffset(128)]
[FieldOffset(140)]
internal global::System.IntPtr targetInfo;
[SuppressUnmanagedCodeSecurity]
@ -18307,6 +18310,24 @@ namespace CppSharp @@ -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
{
get

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

@ -204,7 +204,7 @@ namespace Std @@ -204,7 +204,7 @@ namespace Std
global::Std.__1.Allocator.__Internal.ctorc__N_std_N___1_S_allocator__C((__Instance + __PointerAdjustment));
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()
@ -1566,7 +1566,7 @@ namespace Std @@ -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));
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)
Marshal.FreeHGlobal(__Instance);

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

@ -17839,7 +17839,7 @@ namespace CppSharp @@ -17839,7 +17839,7 @@ namespace CppSharp
public unsafe partial class CppParserOptions : IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 156)]
[StructLayout(LayoutKind.Explicit, Size = 180)]
public partial struct __Internal
{
[FieldOffset(0)]
@ -17876,24 +17876,27 @@ namespace CppSharp @@ -17876,24 +17876,27 @@ namespace CppSharp
internal global::Std.BasicString.__Internal targetTriple;
[FieldOffset(140)]
internal global::Std.BasicString.__Internal currentDir;
[FieldOffset(164)]
internal global::CppSharp.Parser.AST.CppAbi abi;
[FieldOffset(144)]
[FieldOffset(168)]
internal byte noStandardIncludes;
[FieldOffset(145)]
[FieldOffset(169)]
internal byte noBuiltinIncludes;
[FieldOffset(146)]
[FieldOffset(170)]
internal byte microsoftMode;
[FieldOffset(147)]
[FieldOffset(171)]
internal byte verbose;
[FieldOffset(148)]
[FieldOffset(172)]
internal global::CppSharp.Parser.LanguageVersion languageVersion;
[FieldOffset(152)]
[FieldOffset(176)]
internal global::System.IntPtr targetInfo;
[SuppressUnmanagedCodeSecurity]
@ -18307,6 +18310,24 @@ namespace CppSharp @@ -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
{
get

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

@ -524,7 +524,7 @@ namespace Std @@ -524,7 +524,7 @@ namespace Std
global::Std.Allocator.__Internal.ctorc__N_std_S_allocator__C((__Instance + __PointerAdjustment));
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()
@ -672,7 +672,7 @@ namespace Std @@ -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);
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)
Marshal.FreeHGlobal(__Instance);

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

@ -17838,7 +17838,7 @@ namespace CppSharp @@ -17838,7 +17838,7 @@ namespace CppSharp
public unsafe partial class CppParserOptions : IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 256)]
[StructLayout(LayoutKind.Explicit, Size = 280)]
public partial struct __Internal
{
[FieldOffset(0)]
@ -17875,24 +17875,27 @@ namespace CppSharp @@ -17875,24 +17875,27 @@ namespace CppSharp
internal global::Std.__1.BasicString.__Internal targetTriple;
[FieldOffset(232)]
internal global::Std.__1.BasicString.__Internal currentDir;
[FieldOffset(256)]
internal global::CppSharp.Parser.AST.CppAbi abi;
[FieldOffset(236)]
[FieldOffset(260)]
internal byte noStandardIncludes;
[FieldOffset(237)]
[FieldOffset(261)]
internal byte noBuiltinIncludes;
[FieldOffset(238)]
[FieldOffset(262)]
internal byte microsoftMode;
[FieldOffset(239)]
[FieldOffset(263)]
internal byte verbose;
[FieldOffset(240)]
[FieldOffset(264)]
internal global::CppSharp.Parser.LanguageVersion languageVersion;
[FieldOffset(248)]
[FieldOffset(272)]
internal global::System.IntPtr targetInfo;
[SuppressUnmanagedCodeSecurity]
@ -18306,6 +18309,24 @@ namespace CppSharp @@ -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
{
get

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

@ -204,7 +204,7 @@ namespace Std @@ -204,7 +204,7 @@ namespace Std
global::Std.__1.Allocator.__Internal.ctorc__N_std_N___1_S_allocator__C((__Instance + __PointerAdjustment));
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()
@ -1566,7 +1566,7 @@ namespace Std @@ -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));
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)
Marshal.FreeHGlobal(__Instance);

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

@ -17838,7 +17838,7 @@ namespace CppSharp @@ -17838,7 +17838,7 @@ namespace CppSharp
public unsafe partial class CppParserOptions : IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 272)]
[StructLayout(LayoutKind.Explicit, Size = 304)]
public partial struct __Internal
{
[FieldOffset(0)]
@ -17875,24 +17875,27 @@ namespace CppSharp @@ -17875,24 +17875,27 @@ namespace CppSharp
internal global::Std.Cxx11.BasicString.__Internal targetTriple;
[FieldOffset(248)]
internal global::Std.Cxx11.BasicString.__Internal currentDir;
[FieldOffset(280)]
internal global::CppSharp.Parser.AST.CppAbi abi;
[FieldOffset(252)]
[FieldOffset(284)]
internal byte noStandardIncludes;
[FieldOffset(253)]
[FieldOffset(285)]
internal byte noBuiltinIncludes;
[FieldOffset(254)]
[FieldOffset(286)]
internal byte microsoftMode;
[FieldOffset(255)]
[FieldOffset(287)]
internal byte verbose;
[FieldOffset(256)]
[FieldOffset(288)]
internal global::CppSharp.Parser.LanguageVersion languageVersion;
[FieldOffset(264)]
[FieldOffset(296)]
internal global::System.IntPtr targetInfo;
[SuppressUnmanagedCodeSecurity]
@ -18306,6 +18309,24 @@ namespace CppSharp @@ -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
{
get

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

@ -108,7 +108,7 @@ namespace Std @@ -108,7 +108,7 @@ namespace Std
global::Std.Allocator.__Internal.ctorc__N_std_S_allocator__C((__Instance + __PointerAdjustment));
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()
@ -130,7 +130,7 @@ namespace Std @@ -130,7 +130,7 @@ namespace Std
global::Std.Allocator.__Internal.dtorc__N_std_S_allocator__C((__Instance + __PointerAdjustment));
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)
Marshal.FreeHGlobal(__Instance);
@ -815,7 +815,7 @@ namespace Std @@ -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));
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)
Marshal.FreeHGlobal(__Instance);

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

@ -17838,7 +17838,7 @@ namespace CppSharp @@ -17838,7 +17838,7 @@ namespace CppSharp
public unsafe partial class CppParserOptions : IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 224)]
[StructLayout(LayoutKind.Explicit, Size = 232)]
public partial struct __Internal
{
[FieldOffset(0)]
@ -17875,24 +17875,27 @@ namespace CppSharp @@ -17875,24 +17875,27 @@ namespace CppSharp
internal global::Std.BasicString.__Internal targetTriple;
[FieldOffset(200)]
internal global::Std.BasicString.__Internal currentDir;
[FieldOffset(208)]
internal global::CppSharp.Parser.AST.CppAbi abi;
[FieldOffset(204)]
[FieldOffset(212)]
internal byte noStandardIncludes;
[FieldOffset(205)]
[FieldOffset(213)]
internal byte noBuiltinIncludes;
[FieldOffset(206)]
[FieldOffset(214)]
internal byte microsoftMode;
[FieldOffset(207)]
[FieldOffset(215)]
internal byte verbose;
[FieldOffset(208)]
[FieldOffset(216)]
internal global::CppSharp.Parser.LanguageVersion languageVersion;
[FieldOffset(216)]
[FieldOffset(224)]
internal global::System.IntPtr targetInfo;
[SuppressUnmanagedCodeSecurity]
@ -18306,6 +18309,24 @@ namespace CppSharp @@ -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
{
get

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

@ -117,7 +117,7 @@ namespace Std @@ -117,7 +117,7 @@ namespace Std
global::Std.Allocator.__Internal.ctorc__N_std_S_allocator__C((__Instance + __PointerAdjustment));
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()
@ -139,7 +139,7 @@ namespace Std @@ -139,7 +139,7 @@ namespace Std
global::Std.Allocator.__Internal.dtorc__N_std_S_allocator__C((__Instance + __PointerAdjustment));
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)
Marshal.FreeHGlobal(__Instance);
@ -816,7 +816,7 @@ namespace Std @@ -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));
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)
Marshal.FreeHGlobal(__Instance);

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

@ -17839,7 +17839,7 @@ namespace CppSharp @@ -17839,7 +17839,7 @@ namespace CppSharp
public unsafe partial class CppParserOptions : IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 272)]
[StructLayout(LayoutKind.Explicit, Size = 304)]
public partial struct __Internal
{
[FieldOffset(0)]
@ -17876,24 +17876,27 @@ namespace CppSharp @@ -17876,24 +17876,27 @@ namespace CppSharp
internal global::Std.BasicString.__Internal targetTriple;
[FieldOffset(248)]
internal global::Std.BasicString.__Internal currentDir;
[FieldOffset(280)]
internal global::CppSharp.Parser.AST.CppAbi abi;
[FieldOffset(252)]
[FieldOffset(284)]
internal byte noStandardIncludes;
[FieldOffset(253)]
[FieldOffset(285)]
internal byte noBuiltinIncludes;
[FieldOffset(254)]
[FieldOffset(286)]
internal byte microsoftMode;
[FieldOffset(255)]
[FieldOffset(287)]
internal byte verbose;
[FieldOffset(256)]
[FieldOffset(288)]
internal global::CppSharp.Parser.LanguageVersion languageVersion;
[FieldOffset(264)]
[FieldOffset(296)]
internal global::System.IntPtr targetInfo;
[SuppressUnmanagedCodeSecurity]
@ -18307,6 +18310,24 @@ namespace CppSharp @@ -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
{
get

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

@ -524,7 +524,7 @@ namespace Std @@ -524,7 +524,7 @@ namespace Std
global::Std.Allocator.__Internal.ctorc__N_std_S_allocator__C((__Instance + __PointerAdjustment));
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()
@ -682,7 +682,7 @@ namespace Std @@ -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);
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)
Marshal.FreeHGlobal(__Instance);

1
src/CppParser/CppParser.h

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

20
src/CppParser/Parser.cpp

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

2
src/Parser/ParserOptions.cs

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

Loading…
Cancel
Save