Browse Source

Added dependent template specialization types to the AST.

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

30
src/AST/ASTVisitor.cs

@ -188,6 +188,36 @@ namespace CppSharp.AST @@ -188,6 +188,36 @@ namespace CppSharp.AST
return specialization != null && specialization.Visit(this);
}
public bool VisitDependentTemplateSpecializationType(
DependentTemplateSpecializationType template, TypeQualifiers quals)
{
if (!VisitType(template, quals))
return false;
if (Options.VisitTemplateArguments)
{
foreach (var arg in template.Arguments)
{
switch (arg.Kind)
{
case TemplateArgument.ArgumentKind.Type:
var type = arg.Type.Type;
if (type != null)
type.Visit(this, arg.Type.Qualifiers);
break;
case TemplateArgument.ArgumentKind.Declaration:
arg.Declaration.Visit(this);
break;
}
}
}
if (template.Desugared != null)
return template.Desugared.Visit(this);
return false;
}
public virtual bool VisitTemplateParameterType(TemplateParameterType param,
TypeQualifiers quals)
{

56
src/AST/Type.cs

@ -681,6 +681,60 @@ namespace CppSharp.AST @@ -681,6 +681,60 @@ namespace CppSharp.AST
}
}
/// <summary>
/// Represents a C++ dependent template specialization type.
/// </summary>
public class DependentTemplateSpecializationType : Type
{
public DependentTemplateSpecializationType()
{
Arguments = new List<TemplateArgument>();
}
public DependentTemplateSpecializationType(DependentTemplateSpecializationType type)
: base(type)
{
Arguments = type.Arguments.Select(
t => new TemplateArgument
{
Declaration = t.Declaration,
Integral = t.Integral,
Kind = t.Kind,
Type = new QualifiedType((Type) t.Type.Type.Clone(), t.Type.Qualifiers)
}).ToList();
Desugared = (Type) type.Desugared.Clone();
}
public List<TemplateArgument> Arguments;
public Type Desugared;
public override T Visit<T>(ITypeVisitor<T> visitor,
TypeQualifiers quals = new TypeQualifiers())
{
return visitor.VisitDependentTemplateSpecializationType(this, quals);
}
public override object Clone()
{
return new DependentTemplateSpecializationType(this);
}
public override bool Equals(object obj)
{
var type = obj as TemplateSpecializationType;
if (type == null) return false;
return Arguments.SequenceEqual(type.Arguments) &&
Desugared == type.Desugared;
}
public override int GetHashCode()
{
return base.GetHashCode();
}
}
/// <summary>
/// Represents a C++ template parameter type.
/// </summary>
@ -1033,6 +1087,8 @@ namespace CppSharp.AST @@ -1033,6 +1087,8 @@ namespace CppSharp.AST
T VisitDecayedType(DecayedType decayed, TypeQualifiers quals);
T VisitTemplateSpecializationType(TemplateSpecializationType template,
TypeQualifiers quals);
T VisitDependentTemplateSpecializationType(
DependentTemplateSpecializationType template, TypeQualifiers quals);
T VisitPrimitiveType(PrimitiveType type, TypeQualifiers quals);
T VisitDeclaration(Declaration decl, TypeQualifiers quals);
T VisitTemplateParameterType(TemplateParameterType param,

27
src/Core/Parser/ASTConverter.cs

@ -20,6 +20,7 @@ namespace CppSharp @@ -20,6 +20,7 @@ namespace CppSharp
public abstract TRet VisitAttributed(AttributedType type);
public abstract TRet VisitDecayed(DecayedType type);
public abstract TRet VisitTemplateSpecialization(TemplateSpecializationType type);
public abstract TRet VisitDependentTemplateSpecialization(DependentTemplateSpecializationType type);
public abstract TRet VisitTemplateParameter(TemplateParameterType type);
public abstract TRet VisitTemplateParameterSubstitution(TemplateParameterSubstitutionType type);
public abstract TRet VisitInjectedClassName(InjectedClassNameType type);
@ -79,6 +80,11 @@ namespace CppSharp @@ -79,6 +80,11 @@ namespace CppSharp
var _type = TemplateSpecializationType.__CreateInstance(type.__Instance);
return VisitTemplateSpecialization(_type);
}
case TypeKind.DependentTemplateSpecialization:
{
var _type = DependentTemplateSpecializationType.__CreateInstance(type.__Instance);
return VisitDependentTemplateSpecialization(_type);
}
case TypeKind.TemplateParameter:
{
var _type = TemplateParameterType.__CreateInstance(type.__Instance);
@ -564,7 +570,7 @@ namespace CppSharp @@ -564,7 +570,7 @@ namespace CppSharp
public override AST.Type VisitTemplateSpecialization(TemplateSpecializationType type)
{
var _type = new CppSharp.AST.TemplateSpecializationType();
var _type = new AST.TemplateSpecializationType();
for (uint i = 0; i < type.ArgumentsCount; ++i)
{
@ -581,6 +587,25 @@ namespace CppSharp @@ -581,6 +587,25 @@ namespace CppSharp
return _type;
}
public override AST.Type VisitDependentTemplateSpecialization(
DependentTemplateSpecializationType type)
{
var _type = new AST.DependentTemplateSpecializationType();
for (uint i = 0; i < type.ArgumentsCount; ++i)
{
var arg = type.getArguments(i);
var _arg = VisitTemplateArgument(arg);
_type.Arguments.Add(_arg);
}
_type.Desugared = Visit(type.Desugared);
VisitType(type, _type);
return _type;
}
public override AST.Type VisitTemplateParameter(TemplateParameterType type)
{
var _type = new AST.TemplateParameterType();

12
src/CppParser/AST.cpp

@ -146,6 +146,7 @@ TemplateArgument::TemplateArgument() : Declaration(0), Integral(0) {} @@ -146,6 +146,7 @@ TemplateArgument::TemplateArgument() : Declaration(0), Integral(0) {}
TemplateSpecializationType::TemplateSpecializationType()
: Type(TypeKind::TemplateSpecialization), Template(0), Desugared(0) {}
TemplateSpecializationType::TemplateSpecializationType(
const TemplateSpecializationType& rhs) : Type(rhs),
Arguments(rhs.Arguments), Template(rhs.Template), Desugared(rhs.Desugared) {}
@ -154,6 +155,17 @@ TemplateSpecializationType::~TemplateSpecializationType() {} @@ -154,6 +155,17 @@ TemplateSpecializationType::~TemplateSpecializationType() {}
DEF_VECTOR(TemplateSpecializationType, TemplateArgument, Arguments)
DependentTemplateSpecializationType::DependentTemplateSpecializationType()
: Type(TypeKind::DependentTemplateSpecialization), Desugared(0) {}
DependentTemplateSpecializationType::DependentTemplateSpecializationType(
const DependentTemplateSpecializationType& rhs) : Type(rhs),
Arguments(rhs.Arguments), Desugared(rhs.Desugared) {}
DependentTemplateSpecializationType::~DependentTemplateSpecializationType() {}
DEF_VECTOR(DependentTemplateSpecializationType, TemplateArgument, Arguments)
TemplateParameterType::TemplateParameterType() : Type(TypeKind::TemplateParameter), Parameter(0) {}
TemplateParameterType::~TemplateParameterType() {}

12
src/CppParser/AST.h

@ -25,6 +25,7 @@ enum class TypeKind @@ -25,6 +25,7 @@ enum class TypeKind
Attributed,
Decayed,
TemplateSpecialization,
DependentTemplateSpecialization,
TemplateParameter,
TemplateParameterSubstitution,
InjectedClassName,
@ -194,6 +195,17 @@ public: @@ -194,6 +195,17 @@ public:
Type* Desugared;
};
class CS_API DependentTemplateSpecializationType : public Type
{
public:
DependentTemplateSpecializationType();
DependentTemplateSpecializationType(const DependentTemplateSpecializationType&);
~DependentTemplateSpecializationType();
VECTOR(TemplateArgument, Arguments)
Type* Desugared;
};
class TypeTemplateParameter;
class CS_API TemplateParameterType : public Type

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

@ -801,6 +801,79 @@ void CppSharp::Parser::AST::TemplateSpecializationType::Desugared::set(CppSharp: @@ -801,6 +801,79 @@ void CppSharp::Parser::AST::TemplateSpecializationType::Desugared::set(CppSharp:
((::CppSharp::CppParser::AST::TemplateSpecializationType*)NativePtr)->Desugared = (::CppSharp::CppParser::AST::Type*)value->NativePtr;
}
CppSharp::Parser::AST::DependentTemplateSpecializationType::DependentTemplateSpecializationType(::CppSharp::CppParser::AST::DependentTemplateSpecializationType* native)
: CppSharp::Parser::AST::Type((::CppSharp::CppParser::AST::Type*)native)
{
}
CppSharp::Parser::AST::DependentTemplateSpecializationType^ CppSharp::Parser::AST::DependentTemplateSpecializationType::__CreateInstance(::System::IntPtr native)
{
return gcnew ::CppSharp::Parser::AST::DependentTemplateSpecializationType((::CppSharp::CppParser::AST::DependentTemplateSpecializationType*) native.ToPointer());
}
CppSharp::Parser::AST::DependentTemplateSpecializationType::~DependentTemplateSpecializationType()
{
if (NativePtr)
{
auto __nativePtr = NativePtr;
NativePtr = 0;
delete (::CppSharp::CppParser::AST::DependentTemplateSpecializationType*) __nativePtr;
}
}
CppSharp::Parser::AST::DependentTemplateSpecializationType::DependentTemplateSpecializationType()
: CppSharp::Parser::AST::Type((::CppSharp::CppParser::AST::Type*)nullptr)
{
__ownsNativeInstance = true;
NativePtr = new ::CppSharp::CppParser::AST::DependentTemplateSpecializationType();
}
CppSharp::Parser::AST::DependentTemplateSpecializationType::DependentTemplateSpecializationType(CppSharp::Parser::AST::DependentTemplateSpecializationType^ _0)
: CppSharp::Parser::AST::Type((::CppSharp::CppParser::AST::Type*)nullptr)
{
__ownsNativeInstance = true;
if (ReferenceEquals(_0, nullptr))
throw gcnew ::System::ArgumentNullException("_0", "Cannot be null because it is a C++ reference (&).");
auto &__arg0 = *(::CppSharp::CppParser::AST::DependentTemplateSpecializationType*)_0->NativePtr;
NativePtr = new ::CppSharp::CppParser::AST::DependentTemplateSpecializationType(__arg0);
}
CppSharp::Parser::AST::TemplateArgument^ CppSharp::Parser::AST::DependentTemplateSpecializationType::getArguments(unsigned int i)
{
auto __ret = ((::CppSharp::CppParser::AST::DependentTemplateSpecializationType*)NativePtr)->getArguments(i);
auto ____ret = new ::CppSharp::CppParser::AST::TemplateArgument(__ret);
return (____ret == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::TemplateArgument((::CppSharp::CppParser::AST::TemplateArgument*)____ret);
}
void CppSharp::Parser::AST::DependentTemplateSpecializationType::addArguments(CppSharp::Parser::AST::TemplateArgument^ s)
{
if (ReferenceEquals(s, nullptr))
throw gcnew ::System::ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
auto &__arg0 = *(::CppSharp::CppParser::AST::TemplateArgument*)s->NativePtr;
((::CppSharp::CppParser::AST::DependentTemplateSpecializationType*)NativePtr)->addArguments(__arg0);
}
void CppSharp::Parser::AST::DependentTemplateSpecializationType::clearArguments()
{
((::CppSharp::CppParser::AST::DependentTemplateSpecializationType*)NativePtr)->clearArguments();
}
unsigned int CppSharp::Parser::AST::DependentTemplateSpecializationType::ArgumentsCount::get()
{
auto __ret = ((::CppSharp::CppParser::AST::DependentTemplateSpecializationType*)NativePtr)->getArgumentsCount();
return __ret;
}
CppSharp::Parser::AST::Type^ CppSharp::Parser::AST::DependentTemplateSpecializationType::Desugared::get()
{
return (((::CppSharp::CppParser::AST::DependentTemplateSpecializationType*)NativePtr)->Desugared == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::Type((::CppSharp::CppParser::AST::Type*)((::CppSharp::CppParser::AST::DependentTemplateSpecializationType*)NativePtr)->Desugared);
}
void CppSharp::Parser::AST::DependentTemplateSpecializationType::Desugared::set(CppSharp::Parser::AST::Type^ value)
{
((::CppSharp::CppParser::AST::DependentTemplateSpecializationType*)NativePtr)->Desugared = (::CppSharp::CppParser::AST::Type*)value->NativePtr;
}
CppSharp::Parser::AST::TemplateParameterType::TemplateParameterType(::CppSharp::CppParser::AST::TemplateParameterType* native)
: CppSharp::Parser::AST::Type((::CppSharp::CppParser::AST::Type*)native)
{

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

@ -46,6 +46,7 @@ namespace CppSharp @@ -46,6 +46,7 @@ namespace CppSharp
ref class Declaration;
ref class DeclarationContext;
ref class DependentNameType;
ref class DependentTemplateSpecializationType;
ref class Enumeration;
ref class Expression;
ref class Field;
@ -126,12 +127,13 @@ namespace CppSharp @@ -126,12 +127,13 @@ namespace CppSharp
Attributed = 6,
Decayed = 7,
TemplateSpecialization = 8,
TemplateParameter = 9,
TemplateParameterSubstitution = 10,
InjectedClassName = 11,
DependentName = 12,
PackExpansion = 13,
Builtin = 14
DependentTemplateSpecialization = 9,
TemplateParameter = 10,
TemplateParameterSubstitution = 11,
InjectedClassName = 12,
DependentName = 13,
PackExpansion = 14,
Builtin = 15
};
public enum struct DeclarationKind
@ -786,6 +788,36 @@ namespace CppSharp @@ -786,6 +788,36 @@ namespace CppSharp
void clearArguments();
};
public ref class DependentTemplateSpecializationType : CppSharp::Parser::AST::Type
{
public:
DependentTemplateSpecializationType(::CppSharp::CppParser::AST::DependentTemplateSpecializationType* native);
static DependentTemplateSpecializationType^ __CreateInstance(::System::IntPtr native);
DependentTemplateSpecializationType();
DependentTemplateSpecializationType(CppSharp::Parser::AST::DependentTemplateSpecializationType^ _0);
~DependentTemplateSpecializationType();
property unsigned int ArgumentsCount
{
unsigned int get();
}
property CppSharp::Parser::AST::Type^ Desugared
{
CppSharp::Parser::AST::Type^ get();
void set(CppSharp::Parser::AST::Type^);
}
CppSharp::Parser::AST::TemplateArgument^ getArguments(unsigned int i);
void addArguments(CppSharp::Parser::AST::TemplateArgument^ s);
void clearArguments();
};
public ref class TemplateParameterType : CppSharp::Parser::AST::Type
{
public:

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

@ -25,12 +25,13 @@ namespace CppSharp @@ -25,12 +25,13 @@ namespace CppSharp
Attributed = 6,
Decayed = 7,
TemplateSpecialization = 8,
TemplateParameter = 9,
TemplateParameterSubstitution = 10,
InjectedClassName = 11,
DependentName = 12,
PackExpansion = 13,
Builtin = 14
DependentTemplateSpecialization = 9,
TemplateParameter = 10,
TemplateParameterSubstitution = 11,
InjectedClassName = 12,
DependentName = 13,
PackExpansion = 14,
Builtin = 15
}
public enum DeclarationKind
@ -1935,6 +1936,167 @@ namespace CppSharp @@ -1935,6 +1936,167 @@ namespace CppSharp
}
}
public unsafe partial class DependentTemplateSpecializationType : global::CppSharp.Parser.AST.Type, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 24)]
public new partial struct Internal
{
[FieldOffset(0)]
public global::CppSharp.Parser.AST.TypeKind Kind;
[FieldOffset(4)]
public byte IsDependent;
[FieldOffset(20)]
public global::System.IntPtr Desugared;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST35DependentTemplateSpecializationTypeC2Ev")]
internal static extern void ctor_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST35DependentTemplateSpecializationTypeC2ERKS2_")]
internal static extern void cctor_1(global::System.IntPtr instance, global::System.IntPtr _0);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST35DependentTemplateSpecializationTypeD2Ev")]
internal static extern void dtor_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST35DependentTemplateSpecializationType12getArgumentsEj")]
internal static extern void getArguments_0(global::System.IntPtr @return, global::System.IntPtr instance, uint i);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST35DependentTemplateSpecializationType12addArgumentsERNS1_16TemplateArgumentE")]
internal static extern void addArguments_0(global::System.IntPtr instance, global::System.IntPtr s);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST35DependentTemplateSpecializationType14clearArgumentsEv")]
internal static extern void clearArguments_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST35DependentTemplateSpecializationType17getArgumentsCountEv")]
internal static extern uint getArgumentsCount_0(global::System.IntPtr instance);
}
public static new DependentTemplateSpecializationType __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
{
return new DependentTemplateSpecializationType(native.ToPointer(), skipVTables);
}
public static DependentTemplateSpecializationType __CreateInstance(DependentTemplateSpecializationType.Internal native, bool skipVTables = false)
{
return new DependentTemplateSpecializationType(native, skipVTables);
}
private static void* __CopyValue(DependentTemplateSpecializationType.Internal native)
{
var ret = Marshal.AllocHGlobal(24);
global::CppSharp.Parser.AST.DependentTemplateSpecializationType.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return ret.ToPointer();
}
private DependentTemplateSpecializationType(DependentTemplateSpecializationType.Internal native, bool skipVTables = false)
: this(__CopyValue(native), skipVTables)
{
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
}
protected DependentTemplateSpecializationType(void* native, bool skipVTables = false)
: base((void*) null)
{
__PointerAdjustment = 0;
if (native == null)
return;
__Instance = new global::System.IntPtr(native);
}
public DependentTemplateSpecializationType()
: this((void*) null)
{
__Instance = Marshal.AllocHGlobal(24);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
Internal.ctor_0((__Instance + __PointerAdjustment));
}
public DependentTemplateSpecializationType(global::CppSharp.Parser.AST.DependentTemplateSpecializationType _0)
: this((void*) null)
{
__Instance = Marshal.AllocHGlobal(24);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null))
throw new global::System.ArgumentNullException("_0", "Cannot be null because it is a C++ reference (&).");
var __arg0 = _0.__Instance;
Internal.cctor_1((__Instance + __PointerAdjustment), __arg0);
}
protected override void Dispose(bool disposing)
{
global::CppSharp.Parser.AST.Type __dummy;
NativeToManagedMap.TryRemove(__Instance, out __dummy);
Internal.dtor_0((__Instance + __PointerAdjustment));
if (__ownsNativeInstance)
Marshal.FreeHGlobal(__Instance);
}
public global::CppSharp.Parser.AST.TemplateArgument getArguments(uint i)
{
var __ret = new global::CppSharp.Parser.AST.TemplateArgument.Internal();
Internal.getArguments_0(new IntPtr(&__ret), (__Instance + __PointerAdjustment), i);
return global::CppSharp.Parser.AST.TemplateArgument.__CreateInstance(__ret);
}
public void addArguments(global::CppSharp.Parser.AST.TemplateArgument s)
{
if (ReferenceEquals(s, null))
throw new global::System.ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
var __arg0 = s.__Instance;
Internal.addArguments_0((__Instance + __PointerAdjustment), __arg0);
}
public void clearArguments()
{
Internal.clearArguments_0((__Instance + __PointerAdjustment));
}
public uint ArgumentsCount
{
get
{
var __ret = Internal.getArgumentsCount_0((__Instance + __PointerAdjustment));
return __ret;
}
}
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 TemplateParameterType : global::CppSharp.Parser.AST.Type, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 24)]

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

