Browse Source

Added the desugared type, if any, of DependentNameType, to the AST.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/678/head
Dimitar Dobrev 9 years ago
parent
commit
fc87fb6ee9
  1. 2
      src/AST/Type.cs
  2. 10
      src/Core/Parser/ASTConverter.cs
  3. 2
      src/CppParser/AST.cpp
  4. 1
      src/CppParser/AST.h
  5. 10
      src/CppParser/Bindings/CLI/AST.cpp
  6. 6
      src/CppParser/Bindings/CLI/AST.h
  7. 29
      src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs
  8. 29
      src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs
  9. 29
      src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs
  10. 29
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs
  11. 29
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs
  12. 29
      src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs
  13. 2
      src/CppParser/Parser.cpp
  14. 2
      src/Generator/Generators/CLI/CLITypePrinter.cs
  15. 2
      src/Generator/Generators/CSharp/CSharpTypePrinter.cs
  16. 2
      src/Generator/Types/CppTypePrinter.cs

2
src/AST/Type.cs

@ -896,6 +896,8 @@ namespace CppSharp.AST @@ -896,6 +896,8 @@ namespace CppSharp.AST
{
}
public Type Desugared { get; set; }
public override T Visit<T>(ITypeVisitor<T> visitor,
TypeQualifiers quals = new TypeQualifiers())
{

10
src/Core/Parser/ASTConverter.cs

@ -620,7 +620,7 @@ namespace CppSharp @@ -620,7 +620,7 @@ namespace CppSharp
public override AST.Type VisitTemplateParameterSubstitution(TemplateParameterSubstitutionType type)
{
var _type = new CppSharp.AST.TemplateParameterSubstitutionType();
var _type = new AST.TemplateParameterSubstitutionType();
_type.Replacement = VisitQualified(type.Replacement);
VisitType(type, _type);
return _type;
@ -628,7 +628,7 @@ namespace CppSharp @@ -628,7 +628,7 @@ namespace CppSharp
public override AST.Type VisitInjectedClassName(InjectedClassNameType type)
{
var _type = new CppSharp.AST.InjectedClassNameType();
var _type = new AST.InjectedClassNameType();
_type.Class = declConverter.Visit(type.Class) as AST.Class;
_type.InjectedSpecializationType = VisitQualified(type.InjectedSpecializationType);
VisitType(type, _type);
@ -637,14 +637,16 @@ namespace CppSharp @@ -637,14 +637,16 @@ namespace CppSharp
public override AST.Type VisitDependentName(DependentNameType type)
{
var _type = new CppSharp.AST.DependentNameType();
var _type = new AST.DependentNameType();
VisitType(type, _type);
if (type.Desugared != null)
_type.Desugared = Visit(type.Desugared);
return _type;
}
public override AST.Type VisitBuiltin(BuiltinType type)
{
var _type = new CppSharp.AST.BuiltinType();
var _type = new AST.BuiltinType();
_type.Type = VisitPrimitive(type.Type);
VisitType(type, _type);
return _type;

2
src/CppParser/AST.cpp

@ -179,7 +179,7 @@ InjectedClassNameType::InjectedClassNameType() @@ -179,7 +179,7 @@ InjectedClassNameType::InjectedClassNameType()
{
}
DependentNameType::DependentNameType() : Type(TypeKind::DependentName) {}
DependentNameType::DependentNameType() : Type(TypeKind::DependentName), Desugared(0) {}
PackExpansionType::PackExpansionType() : Type(TypeKind::PackExpansion) {}

1
src/CppParser/AST.h

@ -240,6 +240,7 @@ class CS_API DependentNameType : public Type @@ -240,6 +240,7 @@ class CS_API DependentNameType : public Type
{
public:
DECLARE_TYPE_KIND(DependentName)
Type* Desugared;
};
class CS_API PackExpansionType : public Type

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

@ -1074,6 +1074,16 @@ CppSharp::Parser::AST::DependentNameType::DependentNameType(CppSharp::Parser::AS @@ -1074,6 +1074,16 @@ CppSharp::Parser::AST::DependentNameType::DependentNameType(CppSharp::Parser::AS
NativePtr = new ::CppSharp::CppParser::AST::DependentNameType(__arg0);
}
CppSharp::Parser::AST::Type^ CppSharp::Parser::AST::DependentNameType::Desugared::get()
{
return (((::CppSharp::CppParser::AST::DependentNameType*)NativePtr)->Desugared == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::Type((::CppSharp::CppParser::AST::Type*)((::CppSharp::CppParser::AST::DependentNameType*)NativePtr)->Desugared);
}
void CppSharp::Parser::AST::DependentNameType::Desugared::set(CppSharp::Parser::AST::Type^ value)
{
((::CppSharp::CppParser::AST::DependentNameType*)NativePtr)->Desugared = (::CppSharp::CppParser::AST::Type*)value->NativePtr;
}
CppSharp::Parser::AST::PackExpansionType::PackExpansionType(::CppSharp::CppParser::AST::PackExpansionType* native)
: CppSharp::Parser::AST::Type((::CppSharp::CppParser::AST::Type*)native)
{

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

@ -910,6 +910,12 @@ namespace CppSharp @@ -910,6 +910,12 @@ namespace CppSharp
DependentNameType(CppSharp::Parser::AST::DependentNameType^ _0);
~DependentNameType();
property CppSharp::Parser::AST::Type^ Desugared
{
CppSharp::Parser::AST::Type^ get();
void set(CppSharp::Parser::AST::Type^);
}
};
public ref class PackExpansionType : CppSharp::Parser::AST::Type

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

@ -2466,7 +2466,7 @@ namespace CppSharp @@ -2466,7 +2466,7 @@ namespace CppSharp
public unsafe partial class DependentNameType : global::CppSharp.Parser.AST.Type, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 8)]
[StructLayout(LayoutKind.Explicit, Size = 12)]
public new partial struct Internal
{
[FieldOffset(0)]
@ -2475,6 +2475,9 @@ namespace CppSharp @@ -2475,6 +2475,9 @@ namespace CppSharp
[FieldOffset(4)]
public byte IsDependent;
[FieldOffset(8)]
public global::System.IntPtr Desugared;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST17DependentNameTypeC2Ev")]
@ -2498,7 +2501,7 @@ namespace CppSharp @@ -2498,7 +2501,7 @@ namespace CppSharp
private static void* __CopyValue(DependentNameType.Internal native)
{
var ret = Marshal.AllocHGlobal(8);
var ret = Marshal.AllocHGlobal(12);
global::CppSharp.Parser.AST.DependentNameType.Internal.cctor_2(ret, new global::System.IntPtr(&native));
return ret.ToPointer();
}
@ -2522,7 +2525,7 @@ namespace CppSharp @@ -2522,7 +2525,7 @@ namespace CppSharp
public DependentNameType()
: this((void*) null)
{
__Instance = Marshal.AllocHGlobal(8);
__Instance = Marshal.AllocHGlobal(12);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
Internal.ctor_0((__Instance + __PointerAdjustment));
@ -2531,7 +2534,7 @@ namespace CppSharp @@ -2531,7 +2534,7 @@ namespace CppSharp
public DependentNameType(global::CppSharp.Parser.AST.DependentNameType _0)
: this((void*) null)
{
__Instance = Marshal.AllocHGlobal(8);
__Instance = Marshal.AllocHGlobal(12);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null))
@ -2539,6 +2542,24 @@ namespace CppSharp @@ -2539,6 +2542,24 @@ namespace CppSharp
var __arg0 = _0.__Instance;
Internal.cctor_2((__Instance + __PointerAdjustment), __arg0);
}
public global::CppSharp.Parser.AST.Type Desugared
{
get
{
global::CppSharp.Parser.AST.Type __result0;
if (((Internal*) __Instance)->Desugared == IntPtr.Zero) __result0 = null;
else if (global::CppSharp.Parser.AST.Type.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Desugared))
__result0 = (global::CppSharp.Parser.AST.Type) global::CppSharp.Parser.AST.Type.NativeToManagedMap[((Internal*) __Instance)->Desugared];
else __result0 = global::CppSharp.Parser.AST.Type.__CreateInstance(((Internal*) __Instance)->Desugared);
return __result0;
}
set
{
((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance;
}
}
}
public unsafe partial class PackExpansionType : global::CppSharp.Parser.AST.Type, IDisposable

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

@ -2466,7 +2466,7 @@ namespace CppSharp @@ -2466,7 +2466,7 @@ namespace CppSharp
public unsafe partial class DependentNameType : global::CppSharp.Parser.AST.Type, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 8)]
[StructLayout(LayoutKind.Explicit, Size = 12)]
public new partial struct Internal
{
[FieldOffset(0)]
@ -2475,6 +2475,9 @@ namespace CppSharp @@ -2475,6 +2475,9 @@ namespace CppSharp
[FieldOffset(4)]
public byte IsDependent;
[FieldOffset(8)]
public global::System.IntPtr Desugared;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
EntryPoint="??0DependentNameType@AST@CppParser@CppSharp@@QAE@XZ")]
@ -2498,7 +2501,7 @@ namespace CppSharp @@ -2498,7 +2501,7 @@ namespace CppSharp
private static void* __CopyValue(DependentNameType.Internal native)
{
var ret = Marshal.AllocHGlobal(8);
var ret = Marshal.AllocHGlobal(12);
global::CppSharp.Parser.AST.DependentNameType.Internal.cctor_2(ret, new global::System.IntPtr(&native));
return ret.ToPointer();
}
@ -2522,7 +2525,7 @@ namespace CppSharp @@ -2522,7 +2525,7 @@ namespace CppSharp
public DependentNameType()
: this((void*) null)
{
__Instance = Marshal.AllocHGlobal(8);
__Instance = Marshal.AllocHGlobal(12);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
Internal.ctor_0((__Instance + __PointerAdjustment));
@ -2531,7 +2534,7 @@ namespace CppSharp @@ -2531,7 +2534,7 @@ namespace CppSharp
public DependentNameType(global::CppSharp.Parser.AST.DependentNameType _0)
: this((void*) null)
{
__Instance = Marshal.AllocHGlobal(8);
__Instance = Marshal.AllocHGlobal(12);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null))
@ -2539,6 +2542,24 @@ namespace CppSharp @@ -2539,6 +2542,24 @@ namespace CppSharp
var __arg0 = _0.__Instance;
Internal.cctor_2((__Instance + __PointerAdjustment), __arg0);
}
public global::CppSharp.Parser.AST.Type Desugared
{
get
{
global::CppSharp.Parser.AST.Type __result0;
if (((Internal*) __Instance)->Desugared == IntPtr.Zero) __result0 = null;
else if (global::CppSharp.Parser.AST.Type.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Desugared))
__result0 = (global::CppSharp.Parser.AST.Type) global::CppSharp.Parser.AST.Type.NativeToManagedMap[((Internal*) __Instance)->Desugared];
else __result0 = global::CppSharp.Parser.AST.Type.__CreateInstance(((Internal*) __Instance)->Desugared);
return __result0;
}
set
{
((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance;
}
}
}
public unsafe partial class PackExpansionType : global::CppSharp.Parser.AST.Type, IDisposable

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

