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
{ {
} }
public Type Desugared { get; set; }
public override T Visit<T>(ITypeVisitor<T> visitor, public override T Visit<T>(ITypeVisitor<T> visitor,
TypeQualifiers quals = new TypeQualifiers()) TypeQualifiers quals = new TypeQualifiers())
{ {

10
src/Core/Parser/ASTConverter.cs

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

2
src/CppParser/AST.cpp

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

1
src/CppParser/AST.h

@ -240,6 +240,7 @@ class CS_API DependentNameType : public Type
{ {
public: public:
DECLARE_TYPE_KIND(DependentName) DECLARE_TYPE_KIND(DependentName)
Type* Desugared;
}; };
class CS_API PackExpansionType : public Type 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
NativePtr = new ::CppSharp::CppParser::AST::DependentNameType(__arg0); 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::PackExpansionType::PackExpansionType(::CppSharp::CppParser::AST::PackExpansionType* native)
: CppSharp::Parser::AST::Type((::CppSharp::CppParser::AST::Type*)native) : CppSharp::Parser::AST::Type((::CppSharp::CppParser::AST::Type*)native)
{ {

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

@ -910,6 +910,12 @@ namespace CppSharp
DependentNameType(CppSharp::Parser::AST::DependentNameType^ _0); DependentNameType(CppSharp::Parser::AST::DependentNameType^ _0);
~DependentNameType(); ~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 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
public unsafe partial class DependentNameType : global::CppSharp.Parser.AST.Type, IDisposable 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 public new partial struct Internal
{ {
[FieldOffset(0)] [FieldOffset(0)]
@ -2475,6 +2475,9 @@ namespace CppSharp
[FieldOffset(4)] [FieldOffset(4)]
public byte IsDependent; public byte IsDependent;
[FieldOffset(8)]
public global::System.IntPtr Desugared;
[SuppressUnmanagedCodeSecurity] [SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST17DependentNameTypeC2Ev")] EntryPoint="_ZN8CppSharp9CppParser3AST17DependentNameTypeC2Ev")]
@ -2498,7 +2501,7 @@ namespace CppSharp
private static void* __CopyValue(DependentNameType.Internal native) 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)); global::CppSharp.Parser.AST.DependentNameType.Internal.cctor_2(ret, new global::System.IntPtr(&native));
return ret.ToPointer(); return ret.ToPointer();
} }
@ -2522,7 +2525,7 @@ namespace CppSharp
public DependentNameType() public DependentNameType()
: this((void*) null) : this((void*) null)
{ {
__Instance = Marshal.AllocHGlobal(8); __Instance = Marshal.AllocHGlobal(12);
__ownsNativeInstance = true; __ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this; NativeToManagedMap[__Instance] = this;
Internal.ctor_0((__Instance + __PointerAdjustment)); Internal.ctor_0((__Instance + __PointerAdjustment));
@ -2531,7 +2534,7 @@ namespace CppSharp
public DependentNameType(global::CppSharp.Parser.AST.DependentNameType _0) public DependentNameType(global::CppSharp.Parser.AST.DependentNameType _0)
: this((void*) null) : this((void*) null)
{ {
__Instance = Marshal.AllocHGlobal(8); __Instance = Marshal.AllocHGlobal(12);
__ownsNativeInstance = true; __ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this; NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null)) if (ReferenceEquals(_0, null))
@ -2539,6 +2542,24 @@ namespace CppSharp
var __arg0 = _0.__Instance; var __arg0 = _0.__Instance;
Internal.cctor_2((__Instance + __PointerAdjustment), __arg0); 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 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
public unsafe partial class DependentNameType : global::CppSharp.Parser.AST.Type, IDisposable 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 public new partial struct Internal
{ {
[FieldOffset(0)] [FieldOffset(0)]
@ -2475,6 +2475,9 @@ namespace CppSharp
[FieldOffset(4)] [FieldOffset(4)]
public byte IsDependent; public byte IsDependent;
[FieldOffset(8)]
public global::System.IntPtr Desugared;
[SuppressUnmanagedCodeSecurity] [SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
EntryPoint="??0DependentNameType@AST@CppParser@CppSharp@@QAE@XZ")] EntryPoint="??0DependentNameType@AST@CppParser@CppSharp@@QAE@XZ")]
@ -2498,7 +2501,7 @@ namespace CppSharp
private static void* __CopyValue(DependentNameType.Internal native) 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)); global::CppSharp.Parser.AST.DependentNameType.Internal.cctor_2(ret, new global::System.IntPtr(&native));
return ret.ToPointer(); return ret.ToPointer();
} }
@ -2522,7 +2525,7 @@ namespace CppSharp
public DependentNameType() public DependentNameType()
: this((void*) null) : this((void*) null)
{ {
__Instance = Marshal.AllocHGlobal(8); __Instance = Marshal.AllocHGlobal(12);
__ownsNativeInstance = true; __ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this; NativeToManagedMap[__Instance] = this;
Internal.ctor_0((__Instance + __PointerAdjustment)); Internal.ctor_0((__Instance + __PointerAdjustment));
@ -2531,7 +2534,7 @@ namespace CppSharp
public DependentNameType(global::CppSharp.Parser.AST.DependentNameType _0) public DependentNameType(global::CppSharp.Parser.AST.DependentNameType _0)
: this((void*) null) : this((void*) null)
{ {
__Instance = Marshal.AllocHGlobal(8); __Instance = Marshal.AllocHGlobal(12);
__ownsNativeInstance = true; __ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this; NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null)) if (ReferenceEquals(_0, null))
@ -2539,6 +2542,24 @@ namespace CppSharp
var __arg0 = _0.__Instance; var __arg0 = _0.__Instance;
Internal.cctor_2((__Instance + __PointerAdjustment), __arg0); 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 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
public unsafe partial class DependentNameType : global::CppSharp.Parser.AST.Type, IDisposable 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 public new partial struct Internal
{ {
[FieldOffset(0)] [FieldOffset(0)]
@ -2475,6 +2475,9 @@ namespace CppSharp
[FieldOffset(4)] [FieldOffset(4)]
public byte IsDependent; public byte IsDependent;
[FieldOffset(8)]
public global::System.IntPtr Desugared;
[SuppressUnmanagedCodeSecurity] [SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST17DependentNameTypeC2Ev")] EntryPoint="_ZN8CppSharp9CppParser3AST17DependentNameTypeC2Ev")]
@ -2498,7 +2501,7 @@ namespace CppSharp
private static void* __CopyValue(DependentNameType.Internal native) 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)); global::CppSharp.Parser.AST.DependentNameType.Internal.cctor_2(ret, new global::System.IntPtr(&native));
return ret.ToPointer(); return ret.ToPointer();
} }
@ -2522,7 +2525,7 @@ namespace CppSharp
public DependentNameType() public DependentNameType()
: this((void*) null) : this((void*) null)
{ {
__Instance = Marshal.AllocHGlobal(8); __Instance = Marshal.AllocHGlobal(16);
__ownsNativeInstance = true; __ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this; NativeToManagedMap[__Instance] = this;
Internal.ctor_0((__Instance + __PointerAdjustment)); Internal.ctor_0((__Instance + __PointerAdjustment));
@ -2531,7 +2534,7 @@ namespace CppSharp
public DependentNameType(global::CppSharp.Parser.AST.DependentNameType _0) public DependentNameType(global::CppSharp.Parser.AST.DependentNameType _0)
: this((void*) null) : this((void*) null)
{ {
__Instance = Marshal.AllocHGlobal(8); __Instance = Marshal.AllocHGlobal(16);
__ownsNativeInstance = true; __ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this; NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null)) if (ReferenceEquals(_0, null))
@ -2539,6 +2542,24 @@ namespace CppSharp
var __arg0 = _0.__Instance; var __arg0 = _0.__Instance;
Internal.cctor_2((__Instance + __PointerAdjustment), __arg0); 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 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
public unsafe partial class DependentNameType : global::CppSharp.Parser.AST.Type, IDisposable 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 public new partial struct Internal
{ {
[FieldOffset(0)] [FieldOffset(0)]
@ -2475,6 +2475,9 @@ namespace CppSharp
[FieldOffset(4)] [FieldOffset(4)]
public byte IsDependent; public byte IsDependent;
[FieldOffset(8)]
public global::System.IntPtr Desugared;
[SuppressUnmanagedCodeSecurity] [SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST17DependentNameTypeC2Ev")] EntryPoint="_ZN8CppSharp9CppParser3AST17DependentNameTypeC2Ev")]
@ -2498,7 +2501,7 @@ namespace CppSharp
private static void* __CopyValue(DependentNameType.Internal native) 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)); global::CppSharp.Parser.AST.DependentNameType.Internal.cctor_2(ret, new global::System.IntPtr(&native));
return ret.ToPointer(); return ret.ToPointer();
} }
@ -2522,7 +2525,7 @@ namespace CppSharp
public DependentNameType() public DependentNameType()
: this((void*) null) : this((void*) null)
{ {
__Instance = Marshal.AllocHGlobal(8); __Instance = Marshal.AllocHGlobal(16);
__ownsNativeInstance = true; __ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this; NativeToManagedMap[__Instance] = this;
Internal.ctor_0((__Instance + __PointerAdjustment)); Internal.ctor_0((__Instance + __PointerAdjustment));
@ -2531,7 +2534,7 @@ namespace CppSharp
public DependentNameType(global::CppSharp.Parser.AST.DependentNameType _0) public DependentNameType(global::CppSharp.Parser.AST.DependentNameType _0)
: this((void*) null) : this((void*) null)
{ {
__Instance = Marshal.AllocHGlobal(8); __Instance = Marshal.AllocHGlobal(16);
__ownsNativeInstance = true; __ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this; NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null)) if (ReferenceEquals(_0, null))
@ -2539,6 +2542,24 @@ namespace CppSharp
var __arg0 = _0.__Instance; var __arg0 = _0.__Instance;
Internal.cctor_2((__Instance + __PointerAdjustment), __arg0); 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 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
public unsafe partial class DependentNameType : global::CppSharp.Parser.AST.Type, IDisposable 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 public new partial struct Internal
{ {
[FieldOffset(0)] [FieldOffset(0)]
@ -2475,6 +2475,9 @@ namespace CppSharp
[FieldOffset(4)] [FieldOffset(4)]
public byte IsDependent; public byte IsDependent;
[FieldOffset(8)]
public global::System.IntPtr Desugared;
[SuppressUnmanagedCodeSecurity] [SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST17DependentNameTypeC2Ev")] EntryPoint="_ZN8CppSharp9CppParser3AST17DependentNameTypeC2Ev")]
@ -2498,7 +2501,7 @@ namespace CppSharp
private static void* __CopyValue(DependentNameType.Internal native) 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)); global::CppSharp.Parser.AST.DependentNameType.Internal.cctor_2(ret, new global::System.IntPtr(&native));
return ret.ToPointer(); return ret.ToPointer();
} }
@ -2522,7 +2525,7 @@ namespace CppSharp
public DependentNameType() public DependentNameType()
: this((void*) null) : this((void*) null)
{ {
__Instance = Marshal.AllocHGlobal(8); __Instance = Marshal.AllocHGlobal(16);
__ownsNativeInstance = true; __ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this; NativeToManagedMap[__Instance] = this;
Internal.ctor_0((__Instance + __PointerAdjustment)); Internal.ctor_0((__Instance + __PointerAdjustment));
@ -2531,7 +2534,7 @@ namespace CppSharp
public DependentNameType(global::CppSharp.Parser.AST.DependentNameType _0) public DependentNameType(global::CppSharp.Parser.AST.DependentNameType _0)
: this((void*) null) : this((void*) null)
{ {
__Instance = Marshal.AllocHGlobal(8); __Instance = Marshal.AllocHGlobal(16);
__ownsNativeInstance = true; __ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this; NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null)) if (ReferenceEquals(_0, null))
@ -2539,6 +2542,24 @@ namespace CppSharp
var __arg0 = _0.__Instance; var __arg0 = _0.__Instance;
Internal.cctor_2((__Instance + __PointerAdjustment), __arg0); 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 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
public unsafe partial class DependentNameType : global::CppSharp.Parser.AST.Type, IDisposable 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 public new partial struct Internal
{ {
[FieldOffset(0)] [FieldOffset(0)]
@ -2475,6 +2475,9 @@ namespace CppSharp
[FieldOffset(4)] [FieldOffset(4)]
public byte IsDependent; public byte IsDependent;
[FieldOffset(8)]
public global::System.IntPtr Desugared;
[SuppressUnmanagedCodeSecurity] [SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="??0DependentNameType@AST@CppParser@CppSharp@@QEAA@XZ")] EntryPoint="??0DependentNameType@AST@CppParser@CppSharp@@QEAA@XZ")]
@ -2498,7 +2501,7 @@ namespace CppSharp
private static void* __CopyValue(DependentNameType.Internal native) 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)); global::CppSharp.Parser.AST.DependentNameType.Internal.cctor_2(ret, new global::System.IntPtr(&native));
return ret.ToPointer(); return ret.ToPointer();
} }
@ -2522,7 +2525,7 @@ namespace CppSharp
public DependentNameType() public DependentNameType()
: this((void*) null) : this((void*) null)
{ {
__Instance = Marshal.AllocHGlobal(8); __Instance = Marshal.AllocHGlobal(16);
__ownsNativeInstance = true; __ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this; NativeToManagedMap[__Instance] = this;
Internal.ctor_0((__Instance + __PointerAdjustment)); Internal.ctor_0((__Instance + __PointerAdjustment));
@ -2531,7 +2534,7 @@ namespace CppSharp
public DependentNameType(global::CppSharp.Parser.AST.DependentNameType _0) public DependentNameType(global::CppSharp.Parser.AST.DependentNameType _0)
: this((void*) null) : this((void*) null)
{ {
__Instance = Marshal.AllocHGlobal(8); __Instance = Marshal.AllocHGlobal(16);
__ownsNativeInstance = true; __ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this; NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null)) if (ReferenceEquals(_0, null))
@ -2539,6 +2542,24 @@ namespace CppSharp
var __arg0 = _0.__Instance; var __arg0 = _0.__Instance;
Internal.cctor_2((__Instance + __PointerAdjustment), __arg0); 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 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,
{ {
auto DN = Type->getAs<clang::DependentNameType>(); auto DN = Type->getAs<clang::DependentNameType>();
auto DNT = new DependentNameType(); auto DNT = new DependentNameType();
if (DN->isSugared())
DNT->Desugared = WalkType(DN->desugar(), TL);
Ty = DNT; Ty = DNT;
break; break;

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

@ -304,7 +304,7 @@ namespace CppSharp.Generators.CLI
public string VisitDependentNameType(DependentNameType dependent, TypeQualifiers quals) 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) public string VisitPackExpansionType(PackExpansionType packExpansionType, TypeQualifiers quals)

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

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

2
src/Generator/Types/CppTypePrinter.cs

@ -187,7 +187,7 @@ namespace CppSharp.Types
public string VisitDependentNameType(DependentNameType dependent, TypeQualifiers quals) 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) public string VisitPackExpansionType(PackExpansionType packExpansionType, TypeQualifiers quals)

Loading…
Cancel
Save