@ -25,12 +25,13 @@ namespace CppSharp @@ -25,12 +25,13 @@ namespace CppSharp
Attributed = 6,
Decayed = 7,
TemplateSpecialization = 8,
TemplateParameter = 9,
TemplateParameterSubstitution = 10,
InjectedClassName = 11,
DependentName = 12,
PackExpansion = 13,
Builtin = 14
DependentTemplateSpecialization = 9,
TemplateParameter = 10,
TemplateParameterSubstitution = 11,
InjectedClassName = 12,
DependentName = 13,
PackExpansion = 14,
Builtin = 15
}
public enum DeclarationKind
@ -1935,6 +1936,167 @@ namespace CppSharp @@ -1935,6 +1936,167 @@ namespace CppSharp
}
}
public unsafe partial class DependentTemplateSpecializationType : global::CppSharp.Parser.AST.Type, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 24)]
public new partial struct Internal
{
[FieldOffset(0)]
public global::CppSharp.Parser.AST.TypeKind Kind;
[FieldOffset(4)]
public byte IsDependent;
[FieldOffset(20)]
public global::System.IntPtr Desugared;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
EntryPoint="??0DependentTemplateSpecializationType@AST@CppParser@CppSharp@@QAE@XZ")]
internal static extern global::System.IntPtr ctor_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
EntryPoint="??0DependentTemplateSpecializationType@AST@CppParser@CppSharp@@QAE@ABV0123@@Z")]
internal static extern global::System.IntPtr cctor_1(global::System.IntPtr instance, global::System.IntPtr _0);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
EntryPoint="??1DependentTemplateSpecializationType@AST@CppParser@CppSharp@@QAE@XZ")]
internal static extern void dtor_0(global::System.IntPtr instance, int delete);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
EntryPoint="?getArguments@DependentTemplateSpecializationType@AST@CppParser@CppSharp@@QAE?AUTemplateArgument@234@I@Z")]
internal static extern void getArguments_0(global::System.IntPtr instance, global::System.IntPtr @return, uint i);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
EntryPoint="?addArguments@DependentTemplateSpecializationType@AST@CppParser@CppSharp@@QAEXAAUTemplateArgument@234@@Z")]
internal static extern void addArguments_0(global::System.IntPtr instance, global::System.IntPtr s);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
EntryPoint="?clearArguments@DependentTemplateSpecializationType@AST@CppParser@CppSharp@@QAEXXZ")]
internal static extern void clearArguments_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
EntryPoint="?getArgumentsCount@DependentTemplateSpecializationType@AST@CppParser@CppSharp@@QAEIXZ")]
internal static extern uint getArgumentsCount_0(global::System.IntPtr instance);
}
public static new DependentTemplateSpecializationType __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
{
return new DependentTemplateSpecializationType(native.ToPointer(), skipVTables);
}
public static DependentTemplateSpecializationType __CreateInstance(DependentTemplateSpecializationType.Internal native, bool skipVTables = false)
{
return new DependentTemplateSpecializationType(native, skipVTables);
}
private static void* __CopyValue(DependentTemplateSpecializationType.Internal native)
{
var ret = Marshal.AllocHGlobal(24);
global::CppSharp.Parser.AST.DependentTemplateSpecializationType.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return ret.ToPointer();
}
private DependentTemplateSpecializationType(DependentTemplateSpecializationType.Internal native, bool skipVTables = false)
: this(__CopyValue(native), skipVTables)
{
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
}
protected DependentTemplateSpecializationType(void* native, bool skipVTables = false)
: base((void*) null)
{
__PointerAdjustment = 0;
if (native == null)
return;
__Instance = new global::System.IntPtr(native);
}
public DependentTemplateSpecializationType()
: this((void*) null)
{
__Instance = Marshal.AllocHGlobal(24);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
Internal.ctor_0((__Instance + __PointerAdjustment));
}
public DependentTemplateSpecializationType(global::CppSharp.Parser.AST.DependentTemplateSpecializationType _0)
: this((void*) null)
{
__Instance = Marshal.AllocHGlobal(24);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null))
throw new global::System.ArgumentNullException("_0", "Cannot be null because it is a C++ reference (&).");
var __arg0 = _0.__Instance;
Internal.cctor_1((__Instance + __PointerAdjustment), __arg0);
}
protected override void Dispose(bool disposing)
{
global::CppSharp.Parser.AST.Type __dummy;
NativeToManagedMap.TryRemove(__Instance, out __dummy);
Internal.dtor_0((__Instance + __PointerAdjustment), 0);
if (__ownsNativeInstance)
Marshal.FreeHGlobal(__Instance);
}
public global::CppSharp.Parser.AST.TemplateArgument getArguments(uint i)
{
var __ret = new global::CppSharp.Parser.AST.TemplateArgument.Internal();
Internal.getArguments_0((__Instance + __PointerAdjustment), new IntPtr(&__ret), i);
return global::CppSharp.Parser.AST.TemplateArgument.__CreateInstance(__ret);
}
public void addArguments(global::CppSharp.Parser.AST.TemplateArgument s)
{
if (ReferenceEquals(s, null))
throw new global::System.ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
var __arg0 = s.__Instance;
Internal.addArguments_0((__Instance + __PointerAdjustment), __arg0);
}
public void clearArguments()
{
Internal.clearArguments_0((__Instance + __PointerAdjustment));
}
public uint ArgumentsCount
{
get
{
var __ret = Internal.getArgumentsCount_0((__Instance + __PointerAdjustment));
return __ret;
}
}
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 TemplateParameterType : global::CppSharp.Parser.AST.Type, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 24)]

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