@ -2466,7 +2466,7 @@ namespace CppSharp @@ -2466,7 +2466,7 @@ namespace CppSharp
public unsafe partial class DependentNameType : global::CppSharp.Parser.AST.Type, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 8)]
[StructLayout(LayoutKind.Explicit, Size = 16)]
public new partial struct Internal
{
[FieldOffset(0)]
@ -2475,6 +2475,9 @@ namespace CppSharp @@ -2475,6 +2475,9 @@ namespace CppSharp
[FieldOffset(4)]
public byte IsDependent;
[FieldOffset(8)]
public global::System.IntPtr Desugared;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST17DependentNameTypeC2Ev")]
@ -2498,7 +2501,7 @@ namespace CppSharp @@ -2498,7 +2501,7 @@ namespace CppSharp
private static void* __CopyValue(DependentNameType.Internal native)
{
var ret = Marshal.AllocHGlobal(8);
var ret = Marshal.AllocHGlobal(16);
global::CppSharp.Parser.AST.DependentNameType.Internal.cctor_2(ret, new global::System.IntPtr(&native));
return ret.ToPointer();
}
@ -2522,7 +2525,7 @@ namespace CppSharp @@ -2522,7 +2525,7 @@ namespace CppSharp
public DependentNameType()
: this((void*) null)
{
__Instance = Marshal.AllocHGlobal(8);
__Instance = Marshal.AllocHGlobal(16);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
Internal.ctor_0((__Instance + __PointerAdjustment));
@ -2531,7 +2534,7 @@ namespace CppSharp @@ -2531,7 +2534,7 @@ namespace CppSharp
public DependentNameType(global::CppSharp.Parser.AST.DependentNameType _0)
: this((void*) null)
{
__Instance = Marshal.AllocHGlobal(8);
__Instance = Marshal.AllocHGlobal(16);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null))
@ -2539,6 +2542,24 @@ namespace CppSharp @@ -2539,6 +2542,24 @@ namespace CppSharp
var __arg0 = _0.__Instance;
Internal.cctor_2((__Instance + __PointerAdjustment), __arg0);
}
public global::CppSharp.Parser.AST.Type Desugared
{
get
{
global::CppSharp.Parser.AST.Type __result0;
if (((Internal*) __Instance)->Desugared == IntPtr.Zero) __result0 = null;
else if (global::CppSharp.Parser.AST.Type.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Desugared))
__result0 = (global::CppSharp.Parser.AST.Type) global::CppSharp.Parser.AST.Type.NativeToManagedMap[((Internal*) __Instance)->Desugared];
else __result0 = global::CppSharp.Parser.AST.Type.__CreateInstance(((Internal*) __Instance)->Desugared);
return __result0;
}
set
{
((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance;
}
}
}
public unsafe partial class PackExpansionType : global::CppSharp.Parser.AST.Type, IDisposable

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