@ -25,12 +25,13 @@ namespace CppSharp @@ -25,12 +25,13 @@ namespace CppSharp
Attributed = 6,
Decayed = 7,
TemplateSpecialization = 8,
TemplateParameter = 9,
TemplateParameterSubstitution = 10,
InjectedClassName = 11,
DependentName = 12,
PackExpansion = 13,
Builtin = 14
DependentTemplateSpecialization = 9,
TemplateParameter = 10,
TemplateParameterSubstitution = 11,
InjectedClassName = 12,
DependentName = 13,
PackExpansion = 14,
Builtin = 15
}
public enum DeclarationKind
@ -1935,6 +1936,167 @@ namespace CppSharp @@ -1935,6 +1936,167 @@ namespace CppSharp
}
}
public unsafe partial class DependentTemplateSpecializationType : global::CppSharp.Parser.AST.Type, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 40)]
public new partial struct Internal
{
[FieldOffset(0)]
public global::CppSharp.Parser.AST.TypeKind Kind;
[FieldOffset(4)]
public byte IsDependent;
[FieldOffset(32)]
public global::System.IntPtr Desugared;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST35DependentTemplateSpecializationTypeC2Ev")]
internal static extern void ctor_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST35DependentTemplateSpecializationTypeC2ERKS2_")]
internal static extern void cctor_1(global::System.IntPtr instance, global::System.IntPtr _0);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST35DependentTemplateSpecializationTypeD2Ev")]
internal static extern void dtor_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST35DependentTemplateSpecializationType12getArgumentsEj")]
internal static extern void getArguments_0(global::System.IntPtr @return, global::System.IntPtr instance, uint i);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST35DependentTemplateSpecializationType12addArgumentsERNS1_16TemplateArgumentE")]
internal static extern void addArguments_0(global::System.IntPtr instance, global::System.IntPtr s);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST35DependentTemplateSpecializationType14clearArgumentsEv")]
internal static extern void clearArguments_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST35DependentTemplateSpecializationType17getArgumentsCountEv")]
internal static extern uint getArgumentsCount_0(global::System.IntPtr instance);
}
public static new DependentTemplateSpecializationType __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
{
return new DependentTemplateSpecializationType(native.ToPointer(), skipVTables);
}
public static DependentTemplateSpecializationType __CreateInstance(DependentTemplateSpecializationType.Internal native, bool skipVTables = false)
{
return new DependentTemplateSpecializationType(native, skipVTables);
}
private static void* __CopyValue(DependentTemplateSpecializationType.Internal native)
{
var ret = Marshal.AllocHGlobal(40);
global::CppSharp.Parser.AST.DependentTemplateSpecializationType.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return ret.ToPointer();
}
private DependentTemplateSpecializationType(DependentTemplateSpecializationType.Internal native, bool skipVTables = false)
: this(__CopyValue(native), skipVTables)
{
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
}
protected DependentTemplateSpecializationType(void* native, bool skipVTables = false)
: base((void*) null)
{
__PointerAdjustment = 0;
if (native == null)
return;
__Instance = new global::System.IntPtr(native);
}
public DependentTemplateSpecializationType()
: this((void*) null)
{
__Instance = Marshal.AllocHGlobal(40);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
Internal.ctor_0((__Instance + __PointerAdjustment));
}
public DependentTemplateSpecializationType(global::CppSharp.Parser.AST.DependentTemplateSpecializationType _0)
: this((void*) null)
{
__Instance = Marshal.AllocHGlobal(40);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null))
throw new global::System.ArgumentNullException("_0", "Cannot be null because it is a C++ reference (&).");
var __arg0 = _0.__Instance;
Internal.cctor_1((__Instance + __PointerAdjustment), __arg0);
}
protected override void Dispose(bool disposing)
{
global::CppSharp.Parser.AST.Type __dummy;
NativeToManagedMap.TryRemove(__Instance, out __dummy);
Internal.dtor_0((__Instance + __PointerAdjustment));
if (__ownsNativeInstance)
Marshal.FreeHGlobal(__Instance);
}
public global::CppSharp.Parser.AST.TemplateArgument getArguments(uint i)
{
var __ret = new global::CppSharp.Parser.AST.TemplateArgument.Internal();
Internal.getArguments_0(new IntPtr(&__ret), (__Instance + __PointerAdjustment), i);
return global::CppSharp.Parser.AST.TemplateArgument.__CreateInstance(__ret);
}
public void addArguments(global::CppSharp.Parser.AST.TemplateArgument s)
{
if (ReferenceEquals(s, null))
throw new global::System.ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
var __arg0 = s.__Instance;
Internal.addArguments_0((__Instance + __PointerAdjustment), __arg0);
}
public void clearArguments()
{
Internal.clearArguments_0((__Instance + __PointerAdjustment));
}
public uint ArgumentsCount
{
get
{
var __ret = Internal.getArgumentsCount_0((__Instance + __PointerAdjustment));
return __ret;
}
}
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 TemplateParameterType : global::CppSharp.Parser.AST.Type, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 32)]

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