@ -2466,7 +2466,7 @@ namespace CppSharp @@ -2466,7 +2466,7 @@ namespace CppSharp
public unsafe partial class DependentNameType : global::CppSharp.Parser.AST.Type, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 8)]
[StructLayout(LayoutKind.Explicit, Size = 16)]
public new partial struct Internal
{
[FieldOffset(0)]
@ -2475,6 +2475,9 @@ namespace CppSharp @@ -2475,6 +2475,9 @@ namespace CppSharp
[FieldOffset(4)]
public byte IsDependent;
[FieldOffset(8)]
public global::System.IntPtr Desugared;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST17DependentNameTypeC2Ev")]
@ -2498,7 +2501,7 @@ namespace CppSharp @@ -2498,7 +2501,7 @@ namespace CppSharp
private static void* __CopyValue(DependentNameType.Internal native)
{
var ret = Marshal.AllocHGlobal(8);
var ret = Marshal.AllocHGlobal(16);
global::CppSharp.Parser.AST.DependentNameType.Internal.cctor_2(ret, new global::System.IntPtr(&native));
return ret.ToPointer();
}
@ -2522,7 +2525,7 @@ namespace CppSharp @@ -2522,7 +2525,7 @@ namespace CppSharp
public DependentNameType()
: this((void*) null)
{
__Instance = Marshal.AllocHGlobal(8);
__Instance = Marshal.AllocHGlobal(16);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
Internal.ctor_0((__Instance + __PointerAdjustment));
@ -2531,7 +2534,7 @@ namespace CppSharp @@ -2531,7 +2534,7 @@ namespace CppSharp
public DependentNameType(global::CppSharp.Parser.AST.DependentNameType _0)
: this((void*) null)
{
__Instance = Marshal.AllocHGlobal(8);
__Instance = Marshal.AllocHGlobal(16);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null))
@ -2539,6 +2542,24 @@ namespace CppSharp @@ -2539,6 +2542,24 @@ namespace CppSharp
var __arg0 = _0.__Instance;
Internal.cctor_2((__Instance + __PointerAdjustment), __arg0);
}
public global::CppSharp.Parser.AST.Type Desugared
{
get
{
global::CppSharp.Parser.AST.Type __result0;
if (((Internal*) __Instance)->Desugared == IntPtr.Zero) __result0 = null;
else if (global::CppSharp.Parser.AST.Type.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Desugared))
__result0 = (global::CppSharp.Parser.AST.Type) global::CppSharp.Parser.AST.Type.NativeToManagedMap[((Internal*) __Instance)->Desugared];
else __result0 = global::CppSharp.Parser.AST.Type.__CreateInstance(((Internal*) __Instance)->Desugared);
return __result0;
}
set
{
((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance;
}
}
}
public unsafe partial class PackExpansionType : global::CppSharp.Parser.AST.Type, IDisposable

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