@ -25,12 +25,13 @@ namespace CppSharp @@ -25,12 +25,13 @@ namespace CppSharp
Attributed = 6,
Decayed = 7,
TemplateSpecialization = 8,
TemplateParameter = 9,
TemplateParameterSubstitution = 10,
InjectedClassName = 11,
DependentName = 12,
PackExpansion = 13,
Builtin = 14
DependentTemplateSpecialization = 9,
TemplateParameter = 10,
TemplateParameterSubstitution = 11,
InjectedClassName = 12,
DependentName = 13,
PackExpansion = 14,
Builtin = 15
}
public enum DeclarationKind
@ -1935,6 +1936,167 @@ namespace CppSharp @@ -1935,6 +1936,167 @@ namespace CppSharp
}
}
public unsafe partial class DependentTemplateSpecializationType : global::CppSharp.Parser.AST.Type, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 40)]
public new partial struct Internal
{
[FieldOffset(0)]
public global::CppSharp.Parser.AST.TypeKind Kind;
[FieldOffset(4)]
public byte IsDependent;
[FieldOffset(32)]
public global::System.IntPtr Desugared;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST35DependentTemplateSpecializationTypeC2Ev")]
internal static extern void ctor_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST35DependentTemplateSpecializationTypeC2ERKS2_")]
internal static extern void cctor_1(global::System.IntPtr instance, global::System.IntPtr _0);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST35DependentTemplateSpecializationTypeD2Ev")]
internal static extern void dtor_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST35DependentTemplateSpecializationType12getArgumentsEj")]
internal static extern void getArguments_0(global::System.IntPtr @return, global::System.IntPtr instance, uint i);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST35DependentTemplateSpecializationType12addArgumentsERNS1_16TemplateArgumentE")]
internal static extern void addArguments_0(global::System.IntPtr instance, global::System.IntPtr s);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST35DependentTemplateSpecializationType14clearArgumentsEv")]
internal static extern void clearArguments_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST35DependentTemplateSpecializationType17getArgumentsCountEv")]
internal static extern uint getArgumentsCount_0(global::System.IntPtr instance);
}
public static new DependentTemplateSpecializationType __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
{
return new DependentTemplateSpecializationType(native.ToPointer(), skipVTables);
}
public static DependentTemplateSpecializationType __CreateInstance(DependentTemplateSpecializationType.Internal native, bool skipVTables = false)
{
return new DependentTemplateSpecializationType(native, skipVTables);
}
private static void* __CopyValue(DependentTemplateSpecializationType.Internal native)
{
var ret = Marshal.AllocHGlobal(40);
global::CppSharp.Parser.AST.DependentTemplateSpecializationType.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return ret.ToPointer();
}
private DependentTemplateSpecializationType(DependentTemplateSpecializationType.Internal native, bool skipVTables = false)
: this(__CopyValue(native), skipVTables)
{
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
}
protected DependentTemplateSpecializationType(void* native, bool skipVTables = false)
: base((void*) null)
{
__PointerAdjustment = 0;
if (native == null)
return;
__Instance = new global::System.IntPtr(native);
}
public DependentTemplateSpecializationType()
: this((void*) null)
{
__Instance = Marshal.AllocHGlobal(40);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
Internal.ctor_0((__Instance + __PointerAdjustment));
}
public DependentTemplateSpecializationType(global::CppSharp.Parser.AST.DependentTemplateSpecializationType _0)
: this((void*) null)
{
__Instance = Marshal.AllocHGlobal(40);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null))
throw new global::System.ArgumentNullException("_0", "Cannot be null because it is a C++ reference (&).");
var __arg0 = _0.__Instance;
Internal.cctor_1((__Instance + __PointerAdjustment), __arg0);
}
protected override void Dispose(bool disposing)
{
global::CppSharp.Parser.AST.Type __dummy;
NativeToManagedMap.TryRemove(__Instance, out __dummy);
Internal.dtor_0((__Instance + __PointerAdjustment));
if (__ownsNativeInstance)
Marshal.FreeHGlobal(__Instance);
}
public global::CppSharp.Parser.AST.TemplateArgument getArguments(uint i)
{
var __ret = new global::CppSharp.Parser.AST.TemplateArgument.Internal();
Internal.getArguments_0(new IntPtr(&__ret), (__Instance + __PointerAdjustment), i);
return global::CppSharp.Parser.AST.TemplateArgument.__CreateInstance(__ret);
}
public void addArguments(global::CppSharp.Parser.AST.TemplateArgument s)
{
if (ReferenceEquals(s, null))
throw new global::System.ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
var __arg0 = s.__Instance;
Internal.addArguments_0((__Instance + __PointerAdjustment), __arg0);
}
public void clearArguments()
{
Internal.clearArguments_0((__Instance + __PointerAdjustment));
}
public uint ArgumentsCount
{
get
{
var __ret = Internal.getArgumentsCount_0((__Instance + __PointerAdjustment));
return __ret;
}
}
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 TemplateParameterType : global::CppSharp.Parser.AST.Type, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 32)]

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

@ -25,12 +25,13 @@ namespace CppSharp @@ -25,12 +25,13 @@ namespace CppSharp
Attributed = 6,
Decayed = 7,
TemplateSpecialization = 8,
TemplateParameter = 9,
TemplateParameterSubstitution = 10,
InjectedClassName = 11,
DependentName = 12,
PackExpansion = 13,
Builtin = 14
DependentTemplateSpecialization = 9,
TemplateParameter = 10,
TemplateParameterSubstitution = 11,
InjectedClassName = 12,
DependentName = 13,
PackExpansion = 14,
Builtin = 15
}
public enum DeclarationKind
@ -1935,6 +1936,167 @@ namespace CppSharp @@ -1935,6 +1936,167 @@ namespace CppSharp
}
}
public unsafe partial class DependentTemplateSpecializationType : global::CppSharp.Parser.AST.Type, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 40)]
public new partial struct Internal
{
[FieldOffset(0)]
public global::CppSharp.Parser.AST.TypeKind Kind;
[FieldOffset(4)]
public byte IsDependent;
[FieldOffset(32)]
public global::System.IntPtr Desugared;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST35DependentTemplateSpecializationTypeC2Ev")]
internal static extern void ctor_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST35DependentTemplateSpecializationTypeC2ERKS2_")]
internal static extern void cctor_1(global::System.IntPtr instance, global::System.IntPtr _0);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST35DependentTemplateSpecializationTypeD2Ev")]
internal static extern void dtor_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST35DependentTemplateSpecializationType12getArgumentsEj")]
internal static extern void getArguments_0(global::System.IntPtr @return, global::System.IntPtr instance, uint i);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST35DependentTemplateSpecializationType12addArgumentsERNS1_16TemplateArgumentE")]
internal static extern void addArguments_0(global::System.IntPtr instance, global::System.IntPtr s);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST35DependentTemplateSpecializationType14clearArgumentsEv")]
internal static extern void clearArguments_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST35DependentTemplateSpecializationType17getArgumentsCountEv")]
internal static extern uint getArgumentsCount_0(global::System.IntPtr instance);
}
public static new DependentTemplateSpecializationType __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
{
return new DependentTemplateSpecializationType(native.ToPointer(), skipVTables);
}
public static DependentTemplateSpecializationType __CreateInstance(DependentTemplateSpecializationType.Internal native, bool skipVTables = false)
{
return new DependentTemplateSpecializationType(native, skipVTables);
}
private static void* __CopyValue(DependentTemplateSpecializationType.Internal native)
{
var ret = Marshal.AllocHGlobal(40);
global::CppSharp.Parser.AST.DependentTemplateSpecializationType.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return ret.ToPointer();
}
private DependentTemplateSpecializationType(DependentTemplateSpecializationType.Internal native, bool skipVTables = false)
: this(__CopyValue(native), skipVTables)
{
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
}
protected DependentTemplateSpecializationType(void* native, bool skipVTables = false)
: base((void*) null)
{
__PointerAdjustment = 0;
if (native == null)
return;
__Instance = new global::System.IntPtr(native);
}
public DependentTemplateSpecializationType()
: this((void*) null)
{
__Instance = Marshal.AllocHGlobal(40);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
Internal.ctor_0((__Instance + __PointerAdjustment));
}
public DependentTemplateSpecializationType(global::CppSharp.Parser.AST.DependentTemplateSpecializationType _0)
: this((void*) null)
{
__Instance = Marshal.AllocHGlobal(40);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null))
throw new global::System.ArgumentNullException("_0", "Cannot be null because it is a C++ reference (&).");
var __arg0 = _0.__Instance;
Internal.cctor_1((__Instance + __PointerAdjustment), __arg0);
}
protected override void Dispose(bool disposing)
{
global::CppSharp.Parser.AST.Type __dummy;
NativeToManagedMap.TryRemove(__Instance, out __dummy);
Internal.dtor_0((__Instance + __PointerAdjustment));
if (__ownsNativeInstance)
Marshal.FreeHGlobal(__Instance);
}
public global::CppSharp.Parser.AST.TemplateArgument getArguments(uint i)
{
var __ret = new global::CppSharp.Parser.AST.TemplateArgument.Internal();
Internal.getArguments_0(new IntPtr(&__ret), (__Instance + __PointerAdjustment), i);
return global::CppSharp.Parser.AST.TemplateArgument.__CreateInstance(__ret);
}
public void addArguments(global::CppSharp.Parser.AST.TemplateArgument s)
{
if (ReferenceEquals(s, null))
throw new global::System.ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
var __arg0 = s.__Instance;
Internal.addArguments_0((__Instance + __PointerAdjustment), __arg0);
}
public void clearArguments()
{
Internal.clearArguments_0((__Instance + __PointerAdjustment));
}
public uint ArgumentsCount
{
get
{
var __ret = Internal.getArgumentsCount_0((__Instance + __PointerAdjustment));
return __ret;
}
}
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 TemplateParameterType : global::CppSharp.Parser.AST.Type, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 32)]

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