@ -2466,7 +2466,7 @@ namespace CppSharp @@ -2466,7 +2466,7 @@ namespace CppSharp
public unsafe partial class DependentNameType : global::CppSharp.Parser.AST.Type, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 8)]
[StructLayout(LayoutKind.Explicit, Size = 16)]
public new partial struct Internal
{
[FieldOffset(0)]
@ -2475,6 +2475,9 @@ namespace CppSharp @@ -2475,6 +2475,9 @@ namespace CppSharp
[FieldOffset(4)]
public byte IsDependent;
[FieldOffset(8)]
public global::System.IntPtr Desugared;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST17DependentNameTypeC2Ev")]
@ -2498,7 +2501,7 @@ namespace CppSharp @@ -2498,7 +2501,7 @@ namespace CppSharp
private static void* __CopyValue(DependentNameType.Internal native)
{
var ret = Marshal.AllocHGlobal(8);
var ret = Marshal.AllocHGlobal(16);
global::CppSharp.Parser.AST.DependentNameType.Internal.cctor_2(ret, new global::System.IntPtr(&native));
return ret.ToPointer();
}
@ -2522,7 +2525,7 @@ namespace CppSharp @@ -2522,7 +2525,7 @@ namespace CppSharp
public DependentNameType()
: this((void*) null)
{
__Instance = Marshal.AllocHGlobal(8);
__Instance = Marshal.AllocHGlobal(16);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
Internal.ctor_0((__Instance + __PointerAdjustment));
@ -2531,7 +2534,7 @@ namespace CppSharp @@ -2531,7 +2534,7 @@ namespace CppSharp
public DependentNameType(global::CppSharp.Parser.AST.DependentNameType _0)
: this((void*) null)
{
__Instance = Marshal.AllocHGlobal(8);
__Instance = Marshal.AllocHGlobal(16);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null))
@ -2539,6 +2542,24 @@ namespace CppSharp @@ -2539,6 +2542,24 @@ namespace CppSharp
var __arg0 = _0.__Instance;
Internal.cctor_2((__Instance + __PointerAdjustment), __arg0);
}
public global::CppSharp.Parser.AST.Type Desugared
{
get
{
global::CppSharp.Parser.AST.Type __result0;
if (((Internal*) __Instance)->Desugared == IntPtr.Zero) __result0 = null;
else if (global::CppSharp.Parser.AST.Type.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Desugared))
__result0 = (global::CppSharp.Parser.AST.Type) global::CppSharp.Parser.AST.Type.NativeToManagedMap[((Internal*) __Instance)->Desugared];
else __result0 = global::CppSharp.Parser.AST.Type.__CreateInstance(((Internal*) __Instance)->Desugared);
return __result0;
}
set
{
((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance;
}
}
}
public unsafe partial class PackExpansionType : global::CppSharp.Parser.AST.Type, IDisposable

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