@ -25,12 +25,13 @@ namespace CppSharp @@ -25,12 +25,13 @@ namespace CppSharp
Attributed = 6,
Decayed = 7,
TemplateSpecialization = 8,
TemplateParameter = 9,
TemplateParameterSubstitution = 10,
InjectedClassName = 11,
DependentName = 12,
PackExpansion = 13,
Builtin = 14
DependentTemplateSpecialization = 9,
TemplateParameter = 10,
TemplateParameterSubstitution = 11,
InjectedClassName = 12,
DependentName = 13,
PackExpansion = 14,
Builtin = 15
}
public enum DeclarationKind
@ -1935,6 +1936,167 @@ namespace CppSharp @@ -1935,6 +1936,167 @@ namespace CppSharp
}
}
public unsafe partial class DependentTemplateSpecializationType : global::CppSharp.Parser.AST.Type, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 40)]
public new partial struct Internal
{
[FieldOffset(0)]
public global::CppSharp.Parser.AST.TypeKind Kind;
[FieldOffset(4)]
public byte IsDependent;
[FieldOffset(32)]
public global::System.IntPtr Desugared;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="??0DependentTemplateSpecializationType@AST@CppParser@CppSharp@@QEAA@XZ")]
internal static extern global::System.IntPtr ctor_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="??0DependentTemplateSpecializationType@AST@CppParser@CppSharp@@QEAA@AEBV0123@@Z")]
internal static extern global::System.IntPtr cctor_1(global::System.IntPtr instance, global::System.IntPtr _0);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="??1DependentTemplateSpecializationType@AST@CppParser@CppSharp@@QEAA@XZ")]
internal static extern void dtor_0(global::System.IntPtr instance, int delete);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="?getArguments@DependentTemplateSpecializationType@AST@CppParser@CppSharp@@QEAA?AUTemplateArgument@234@I@Z")]
internal static extern void getArguments_0(global::System.IntPtr instance, global::System.IntPtr @return, uint i);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="?addArguments@DependentTemplateSpecializationType@AST@CppParser@CppSharp@@QEAAXAEAUTemplateArgument@234@@Z")]
internal static extern void addArguments_0(global::System.IntPtr instance, global::System.IntPtr s);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="?clearArguments@DependentTemplateSpecializationType@AST@CppParser@CppSharp@@QEAAXXZ")]
internal static extern void clearArguments_0(global::System.IntPtr instance);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="?getArgumentsCount@DependentTemplateSpecializationType@AST@CppParser@CppSharp@@QEAAIXZ")]
internal static extern uint getArgumentsCount_0(global::System.IntPtr instance);
}
public static new DependentTemplateSpecializationType __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
{
return new DependentTemplateSpecializationType(native.ToPointer(), skipVTables);
}
public static DependentTemplateSpecializationType __CreateInstance(DependentTemplateSpecializationType.Internal native, bool skipVTables = false)
{
return new DependentTemplateSpecializationType(native, skipVTables);
}
private static void* __CopyValue(DependentTemplateSpecializationType.Internal native)
{
var ret = Marshal.AllocHGlobal(40);
global::CppSharp.Parser.AST.DependentTemplateSpecializationType.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return ret.ToPointer();
}
private DependentTemplateSpecializationType(DependentTemplateSpecializationType.Internal native, bool skipVTables = false)
: this(__CopyValue(native), skipVTables)
{
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
}
protected DependentTemplateSpecializationType(void* native, bool skipVTables = false)
: base((void*) null)
{
__PointerAdjustment = 0;
if (native == null)
return;
__Instance = new global::System.IntPtr(native);
}
public DependentTemplateSpecializationType()
: this((void*) null)
{
__Instance = Marshal.AllocHGlobal(40);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
Internal.ctor_0((__Instance + __PointerAdjustment));
}
public DependentTemplateSpecializationType(global::CppSharp.Parser.AST.DependentTemplateSpecializationType _0)
: this((void*) null)
{
__Instance = Marshal.AllocHGlobal(40);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null))
throw new global::System.ArgumentNullException("_0", "Cannot be null because it is a C++ reference (&).");
var __arg0 = _0.__Instance;
Internal.cctor_1((__Instance + __PointerAdjustment), __arg0);
}
protected override void Dispose(bool disposing)
{
global::CppSharp.Parser.AST.Type __dummy;
NativeToManagedMap.TryRemove(__Instance, out __dummy);
Internal.dtor_0((__Instance + __PointerAdjustment), 0);
if (__ownsNativeInstance)
Marshal.FreeHGlobal(__Instance);
}
public global::CppSharp.Parser.AST.TemplateArgument getArguments(uint i)
{
var __ret = new global::CppSharp.Parser.AST.TemplateArgument.Internal();
Internal.getArguments_0((__Instance + __PointerAdjustment), new IntPtr(&__ret), i);
return global::CppSharp.Parser.AST.TemplateArgument.__CreateInstance(__ret);
}
public void addArguments(global::CppSharp.Parser.AST.TemplateArgument s)
{
if (ReferenceEquals(s, null))
throw new global::System.ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
var __arg0 = s.__Instance;
Internal.addArguments_0((__Instance + __PointerAdjustment), __arg0);
}
public void clearArguments()
{
Internal.clearArguments_0((__Instance + __PointerAdjustment));
}
public uint ArgumentsCount
{
get
{
var __ret = Internal.getArgumentsCount_0((__Instance + __PointerAdjustment));
return __ret;
}
}
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 TemplateParameterType : global::CppSharp.Parser.AST.Type, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 32)]