@ -2466,7 +2466,7 @@ namespace CppSharp @@ -2466,7 +2466,7 @@ namespace CppSharp
public unsafe partial class DependentNameType : global::CppSharp.Parser.AST.Type, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 8)]
[StructLayout(LayoutKind.Explicit, Size = 16)]
public new partial struct Internal
{
[FieldOffset(0)]
@ -2475,6 +2475,9 @@ namespace CppSharp @@ -2475,6 +2475,9 @@ namespace CppSharp
[FieldOffset(4)]
public byte IsDependent;
[FieldOffset(8)]
public global::System.IntPtr Desugared;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="??0DependentNameType@AST@CppParser@CppSharp@@QEAA@XZ")]
@ -2498,7 +2501,7 @@ namespace CppSharp @@ -2498,7 +2501,7 @@ namespace CppSharp
private static void* __CopyValue(DependentNameType.Internal native)
{
var ret = Marshal.AllocHGlobal(8);
var ret = Marshal.AllocHGlobal(16);
global::CppSharp.Parser.AST.DependentNameType.Internal.cctor_2(ret, new global::System.IntPtr(&native));
return ret.ToPointer();
}
@ -2522,7 +2525,7 @@ namespace CppSharp @@ -2522,7 +2525,7 @@ namespace CppSharp
public DependentNameType()
: this((void*) null)
{
__Instance = Marshal.AllocHGlobal(8);
__Instance = Marshal.AllocHGlobal(16);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
Internal.ctor_0((__Instance + __PointerAdjustment));
@ -2531,7 +2534,7 @@ namespace CppSharp @@ -2531,7 +2534,7 @@ namespace CppSharp
public DependentNameType(global::CppSharp.Parser.AST.DependentNameType _0)
: this((void*) null)
{
__Instance = Marshal.AllocHGlobal(8);
__Instance = Marshal.AllocHGlobal(16);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null))
@ -2539,6 +2542,24 @@ namespace CppSharp @@ -2539,6 +2542,24 @@ namespace CppSharp
var __arg0 = _0.__Instance;
Internal.cctor_2((__Instance + __PointerAdjustment), __arg0);
}
public global::CppSharp.Parser.AST.Type Desugared
{
get
{
global::CppSharp.Parser.AST.Type __result0;
if (((Internal*) __Instance)->Desugared == IntPtr.Zero) __result0 = null;
else if (global::CppSharp.Parser.AST.Type.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Desugared))
__result0 = (global::CppSharp.Parser.AST.Type) global::CppSharp.Parser.AST.Type.NativeToManagedMap[((Internal*) __Instance)->Desugared];
else __result0 = global::CppSharp.Parser.AST.Type.__CreateInstance(((Internal*) __Instance)->Desugared);
return __result0;
}
set
{
((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance;
}
}
}
public unsafe partial class PackExpansionType : global::CppSharp.Parser.AST.Type, IDisposable