43
src/CppParser/Parser.cpp

@ -2240,6 +2240,49 @@ Type* Parser::WalkType(clang::QualType QualType, clang::TypeLoc* TL, @@ -2240,6 +2240,49 @@ Type* Parser::WalkType(clang::QualType QualType, clang::TypeLoc* TL,
Ty = TST;
break;
}
case clang::Type::DependentTemplateSpecialization:
{
auto TS = Type->getAs<clang::DependentTemplateSpecializationType>();
auto TST = new DependentTemplateSpecializationType();
if (TS->isSugared())
TST->Desugared = WalkType(TS->desugar(), TL);
TypeLoc UTL, ETL, ITL;
if (LocValid)
{
auto TypeLocClass = TL->getTypeLocClass();
if (TypeLocClass == TypeLoc::Qualified)
{
UTL = TL->getUnqualifiedLoc();
TL = &UTL;
}
else if (TypeLocClass == TypeLoc::Elaborated)
{
ETL = TL->getAs<ElaboratedTypeLoc>();
ITL = ETL.getNextTypeLoc();
TL = &ITL;
}
assert(TL->getTypeLocClass() == TypeLoc::DependentTemplateSpecialization);
}
TemplateSpecializationTypeLoc TSpecTL;
TemplateSpecializationTypeLoc *TSTL = 0;
if (LocValid)
{
TSpecTL = TL->getAs<TemplateSpecializationTypeLoc>();
TSTL = &TSpecTL;
}
TemplateArgumentList TArgs(TemplateArgumentList::OnStack, TS->getArgs(),
TS->getNumArgs());
TST->Arguments = WalkTemplateArgumentList(&TArgs, TSTL);
Ty = TST;
break;
}
case clang::Type::TemplateTypeParm:
{
auto TP = Type->getAs<TemplateTypeParmType>();

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

@ -277,6 +277,14 @@ namespace CppSharp.Generators.CLI @@ -277,6 +277,14 @@ namespace CppSharp.Generators.CLI
return decl.Name;
}
public string VisitDependentTemplateSpecializationType(
DependentTemplateSpecializationType template, TypeQualifiers quals)
{
if (template.Desugared != null)
return template.Desugared.Visit(this);
return string.Empty;
}
public string VisitTemplateParameterType(TemplateParameterType param,
TypeQualifiers quals)
{

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

@ -424,6 +424,14 @@ namespace CppSharp.Generators.CSharp @@ -424,6 +424,14 @@ namespace CppSharp.Generators.CSharp
".Internal" : string.Empty);
}
public CSharpTypePrinterResult VisitDependentTemplateSpecializationType(
DependentTemplateSpecializationType template, TypeQualifiers quals)
{
if (template.Desugared != null)
return template.Desugared.Visit(this);
return string.Empty;
}
private string GetCSharpSignature(TypeMap typeMap)
{
Context.CSharpKind = ContextKind;

5
src/Generator/Passes/CheckVirtualOverrideReturnCovariance.cs

@ -128,6 +128,11 @@ namespace CppSharp.Passes @@ -128,6 +128,11 @@ namespace CppSharp.Passes
return false;
}
public bool VisitDependentTemplateSpecializationType(DependentTemplateSpecializationType template, TypeQualifiers quals)
{
return false;
}
public bool VisitPrimitiveType(PrimitiveType type, TypeQualifiers quals)
{
return false;

8
src/Generator/Types/CppTypePrinter.cs

@ -158,6 +158,14 @@ namespace CppSharp.Types @@ -158,6 +158,14 @@ namespace CppSharp.Types
return VisitClassTemplateSpecializationDecl(specialization);
}
public string VisitDependentTemplateSpecializationType(
DependentTemplateSpecializationType template, TypeQualifiers quals)
{
if (template.Desugared != null)
return template.Desugared.Visit(this);
return string.Empty;
}
public string VisitTemplateParameterType(TemplateParameterType param, TypeQualifiers quals)
{
if (param.Parameter.Name == null)

Loading…
Cancel
Save