2
src/CppParser/Parser.cpp

@ -2357,6 +2357,8 @@ Type* Parser::WalkType(clang::QualType QualType, clang::TypeLoc* TL, @@ -2357,6 +2357,8 @@ Type* Parser::WalkType(clang::QualType QualType, clang::TypeLoc* TL,
{
auto DN = Type->getAs<clang::DependentNameType>();
auto DNT = new DependentNameType();
if (DN->isSugared())
DNT->Desugared = WalkType(DN->desugar(), TL);
Ty = DNT;
break;

2
src/Generator/Generators/CLI/CLITypePrinter.cs

@ -304,7 +304,7 @@ namespace CppSharp.Generators.CLI @@ -304,7 +304,7 @@ namespace CppSharp.Generators.CLI
public string VisitDependentNameType(DependentNameType dependent, TypeQualifiers quals)
{
return string.Empty;
return dependent.Desugared != null ? dependent.Desugared.Visit(this) : string.Empty;
}
public string VisitPackExpansionType(PackExpansionType packExpansionType, TypeQualifiers quals)

2
src/Generator/Generators/CSharp/CSharpTypePrinter.cs

@ -461,7 +461,7 @@ namespace CppSharp.Generators.CSharp @@ -461,7 +461,7 @@ namespace CppSharp.Generators.CSharp
public CSharpTypePrinterResult VisitDependentNameType(DependentNameType dependent,
TypeQualifiers quals)
{
throw new NotImplementedException();
return dependent.Desugared != null ? dependent.Desugared.Visit(this) : string.Empty;
}
public CSharpTypePrinterResult VisitPackExpansionType(PackExpansionType type,

2
src/Generator/Types/CppTypePrinter.cs

@ -187,7 +187,7 @@ namespace CppSharp.Types @@ -187,7 +187,7 @@ namespace CppSharp.Types
public string VisitDependentNameType(DependentNameType dependent, TypeQualifiers quals)
{
return string.Empty;
return dependent.Desugared != null ? dependent.Desugared.Visit(this) : string.Empty;
}
public string VisitPackExpansionType(PackExpansionType packExpansionType, TypeQualifiers quals)

Loading…
Cancel
Save