diff --git a/src/AST/ASTVisitor.cs b/src/AST/ASTVisitor.cs
index 1cf7a0e7..13eb2310 100644
--- a/src/AST/ASTVisitor.cs
+++ b/src/AST/ASTVisitor.cs
@@ -374,14 +374,20 @@ namespace CppSharp.AST
if (!VisitDeclaration(template))
return false;
+ foreach (var templateParameter in template.Parameters)
+ templateParameter.Visit(this);
+
return true;
}
public virtual bool VisitFunctionTemplateDecl(FunctionTemplate template)
{
if (!VisitDeclaration(template))
- return false;
-
+ return false;
+
+ foreach (var templateParameter in template.Parameters)
+ templateParameter.Visit(this);
+
return template.TemplatedFunction.Visit(this);
}
@@ -443,6 +449,22 @@ namespace CppSharp.AST
return true;
}
+ public virtual bool VisitTemplateParameter(TypeTemplateParameter templateParameter)
+ {
+ if (!VisitDeclaration(templateParameter))
+ return false;
+
+ return true;
+ }
+
+ public bool VisitNonTypeTemplateParameter(NonTypeTemplateParameter nonTypeTemplateParameter)
+ {
+ if (!VisitDeclaration(nonTypeTemplateParameter))
+ return false;
+
+ return true;
+ }
+
#endregion
}
}
diff --git a/src/AST/Declaration.cs b/src/AST/Declaration.cs
index a83c8314..8442e8cb 100644
--- a/src/AST/Declaration.cs
+++ b/src/AST/Declaration.cs
@@ -391,5 +391,7 @@ namespace CppSharp.AST
T VisitEvent(Event @event);
T VisitProperty(Property @property);
T VisitFriend(Friend friend);
+ T VisitTemplateParameter(TypeTemplateParameter templateParameter);
+ T VisitNonTypeTemplateParameter(NonTypeTemplateParameter nonTypeTemplateParameter);
}
}
diff --git a/src/AST/Template.cs b/src/AST/Template.cs
index f133e78e..f29cd771 100644
--- a/src/AST/Template.cs
+++ b/src/AST/Template.cs
@@ -1,22 +1,86 @@
-using System;
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Linq;
namespace CppSharp.AST
{
+ public abstract class TemplateParameter : Declaration
+ {
+ ///
+ /// Get the nesting depth of the template parameter.
+ ///
+ public uint Depth { get; set; }
+
+ ///
+ /// Get the index of the template parameter within its parameter list.
+ ///
+ public uint Index { get; set; }
+
+ ///
+ /// Whether this parameter is a non-type template parameter pack.
+ ///
+ /// If the parameter is a parameter pack, the type may be a PackExpansionType.In the following example, the Dims parameter is a parameter pack (whose type is 'unsigned').
+ /// template<typename T, unsigned...Dims> struct multi_array;
+ ///
+ ///
+ public bool IsParameterPack { get; set; }
+ }
+
///
/// Represents a template parameter
///
- public struct TemplateParameter
+ public class TypeTemplateParameter : TemplateParameter
{
- public string Name;
-
// Generic type constraint
public string Constraint;
- // Whether the template parameter represents a type parameter,
- // like "T" in template.
- public bool IsTypeParameter;
+ public QualifiedType DefaultArgument { get; set; }
+
+ public override T Visit(IDeclVisitor visitor)
+ {
+ return visitor.VisitTemplateParameter(this);
+ }
+ }
+
+ ///
+ /// Represents a hard-coded template parameter
+ ///
+ public class NonTypeTemplateParameter : TemplateParameter
+ {
+ public Expression DefaultArgument { get; set; }
+
+ ///
+ /// Get the position of the template parameter within its parameter list.
+ ///
+ public uint Position { get; set; }
+
+ ///
+ /// Whether this parameter pack is a pack expansion.
+ ///
+ /// A non-type template parameter pack is a pack expansion if its type contains an unexpanded parameter pack.In this case, we will have built a PackExpansionType wrapping the type.
+ ///
+ ///
+ public bool IsPackExpansion { get; set; }
+
+ ///
+ /// Whether this parameter is a non-type template parameter pack that has a known list of different types at different positions.
+ /// A parameter pack is an expanded parameter pack when the original parameter pack's type was itself a pack expansion, and that expansion has already been expanded. For example, given:
+ ///
+ /// template<typename...Types>
+ /// struct X {
+ /// template<Types...Values>
+ /// struct Y { /* ... */ };
+ /// };
+ ///
+ /// The parameter pack Values has a PackExpansionType as its type, which expands Types.When Types is supplied with template arguments by instantiating X,
+ /// the instantiation of Values becomes an expanded parameter pack.For example, instantiating X<int, unsigned int>
+ /// results in Values being an expanded parameter pack with expansion types int and unsigned int.
+ ///
+ public bool IsExpandedParameterPack { get; set; }
+
+ public override T Visit(IDeclVisitor visitor)
+ {
+ return visitor.VisitNonTypeTemplateParameter(this);
+ }
}
///
diff --git a/src/AST/Type.cs b/src/AST/Type.cs
index 89a7e9a6..91192834 100644
--- a/src/AST/Type.cs
+++ b/src/AST/Type.cs
@@ -665,7 +665,7 @@ namespace CppSharp.AST
///
public class TemplateParameterType : Type
{
- public TemplateParameter Parameter;
+ public TypeTemplateParameter Parameter;
public uint Depth;
public uint Index;
public bool IsParameterPack;
@@ -677,10 +677,9 @@ namespace CppSharp.AST
public TemplateParameterType(TemplateParameterType type)
: base(type)
{
- Parameter = new TemplateParameter
+ Parameter = new TypeTemplateParameter
{
Constraint = type.Parameter.Constraint,
- IsTypeParameter = type.Parameter.IsTypeParameter,
Name = type.Parameter.Name
};
Depth = type.Depth;
diff --git a/src/Core/Parser/ASTConverter.cs b/src/Core/Parser/ASTConverter.cs
index 495c5725..aad0ebb0 100644
--- a/src/Core/Parser/ASTConverter.cs
+++ b/src/Core/Parser/ASTConverter.cs
@@ -139,6 +139,8 @@ namespace CppSharp
public abstract TRet VisitClassTemplatePartialSpecialization(
ClassTemplatePartialSpecialization decl);
public abstract TRet VisitFunctionTemplate(FunctionTemplate decl);
+ public abstract TRet VisitTemplateParameter(TypeTemplateParameter decl);
+ public abstract TRet VisitNonTypeTemplateParameter(NonTypeTemplateParameter decl);
public virtual TRet Visit(Parser.AST.Declaration decl)
{
@@ -229,6 +231,16 @@ namespace CppSharp
var _decl = FunctionTemplate.__CreateInstance(decl.__Instance);
return VisitFunctionTemplate(_decl);
}
+ case DeclarationKind.TemplateTypeParm:
+ {
+ var _decl = TypeTemplateParameter.__CreateInstance(decl.__Instance);
+ return VisitTemplateParameter(_decl);
+ }
+ case DeclarationKind.NonTypeTemplateParm:
+ {
+ var _decl = NonTypeTemplateParameter.__CreateInstance(decl.__Instance);
+ return VisitNonTypeTemplateParameter(_decl);
+ }
}
throw new ArgumentOutOfRangeException();
@@ -554,7 +566,8 @@ namespace CppSharp
public override AST.Type VisitTemplateParameter(TemplateParameterType type)
{
var _type = new AST.TemplateParameterType();
- _type.Parameter = DeclConverter.VisitTemplateParameter(type.Parameter);
+ if (type.Parameter != null)
+ _type.Parameter = (AST.TypeTemplateParameter) declConverter.Visit(type.Parameter);
_type.Depth = type.Depth;
_type.Index = type.Index;
_type.IsParameterPack = type.IsParameterPack;
@@ -1426,19 +1439,11 @@ namespace CppSharp
for (uint i = 0; i < template.ParametersCount; ++i)
{
var param = template.getParameters(i);
- var _param = VisitTemplateParameter(param);
+ var _param = (AST.TemplateParameter) Visit(param);
_template.Parameters.Add(_param);
}
}
- public static AST.TemplateParameter VisitTemplateParameter(TemplateParameter param)
- {
- var _param = new AST.TemplateParameter();
- _param.Name = param.Name;
- _param.IsTypeParameter = param.IsTypeParameter;
- return _param;
- }
-
public override AST.Declaration VisitClassTemplate(ClassTemplate decl)
{
var _decl = new AST.ClassTemplate();
@@ -1635,6 +1640,31 @@ namespace CppSharp
_macro.Definition = VisitMacroDefinition(macroExpansion.Definition);
return _macro;
}
+
+ public override AST.Declaration VisitTemplateParameter(TypeTemplateParameter decl)
+ {
+ var templateParameter = new AST.TypeTemplateParameter();
+ VisitDeclaration(decl, templateParameter);
+ templateParameter.DefaultArgument = typeConverter.VisitQualified(decl.DefaultArgument);
+ templateParameter.Depth = decl.Depth;
+ templateParameter.Index = decl.Index;
+ templateParameter.IsParameterPack = decl.IsParameterPack;
+ return templateParameter;
+ }
+
+ public override AST.Declaration VisitNonTypeTemplateParameter(NonTypeTemplateParameter decl)
+ {
+ var nonTypeTemplateParameter = new AST.NonTypeTemplateParameter();
+ VisitDeclaration(decl, nonTypeTemplateParameter);
+ nonTypeTemplateParameter.DefaultArgument = VisitStatement(decl.DefaultArgument);
+ nonTypeTemplateParameter.Depth = decl.Depth;
+ nonTypeTemplateParameter.Position = decl.Position;
+ nonTypeTemplateParameter.Index = decl.Index;
+ nonTypeTemplateParameter.IsParameterPack = decl.IsParameterPack;
+ nonTypeTemplateParameter.IsPackExpansion = decl.IsPackExpansion;
+ nonTypeTemplateParameter.IsExpandedParameterPack = decl.IsExpandedParameterPack;
+ return nonTypeTemplateParameter;
+ }
}
public unsafe class CommentConverter : CommentsVisitor
diff --git a/src/CppParser/AST.cpp b/src/CppParser/AST.cpp
index c83d152a..43372707 100644
--- a/src/CppParser/AST.cpp
+++ b/src/CppParser/AST.cpp
@@ -85,6 +85,52 @@ DecayedType::DecayedType() : Type(TypeKind::Decayed) {}
// Template
Template::Template(DeclarationKind kind) : Declaration(kind) {}
+TemplateParameter::TemplateParameter(DeclarationKind kind)
+ : Declaration(kind)
+ , Depth(0)
+ , Index(0)
+ , IsParameterPack(false)
+{
+}
+
+TemplateParameter::~TemplateParameter()
+{
+}
+
+// TemplateParameter
+TypeTemplateParameter::TypeTemplateParameter()
+ : TemplateParameter(DeclarationKind::TemplateTypeParm)
+{
+}
+
+TypeTemplateParameter::TypeTemplateParameter(const TypeTemplateParameter& rhs)
+ : TemplateParameter(rhs.Kind)
+ , DefaultArgument(rhs.DefaultArgument)
+{
+}
+
+TypeTemplateParameter::~TypeTemplateParameter() {}
+
+NonTypeTemplateParameter::NonTypeTemplateParameter()
+ : TemplateParameter(DeclarationKind::NonTypeTemplateParm)
+ , DefaultArgument(0)
+ , Position(0)
+ , IsPackExpansion(false)
+ , IsExpandedParameterPack(false)
+{
+}
+
+NonTypeTemplateParameter::NonTypeTemplateParameter(const NonTypeTemplateParameter& rhs)
+ : TemplateParameter(rhs.Kind)
+ , DefaultArgument(rhs.DefaultArgument)
+ , Position(rhs.Position)
+ , IsPackExpansion(rhs.IsPackExpansion)
+ , IsExpandedParameterPack(rhs.IsExpandedParameterPack)
+{
+}
+
+NonTypeTemplateParameter::~NonTypeTemplateParameter() {}
+
TemplateArgument::TemplateArgument() : Declaration(0) {}
TemplateSpecializationType::TemplateSpecializationType()
@@ -97,21 +143,7 @@ TemplateSpecializationType::~TemplateSpecializationType() {}
DEF_VECTOR(TemplateSpecializationType, TemplateArgument, Arguments)
-// TemplateParameter
-TemplateParameter::TemplateParameter()
- : IsTypeParameter(false)
-{
-}
-
-TemplateParameter::TemplateParameter(const TemplateParameter& rhs)
- : Name(rhs.Name)
- , IsTypeParameter(rhs.IsTypeParameter)
-{
-}
-
-DEF_STRING(TemplateParameter, Name)
-
-TemplateParameterType::TemplateParameterType() : Type(TypeKind::TemplateParameter) {}
+TemplateParameterType::TemplateParameterType() : Type(TypeKind::TemplateParameter), Parameter(0) {}
TemplateParameterType::~TemplateParameterType() {}
@@ -643,7 +675,7 @@ DEF_VECTOR(Class, AccessSpecifierDecl*, Specifiers)
Template::Template() : Declaration(DeclarationKind::Template),
TemplatedDecl(0) {}
-DEF_VECTOR(Template, TemplateParameter, Parameters)
+DEF_VECTOR(Template, Declaration*, Parameters)
ClassTemplate::ClassTemplate() : Template(DeclarationKind::ClassTemplate) {}
diff --git a/src/CppParser/AST.h b/src/CppParser/AST.h
index a7799d27..b667e61d 100644
--- a/src/CppParser/AST.h
+++ b/src/CppParser/AST.h
@@ -194,27 +194,14 @@ public:
Type* Desugared;
};
-class CS_API TemplateParameter
-{
-public:
- TemplateParameter();
- TemplateParameter(const TemplateParameter&);
-
- bool operator==(const TemplateParameter& param) const
- {
- return Name == param.Name;
- }
-
- STRING(Name)
- bool IsTypeParameter;
-};
+class TypeTemplateParameter;
class CS_API TemplateParameterType : public Type
{
public:
- ~TemplateParameterType();
DECLARE_TYPE_KIND(TemplateParameter)
- TemplateParameter Parameter;
+ ~TemplateParameterType();
+ TypeTemplateParameter* Parameter;
unsigned int Depth;
unsigned int Index;
bool IsParameterPack;
@@ -369,6 +356,8 @@ enum class DeclarationKind
MacroExpansion,
TranslationUnit,
Friend,
+ TemplateTypeParm,
+ NonTypeTemplateParm
};
#define DECLARE_DECL_KIND(klass, kind) \
@@ -759,7 +748,40 @@ public:
Template(DeclarationKind kind);
DECLARE_DECL_KIND(Template, Template)
Declaration* TemplatedDecl;
- VECTOR(TemplateParameter, Parameters)
+ VECTOR(Declaration*, Parameters)
+};
+
+class CS_API TemplateParameter : public Declaration
+{
+public:
+ TemplateParameter(DeclarationKind kind);
+ ~TemplateParameter();
+ unsigned int Depth;
+ unsigned int Index;
+ bool IsParameterPack;
+};
+
+class CS_API TypeTemplateParameter : public TemplateParameter
+{
+public:
+ TypeTemplateParameter();
+ TypeTemplateParameter(const TypeTemplateParameter&);
+ ~TypeTemplateParameter();
+
+ QualifiedType DefaultArgument;
+};
+
+class CS_API NonTypeTemplateParameter : public TemplateParameter
+{
+public:
+ NonTypeTemplateParameter();
+ NonTypeTemplateParameter(const NonTypeTemplateParameter&);
+ ~NonTypeTemplateParameter();
+
+ Expression* DefaultArgument;
+ unsigned int Position;
+ bool IsPackExpansion;
+ bool IsExpandedParameterPack;
};
class ClassTemplateSpecialization;
diff --git a/src/CppParser/Bindings/CLI/AST.cpp b/src/CppParser/Bindings/CLI/AST.cpp
index f14da84e..db820536 100644
--- a/src/CppParser/Bindings/CLI/AST.cpp
+++ b/src/CppParser/Bindings/CLI/AST.cpp
@@ -801,88 +801,6 @@ void CppSharp::Parser::AST::TemplateSpecializationType::Desugared::set(CppSharp:
((::CppSharp::CppParser::AST::TemplateSpecializationType*)NativePtr)->Desugared = (::CppSharp::CppParser::AST::Type*)value->NativePtr;
}
-CppSharp::Parser::AST::TemplateParameter::TemplateParameter(::CppSharp::CppParser::AST::TemplateParameter* native)
- : __ownsNativeInstance(false)
-{
- NativePtr = native;
-}
-
-CppSharp::Parser::AST::TemplateParameter^ CppSharp::Parser::AST::TemplateParameter::__CreateInstance(::System::IntPtr native)
-{
- return gcnew ::CppSharp::Parser::AST::TemplateParameter((::CppSharp::CppParser::AST::TemplateParameter*) native.ToPointer());
-}
-
-CppSharp::Parser::AST::TemplateParameter::~TemplateParameter()
-{
- delete NativePtr;
-}
-
-CppSharp::Parser::AST::TemplateParameter::TemplateParameter()
-{
- __ownsNativeInstance = true;
- NativePtr = new ::CppSharp::CppParser::AST::TemplateParameter();
-}
-
-CppSharp::Parser::AST::TemplateParameter::TemplateParameter(CppSharp::Parser::AST::TemplateParameter^ _0)
-{
- __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::TemplateParameter*)_0->NativePtr;
- NativePtr = new ::CppSharp::CppParser::AST::TemplateParameter(arg0);
-}
-
-bool CppSharp::Parser::AST::TemplateParameter::operator==(CppSharp::Parser::AST::TemplateParameter^ __op, CppSharp::Parser::AST::TemplateParameter^ param)
-{
- bool __opNull = ReferenceEquals(__op, nullptr);
- bool paramNull = ReferenceEquals(param, nullptr);
- if (__opNull || paramNull)
- return __opNull && paramNull;
- auto &arg0 = *(::CppSharp::CppParser::AST::TemplateParameter*)__op->NativePtr;
- auto &arg1 = *(::CppSharp::CppParser::AST::TemplateParameter*)param->NativePtr;
- auto __ret = arg0 == arg1;
- return __ret;
-}
-
-bool CppSharp::Parser::AST::TemplateParameter::Equals(::System::Object^ obj)
-{
- return this == safe_cast(obj);
-}
-
-System::IntPtr CppSharp::Parser::AST::TemplateParameter::__Instance::get()
-{
- return System::IntPtr(NativePtr);
-}
-
-void CppSharp::Parser::AST::TemplateParameter::__Instance::set(System::IntPtr object)
-{
- NativePtr = (::CppSharp::CppParser::AST::TemplateParameter*)object.ToPointer();
-}
-
-System::String^ CppSharp::Parser::AST::TemplateParameter::Name::get()
-{
- auto __ret = ((::CppSharp::CppParser::AST::TemplateParameter*)NativePtr)->getName();
- if (__ret == nullptr) return nullptr;
- return (__ret == 0 ? nullptr : clix::marshalString(__ret));
-}
-
-void CppSharp::Parser::AST::TemplateParameter::Name::set(System::String^ s)
-{
- auto _arg0 = clix::marshalString(s);
- auto arg0 = _arg0.c_str();
- ((::CppSharp::CppParser::AST::TemplateParameter*)NativePtr)->setName(arg0);
-}
-
-bool CppSharp::Parser::AST::TemplateParameter::IsTypeParameter::get()
-{
- return ((::CppSharp::CppParser::AST::TemplateParameter*)NativePtr)->IsTypeParameter;
-}
-
-void CppSharp::Parser::AST::TemplateParameter::IsTypeParameter::set(bool value)
-{
- ((::CppSharp::CppParser::AST::TemplateParameter*)NativePtr)->IsTypeParameter = value;
-}
-
CppSharp::Parser::AST::TemplateParameterType::TemplateParameterType(::CppSharp::CppParser::AST::TemplateParameterType* native)
: CppSharp::Parser::AST::Type((::CppSharp::CppParser::AST::Type*)native)
{
@@ -920,14 +838,14 @@ CppSharp::Parser::AST::TemplateParameterType::TemplateParameterType(CppSharp::Pa
NativePtr = new ::CppSharp::CppParser::AST::TemplateParameterType(arg0);
}
-CppSharp::Parser::AST::TemplateParameter^ CppSharp::Parser::AST::TemplateParameterType::Parameter::get()
+CppSharp::Parser::AST::TypeTemplateParameter^ CppSharp::Parser::AST::TemplateParameterType::Parameter::get()
{
- return (&((::CppSharp::CppParser::AST::TemplateParameterType*)NativePtr)->Parameter == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::TemplateParameter((::CppSharp::CppParser::AST::TemplateParameter*)&((::CppSharp::CppParser::AST::TemplateParameterType*)NativePtr)->Parameter);
+ return (((::CppSharp::CppParser::AST::TemplateParameterType*)NativePtr)->Parameter == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::TypeTemplateParameter((::CppSharp::CppParser::AST::TypeTemplateParameter*)((::CppSharp::CppParser::AST::TemplateParameterType*)NativePtr)->Parameter);
}
-void CppSharp::Parser::AST::TemplateParameterType::Parameter::set(CppSharp::Parser::AST::TemplateParameter^ value)
+void CppSharp::Parser::AST::TemplateParameterType::Parameter::set(CppSharp::Parser::AST::TypeTemplateParameter^ value)
{
- ((::CppSharp::CppParser::AST::TemplateParameterType*)NativePtr)->Parameter = *(::CppSharp::CppParser::AST::TemplateParameter*)value->NativePtr;
+ ((::CppSharp::CppParser::AST::TemplateParameterType*)NativePtr)->Parameter = (::CppSharp::CppParser::AST::TypeTemplateParameter*)value->NativePtr;
}
unsigned int CppSharp::Parser::AST::TemplateParameterType::Depth::get()
@@ -3485,18 +3403,18 @@ CppSharp::Parser::AST::Template::Template()
NativePtr = new ::CppSharp::CppParser::AST::Template();
}
-CppSharp::Parser::AST::TemplateParameter^ CppSharp::Parser::AST::Template::getParameters(unsigned int i)
+CppSharp::Parser::AST::Declaration^ CppSharp::Parser::AST::Template::getParameters(unsigned int i)
{
auto __ret = ((::CppSharp::CppParser::AST::Template*)NativePtr)->getParameters(i);
- auto ____ret = new ::CppSharp::CppParser::AST::TemplateParameter(__ret);
- return (____ret == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::TemplateParameter((::CppSharp::CppParser::AST::TemplateParameter*)____ret);
+ if (__ret == nullptr) return nullptr;
+ return (__ret == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::Declaration((::CppSharp::CppParser::AST::Declaration*)__ret);
}
-void CppSharp::Parser::AST::Template::addParameters(CppSharp::Parser::AST::TemplateParameter^ s)
+void CppSharp::Parser::AST::Template::addParameters(CppSharp::Parser::AST::Declaration^ s)
{
if (ReferenceEquals(s, nullptr))
throw gcnew ::System::ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
- auto &arg0 = *(::CppSharp::CppParser::AST::TemplateParameter*)s->NativePtr;
+ auto arg0 = (::CppSharp::CppParser::AST::Declaration*)s->NativePtr;
((::CppSharp::CppParser::AST::Template*)NativePtr)->addParameters(arg0);
}
@@ -3531,6 +3449,198 @@ void CppSharp::Parser::AST::Template::TemplatedDecl::set(CppSharp::Parser::AST::
((::CppSharp::CppParser::AST::Template*)NativePtr)->TemplatedDecl = (::CppSharp::CppParser::AST::Declaration*)value->NativePtr;
}
+CppSharp::Parser::AST::TemplateParameter::TemplateParameter(::CppSharp::CppParser::AST::TemplateParameter* native)
+ : CppSharp::Parser::AST::Declaration((::CppSharp::CppParser::AST::Declaration*)native)
+{
+}
+
+CppSharp::Parser::AST::TemplateParameter^ CppSharp::Parser::AST::TemplateParameter::__CreateInstance(::System::IntPtr native)
+{
+ return gcnew ::CppSharp::Parser::AST::TemplateParameter((::CppSharp::CppParser::AST::TemplateParameter*) native.ToPointer());
+}
+
+CppSharp::Parser::AST::TemplateParameter::~TemplateParameter()
+{
+ if (NativePtr)
+ {
+ auto __nativePtr = NativePtr;
+ NativePtr = 0;
+ delete (::CppSharp::CppParser::AST::TemplateParameter*) __nativePtr;
+ }
+}
+
+CppSharp::Parser::AST::TemplateParameter::TemplateParameter(CppSharp::Parser::AST::DeclarationKind kind)
+ : CppSharp::Parser::AST::Declaration((::CppSharp::CppParser::AST::Declaration*)nullptr)
+{
+ __ownsNativeInstance = true;
+ auto arg0 = (::CppSharp::CppParser::AST::DeclarationKind)kind;
+ NativePtr = new ::CppSharp::CppParser::AST::TemplateParameter(arg0);
+}
+
+CppSharp::Parser::AST::TemplateParameter::TemplateParameter(CppSharp::Parser::AST::TemplateParameter^ _0)
+ : CppSharp::Parser::AST::Declaration((::CppSharp::CppParser::AST::Declaration*)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::TemplateParameter*)_0->NativePtr;
+ NativePtr = new ::CppSharp::CppParser::AST::TemplateParameter(arg0);
+}
+
+unsigned int CppSharp::Parser::AST::TemplateParameter::Depth::get()
+{
+ return ((::CppSharp::CppParser::AST::TemplateParameter*)NativePtr)->Depth;
+}
+
+void CppSharp::Parser::AST::TemplateParameter::Depth::set(unsigned int value)
+{
+ ((::CppSharp::CppParser::AST::TemplateParameter*)NativePtr)->Depth = value;
+}
+
+unsigned int CppSharp::Parser::AST::TemplateParameter::Index::get()
+{
+ return ((::CppSharp::CppParser::AST::TemplateParameter*)NativePtr)->Index;
+}
+
+void CppSharp::Parser::AST::TemplateParameter::Index::set(unsigned int value)
+{
+ ((::CppSharp::CppParser::AST::TemplateParameter*)NativePtr)->Index = value;
+}
+
+bool CppSharp::Parser::AST::TemplateParameter::IsParameterPack::get()
+{
+ return ((::CppSharp::CppParser::AST::TemplateParameter*)NativePtr)->IsParameterPack;
+}
+
+void CppSharp::Parser::AST::TemplateParameter::IsParameterPack::set(bool value)
+{
+ ((::CppSharp::CppParser::AST::TemplateParameter*)NativePtr)->IsParameterPack = value;
+}
+
+CppSharp::Parser::AST::TypeTemplateParameter::TypeTemplateParameter(::CppSharp::CppParser::AST::TypeTemplateParameter* native)
+ : CppSharp::Parser::AST::TemplateParameter((::CppSharp::CppParser::AST::TemplateParameter*)native)
+{
+}
+
+CppSharp::Parser::AST::TypeTemplateParameter^ CppSharp::Parser::AST::TypeTemplateParameter::__CreateInstance(::System::IntPtr native)
+{
+ return gcnew ::CppSharp::Parser::AST::TypeTemplateParameter((::CppSharp::CppParser::AST::TypeTemplateParameter*) native.ToPointer());
+}
+
+CppSharp::Parser::AST::TypeTemplateParameter::~TypeTemplateParameter()
+{
+ if (NativePtr)
+ {
+ auto __nativePtr = NativePtr;
+ NativePtr = 0;
+ delete (::CppSharp::CppParser::AST::TypeTemplateParameter*) __nativePtr;
+ }
+}
+
+CppSharp::Parser::AST::TypeTemplateParameter::TypeTemplateParameter()
+ : CppSharp::Parser::AST::TemplateParameter((::CppSharp::CppParser::AST::TemplateParameter*)nullptr)
+{
+ __ownsNativeInstance = true;
+ NativePtr = new ::CppSharp::CppParser::AST::TypeTemplateParameter();
+}
+
+CppSharp::Parser::AST::TypeTemplateParameter::TypeTemplateParameter(CppSharp::Parser::AST::TypeTemplateParameter^ _0)
+ : CppSharp::Parser::AST::TemplateParameter((::CppSharp::CppParser::AST::TemplateParameter*)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::TypeTemplateParameter*)_0->NativePtr;
+ NativePtr = new ::CppSharp::CppParser::AST::TypeTemplateParameter(arg0);
+}
+
+CppSharp::Parser::AST::QualifiedType^ CppSharp::Parser::AST::TypeTemplateParameter::DefaultArgument::get()
+{
+ return (&((::CppSharp::CppParser::AST::TypeTemplateParameter*)NativePtr)->DefaultArgument == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::QualifiedType((::CppSharp::CppParser::AST::QualifiedType*)&((::CppSharp::CppParser::AST::TypeTemplateParameter*)NativePtr)->DefaultArgument);
+}
+
+void CppSharp::Parser::AST::TypeTemplateParameter::DefaultArgument::set(CppSharp::Parser::AST::QualifiedType^ value)
+{
+ ((::CppSharp::CppParser::AST::TypeTemplateParameter*)NativePtr)->DefaultArgument = *(::CppSharp::CppParser::AST::QualifiedType*)value->NativePtr;
+}
+
+CppSharp::Parser::AST::NonTypeTemplateParameter::NonTypeTemplateParameter(::CppSharp::CppParser::AST::NonTypeTemplateParameter* native)
+ : CppSharp::Parser::AST::TemplateParameter((::CppSharp::CppParser::AST::TemplateParameter*)native)
+{
+}
+
+CppSharp::Parser::AST::NonTypeTemplateParameter^ CppSharp::Parser::AST::NonTypeTemplateParameter::__CreateInstance(::System::IntPtr native)
+{
+ return gcnew ::CppSharp::Parser::AST::NonTypeTemplateParameter((::CppSharp::CppParser::AST::NonTypeTemplateParameter*) native.ToPointer());
+}
+
+CppSharp::Parser::AST::NonTypeTemplateParameter::~NonTypeTemplateParameter()
+{
+ if (NativePtr)
+ {
+ auto __nativePtr = NativePtr;
+ NativePtr = 0;
+ delete (::CppSharp::CppParser::AST::NonTypeTemplateParameter*) __nativePtr;
+ }
+}
+
+CppSharp::Parser::AST::NonTypeTemplateParameter::NonTypeTemplateParameter()
+ : CppSharp::Parser::AST::TemplateParameter((::CppSharp::CppParser::AST::TemplateParameter*)nullptr)
+{
+ __ownsNativeInstance = true;
+ NativePtr = new ::CppSharp::CppParser::AST::NonTypeTemplateParameter();
+}
+
+CppSharp::Parser::AST::NonTypeTemplateParameter::NonTypeTemplateParameter(CppSharp::Parser::AST::NonTypeTemplateParameter^ _0)
+ : CppSharp::Parser::AST::TemplateParameter((::CppSharp::CppParser::AST::TemplateParameter*)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::NonTypeTemplateParameter*)_0->NativePtr;
+ NativePtr = new ::CppSharp::CppParser::AST::NonTypeTemplateParameter(arg0);
+}
+
+CppSharp::Parser::AST::Expression^ CppSharp::Parser::AST::NonTypeTemplateParameter::DefaultArgument::get()
+{
+ return (((::CppSharp::CppParser::AST::NonTypeTemplateParameter*)NativePtr)->DefaultArgument == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::Expression((::CppSharp::CppParser::AST::Expression*)((::CppSharp::CppParser::AST::NonTypeTemplateParameter*)NativePtr)->DefaultArgument);
+}
+
+void CppSharp::Parser::AST::NonTypeTemplateParameter::DefaultArgument::set(CppSharp::Parser::AST::Expression^ value)
+{
+ ((::CppSharp::CppParser::AST::NonTypeTemplateParameter*)NativePtr)->DefaultArgument = (::CppSharp::CppParser::AST::Expression*)value->NativePtr;
+}
+
+unsigned int CppSharp::Parser::AST::NonTypeTemplateParameter::Position::get()
+{
+ return ((::CppSharp::CppParser::AST::NonTypeTemplateParameter*)NativePtr)->Position;
+}
+
+void CppSharp::Parser::AST::NonTypeTemplateParameter::Position::set(unsigned int value)
+{
+ ((::CppSharp::CppParser::AST::NonTypeTemplateParameter*)NativePtr)->Position = value;
+}
+
+bool CppSharp::Parser::AST::NonTypeTemplateParameter::IsPackExpansion::get()
+{
+ return ((::CppSharp::CppParser::AST::NonTypeTemplateParameter*)NativePtr)->IsPackExpansion;
+}
+
+void CppSharp::Parser::AST::NonTypeTemplateParameter::IsPackExpansion::set(bool value)
+{
+ ((::CppSharp::CppParser::AST::NonTypeTemplateParameter*)NativePtr)->IsPackExpansion = value;
+}
+
+bool CppSharp::Parser::AST::NonTypeTemplateParameter::IsExpandedParameterPack::get()
+{
+ return ((::CppSharp::CppParser::AST::NonTypeTemplateParameter*)NativePtr)->IsExpandedParameterPack;
+}
+
+void CppSharp::Parser::AST::NonTypeTemplateParameter::IsExpandedParameterPack::set(bool value)
+{
+ ((::CppSharp::CppParser::AST::NonTypeTemplateParameter*)NativePtr)->IsExpandedParameterPack = value;
+}
+
CppSharp::Parser::AST::ClassTemplate::ClassTemplate(::CppSharp::CppParser::AST::ClassTemplate* native)
: CppSharp::Parser::AST::Template((::CppSharp::CppParser::AST::Template*)native)
{
diff --git a/src/CppParser/Bindings/CLI/AST.h b/src/CppParser/Bindings/CLI/AST.h
index 370b0c30..4e82fbd5 100644
--- a/src/CppParser/Bindings/CLI/AST.h
+++ b/src/CppParser/Bindings/CLI/AST.h
@@ -67,6 +67,7 @@ namespace CppSharp
ref class Method;
ref class Namespace;
ref class NativeLibrary;
+ ref class NonTypeTemplateParameter;
ref class PackExpansionType;
ref class ParagraphComment;
ref class ParamCommandComment;
@@ -88,6 +89,7 @@ namespace CppSharp
ref class TranslationUnit;
ref class Type;
ref class TypeQualifiers;
+ ref class TypeTemplateParameter;
ref class TypedefDecl;
ref class TypedefType;
ref class VFTableInfo;
@@ -149,7 +151,9 @@ namespace CppSharp
MacroDefinition = 18,
MacroExpansion = 19,
TranslationUnit = 20,
- Friend = 21
+ Friend = 21,
+ TemplateTypeParm = 22,
+ NonTypeTemplateParm = 23
};
public enum struct AccessSpecifier
@@ -772,45 +776,6 @@ namespace CppSharp
void clearArguments();
};
- public ref class TemplateParameter : ICppInstance
- {
- public:
-
- property ::CppSharp::CppParser::AST::TemplateParameter* NativePtr;
- property System::IntPtr __Instance
- {
- virtual System::IntPtr get();
- virtual void set(System::IntPtr instance);
- }
-
- TemplateParameter(::CppSharp::CppParser::AST::TemplateParameter* native);
- static TemplateParameter^ __CreateInstance(::System::IntPtr native);
- TemplateParameter();
-
- TemplateParameter(CppSharp::Parser::AST::TemplateParameter^ _0);
-
- ~TemplateParameter();
-
- property System::String^ Name
- {
- System::String^ get();
- void set(System::String^);
- }
-
- property bool IsTypeParameter
- {
- bool get();
- void set(bool);
- }
-
- static bool operator==(CppSharp::Parser::AST::TemplateParameter^ __op, CppSharp::Parser::AST::TemplateParameter^ param);
-
- virtual bool Equals(::System::Object^ obj) override;
-
- protected:
- bool __ownsNativeInstance;
- };
-
public ref class TemplateParameterType : CppSharp::Parser::AST::Type
{
public:
@@ -823,10 +788,10 @@ namespace CppSharp
~TemplateParameterType();
- property CppSharp::Parser::AST::TemplateParameter^ Parameter
+ property CppSharp::Parser::AST::TypeTemplateParameter^ Parameter
{
- CppSharp::Parser::AST::TemplateParameter^ get();
- void set(CppSharp::Parser::AST::TemplateParameter^);
+ CppSharp::Parser::AST::TypeTemplateParameter^ get();
+ void set(CppSharp::Parser::AST::TypeTemplateParameter^);
}
property unsigned int Depth
@@ -2090,13 +2055,100 @@ namespace CppSharp
void set(CppSharp::Parser::AST::Declaration^);
}
- CppSharp::Parser::AST::TemplateParameter^ getParameters(unsigned int i);
+ CppSharp::Parser::AST::Declaration^ getParameters(unsigned int i);
- void addParameters(CppSharp::Parser::AST::TemplateParameter^ s);
+ void addParameters(CppSharp::Parser::AST::Declaration^ s);
void clearParameters();
};
+ public ref class TemplateParameter : CppSharp::Parser::AST::Declaration
+ {
+ public:
+
+ TemplateParameter(::CppSharp::CppParser::AST::TemplateParameter* native);
+ static TemplateParameter^ __CreateInstance(::System::IntPtr native);
+ TemplateParameter(CppSharp::Parser::AST::DeclarationKind kind);
+
+ TemplateParameter(CppSharp::Parser::AST::TemplateParameter^ _0);
+
+ ~TemplateParameter();
+
+ property unsigned int Depth
+ {
+ unsigned int get();
+ void set(unsigned int);
+ }
+
+ property unsigned int Index
+ {
+ unsigned int get();
+ void set(unsigned int);
+ }
+
+ property bool IsParameterPack
+ {
+ bool get();
+ void set(bool);
+ }
+ };
+
+ public ref class TypeTemplateParameter : CppSharp::Parser::AST::TemplateParameter
+ {
+ public:
+
+ TypeTemplateParameter(::CppSharp::CppParser::AST::TypeTemplateParameter* native);
+ static TypeTemplateParameter^ __CreateInstance(::System::IntPtr native);
+ TypeTemplateParameter();
+
+ TypeTemplateParameter(CppSharp::Parser::AST::TypeTemplateParameter^ _0);
+
+ ~TypeTemplateParameter();
+
+ property CppSharp::Parser::AST::QualifiedType^ DefaultArgument
+ {
+ CppSharp::Parser::AST::QualifiedType^ get();
+ void set(CppSharp::Parser::AST::QualifiedType^);
+ }
+ };
+
+ public ref class NonTypeTemplateParameter : CppSharp::Parser::AST::TemplateParameter
+ {
+ public:
+
+ NonTypeTemplateParameter(::CppSharp::CppParser::AST::NonTypeTemplateParameter* native);
+ static NonTypeTemplateParameter^ __CreateInstance(::System::IntPtr native);
+ NonTypeTemplateParameter();
+
+ NonTypeTemplateParameter(CppSharp::Parser::AST::NonTypeTemplateParameter^ _0);
+
+ ~NonTypeTemplateParameter();
+
+ property CppSharp::Parser::AST::Expression^ DefaultArgument
+ {
+ CppSharp::Parser::AST::Expression^ get();
+ void set(CppSharp::Parser::AST::Expression^);
+ }
+
+ property unsigned int Position
+ {
+ unsigned int get();
+ void set(unsigned int);
+ }
+
+ property bool IsPackExpansion
+ {
+ bool get();
+ void set(bool);
+ }
+
+ property bool IsExpandedParameterPack
+ {
+ bool get();
+ void set(bool);
+ }
+ };
+
public ref class ClassTemplate : CppSharp::Parser::AST::Template
{
public:
diff --git a/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/AST.cs b/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/AST.cs
index 4d61a356..03c30df5 100644
--- a/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/AST.cs
+++ b/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/AST.cs
@@ -54,7 +54,9 @@ namespace CppSharp
MacroDefinition = 18,
MacroExpansion = 19,
TranslationUnit = 20,
- Friend = 21
+ Friend = 21,
+ TemplateTypeParm = 22,
+ NonTypeTemplateParm = 23
}
public enum AccessSpecifier
@@ -1927,180 +1929,9 @@ namespace CppSharp
}
}
- public unsafe partial class TemplateParameter : IDisposable
- {
- [StructLayout(LayoutKind.Explicit, Size = 16)]
- public partial struct Internal
- {
- [FieldOffset(12)]
- public byte IsTypeParameter;
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST17TemplateParameterC2Ev")]
- internal static extern void ctor_0(global::System.IntPtr instance);
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST17TemplateParameterC2ERKS2_")]
- 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="_ZN8CppSharp9CppParser3AST17TemplateParameterD2Ev")]
- internal static extern void dtor_0(global::System.IntPtr instance);
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZNK8CppSharp9CppParser3AST17TemplateParametereqERKS2_")]
- [return: MarshalAsAttribute(UnmanagedType.I1)]
- internal static extern bool OperatorEqualEqual_0(global::System.IntPtr instance, global::System.IntPtr param);
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST17TemplateParameter7getNameEv")]
- internal static extern global::System.IntPtr getName_0(global::System.IntPtr instance);
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST17TemplateParameter7setNameEPKc")]
- internal static extern void setName_0(global::System.IntPtr instance, global::System.IntPtr s);
- }
-
- public global::System.IntPtr __Instance { get; protected set; }
-
- protected int __PointerAdjustment;
- public static readonly System.Collections.Concurrent.ConcurrentDictionary NativeToManagedMap = new System.Collections.Concurrent.ConcurrentDictionary();
- protected void*[] __OriginalVTables;
-
- protected bool __ownsNativeInstance;
-
- public static TemplateParameter __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
- {
- return new TemplateParameter(native.ToPointer(), skipVTables);
- }
-
- public static TemplateParameter __CreateInstance(TemplateParameter.Internal native, bool skipVTables = false)
- {
- return new TemplateParameter(native, skipVTables);
- }
-
- private static void* __CopyValue(TemplateParameter.Internal native)
- {
- var ret = Marshal.AllocHGlobal(16);
- CppSharp.Parser.AST.TemplateParameter.Internal.cctor_1(ret, new global::System.IntPtr(&native));
- return ret.ToPointer();
- }
-
- private TemplateParameter(TemplateParameter.Internal native, bool skipVTables = false)
- : this(__CopyValue(native), skipVTables)
- {
- __ownsNativeInstance = true;
- NativeToManagedMap[__Instance] = this;
- }
-
- protected TemplateParameter(void* native, bool skipVTables = false)
- {
- if (native == null)
- return;
- __Instance = new global::System.IntPtr(native);
- }
-
- public TemplateParameter()
- {
- __Instance = Marshal.AllocHGlobal(16);
- __ownsNativeInstance = true;
- NativeToManagedMap[__Instance] = this;
- Internal.ctor_0((__Instance + __PointerAdjustment));
- }
-
- public TemplateParameter(CppSharp.Parser.AST.TemplateParameter _0)
- {
- __Instance = Marshal.AllocHGlobal(16);
- __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);
- }
-
- public void Dispose()
- {
- Dispose(disposing: true);
- }
-
- protected virtual void Dispose(bool disposing)
- {
- CppSharp.Parser.AST.TemplateParameter __dummy;
- NativeToManagedMap.TryRemove(__Instance, out __dummy);
- Internal.dtor_0((__Instance + __PointerAdjustment));
- if (__ownsNativeInstance)
- Marshal.FreeHGlobal(__Instance);
- }
-
- public static bool operator !=(CppSharp.Parser.AST.TemplateParameter __op, CppSharp.Parser.AST.TemplateParameter param)
- {
- return !(__op == param);
- }
-
- public static bool operator ==(CppSharp.Parser.AST.TemplateParameter __op, CppSharp.Parser.AST.TemplateParameter param)
- {
- bool __opNull = ReferenceEquals(__op, null);
- bool paramNull = ReferenceEquals(param, null);
- if (__opNull || paramNull)
- return __opNull && paramNull;
- var arg0 = __op.__Instance;
- var arg1 = param.__Instance;
- var __ret = Internal.OperatorEqualEqual_0(arg0, arg1);
- return __ret;
- }
-
- public override bool Equals(object obj)
- {
- return this == obj as TemplateParameter;
- }
-
- public override int GetHashCode()
- {
- if (__Instance == global::System.IntPtr.Zero)
- return global::System.IntPtr.Zero.GetHashCode();
- return (*(Internal*) __Instance).GetHashCode();
- }
-
- public string Name
- {
- get
- {
- var __ret = Internal.getName_0((__Instance + __PointerAdjustment));
- return Marshal.PtrToStringAnsi(__ret);
- }
-
- set
- {
- var arg0 = Marshal.StringToHGlobalAnsi(value);
- Internal.setName_0((__Instance + __PointerAdjustment), arg0);
- Marshal.FreeHGlobal(arg0);
- }
- }
-
- public bool IsTypeParameter
- {
- get
- {
- return ((Internal*) __Instance)->IsTypeParameter != 0;
- }
-
- set
- {
- ((Internal*) __Instance)->IsTypeParameter = (byte) (value ? 1 : 0);
- }
- }
- }
-
public unsafe partial class TemplateParameterType : CppSharp.Parser.AST.Type, IDisposable
{
- [StructLayout(LayoutKind.Explicit, Size = 36)]
+ [StructLayout(LayoutKind.Explicit, Size = 24)]
public new partial struct Internal
{
[FieldOffset(0)]
@@ -2110,15 +1941,15 @@ namespace CppSharp
public byte IsDependent;
[FieldOffset(8)]
- public CppSharp.Parser.AST.TemplateParameter.Internal Parameter;
+ public global::System.IntPtr Parameter;
- [FieldOffset(24)]
+ [FieldOffset(12)]
public uint Depth;
- [FieldOffset(28)]
+ [FieldOffset(16)]
public uint Index;
- [FieldOffset(32)]
+ [FieldOffset(20)]
public byte IsParameterPack;
[SuppressUnmanagedCodeSecurity]
@@ -2149,7 +1980,7 @@ namespace CppSharp
private static void* __CopyValue(TemplateParameterType.Internal native)
{
- var ret = Marshal.AllocHGlobal(36);
+ var ret = Marshal.AllocHGlobal(24);
CppSharp.Parser.AST.TemplateParameterType.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return ret.ToPointer();
}
@@ -2173,7 +2004,7 @@ namespace CppSharp
public TemplateParameterType()
: this((void*) null)
{
- __Instance = Marshal.AllocHGlobal(36);
+ __Instance = Marshal.AllocHGlobal(24);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
Internal.ctor_0((__Instance + __PointerAdjustment));
@@ -2182,7 +2013,7 @@ namespace CppSharp
public TemplateParameterType(CppSharp.Parser.AST.TemplateParameterType _0)
: this((void*) null)
{
- __Instance = Marshal.AllocHGlobal(36);
+ __Instance = Marshal.AllocHGlobal(24);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null))
@@ -2200,16 +2031,21 @@ namespace CppSharp
Marshal.FreeHGlobal(__Instance);
}
- public CppSharp.Parser.AST.TemplateParameter Parameter
+ public CppSharp.Parser.AST.TypeTemplateParameter Parameter
{
get
{
- return CppSharp.Parser.AST.TemplateParameter.__CreateInstance(((Internal*) __Instance)->Parameter);
+ CppSharp.Parser.AST.TypeTemplateParameter __result0;
+ if (((Internal*) __Instance)->Parameter == IntPtr.Zero) __result0 = null;
+ else if (CppSharp.Parser.AST.TypeTemplateParameter.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Parameter))
+ __result0 = (CppSharp.Parser.AST.TypeTemplateParameter) CppSharp.Parser.AST.TypeTemplateParameter.NativeToManagedMap[((Internal*) __Instance)->Parameter];
+ else __result0 = CppSharp.Parser.AST.TypeTemplateParameter.__CreateInstance(((Internal*) __Instance)->Parameter);
+ return __result0;
}
set
{
- ((Internal*) __Instance)->Parameter = ReferenceEquals(value, null) ? new CppSharp.Parser.AST.TemplateParameter.Internal() : *(CppSharp.Parser.AST.TemplateParameter.Internal*) (value.__Instance);
+ ((Internal*) __Instance)->Parameter = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance;
}
}
@@ -3824,7 +3660,7 @@ namespace CppSharp
set
{
- ((Internal*) __Instance)->OriginalPtr = value;
+ ((Internal*) __Instance)->OriginalPtr = (global::System.IntPtr) value;
}
}
}
@@ -7885,11 +7721,11 @@ namespace CppSharp
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST8Template13getParametersEj")]
- internal static extern void getParameters_0(global::System.IntPtr @return, global::System.IntPtr instance, uint i);
+ internal static extern global::System.IntPtr getParameters_0(global::System.IntPtr instance, uint i);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST8Template13addParametersERNS1_17TemplateParameterE")]
+ EntryPoint="_ZN8CppSharp9CppParser3AST8Template13addParametersERPNS1_11DeclarationE")]
internal static extern void addParameters_0(global::System.IntPtr instance, global::System.IntPtr s);
[SuppressUnmanagedCodeSecurity]
@@ -7976,14 +7812,18 @@ namespace CppSharp
Marshal.FreeHGlobal(__Instance);
}
- public CppSharp.Parser.AST.TemplateParameter getParameters(uint i)
+ public CppSharp.Parser.AST.Declaration getParameters(uint i)
{
- var __ret = new CppSharp.Parser.AST.TemplateParameter.Internal();
- Internal.getParameters_0(new IntPtr(&__ret), (__Instance + __PointerAdjustment), i);
- return CppSharp.Parser.AST.TemplateParameter.__CreateInstance(__ret);
+ var __ret = Internal.getParameters_0((__Instance + __PointerAdjustment), i);
+ CppSharp.Parser.AST.Declaration __result0;
+ if (__ret == IntPtr.Zero) __result0 = null;
+ else if (CppSharp.Parser.AST.Declaration.NativeToManagedMap.ContainsKey(__ret))
+ __result0 = (CppSharp.Parser.AST.Declaration) CppSharp.Parser.AST.Declaration.NativeToManagedMap[__ret];
+ else __result0 = CppSharp.Parser.AST.Declaration.__CreateInstance(__ret);
+ return __result0;
}
- public void addParameters(CppSharp.Parser.AST.TemplateParameter s)
+ public void addParameters(CppSharp.Parser.AST.Declaration s)
{
if (ReferenceEquals(s, null))
throw new global::System.ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
@@ -8024,9 +7864,9 @@ namespace CppSharp
}
}
- public unsafe partial class ClassTemplate : CppSharp.Parser.AST.Template, IDisposable
+ public unsafe partial class TemplateParameter : CppSharp.Parser.AST.Declaration, IDisposable
{
- [StructLayout(LayoutKind.Explicit, Size = 120)]
+ [StructLayout(LayoutKind.Explicit, Size = 104)]
public new partial struct Internal
{
[FieldOffset(0)]
@@ -8069,69 +7909,55 @@ namespace CppSharp
public global::System.IntPtr OriginalPtr;
[FieldOffset(92)]
- public global::System.IntPtr TemplatedDecl;
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplateC2Ev")]
- internal static extern void ctor_0(global::System.IntPtr instance);
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplateC2ERKS2_")]
- internal static extern void cctor_1(global::System.IntPtr instance, global::System.IntPtr _0);
+ public uint Depth;
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplateD2Ev")]
- internal static extern void dtor_0(global::System.IntPtr instance);
+ [FieldOffset(96)]
+ public uint Index;
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplate18getSpecializationsEj")]
- internal static extern global::System.IntPtr getSpecializations_0(global::System.IntPtr instance, uint i);
+ [FieldOffset(100)]
+ public byte IsParameterPack;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplate18addSpecializationsERPNS1_27ClassTemplateSpecializationE")]
- internal static extern void addSpecializations_0(global::System.IntPtr instance, global::System.IntPtr s);
+ EntryPoint="_ZN8CppSharp9CppParser3AST17TemplateParameterC2ENS1_15DeclarationKindE")]
+ internal static extern void ctor_0(global::System.IntPtr instance, CppSharp.Parser.AST.DeclarationKind kind);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplate20clearSpecializationsEv")]
- internal static extern void clearSpecializations_0(global::System.IntPtr instance);
+ EntryPoint="_ZN8CppSharp9CppParser3AST17TemplateParameterC2ERKS2_")]
+ 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="_ZN8CppSharp9CppParser3AST13ClassTemplate23getSpecializationsCountEv")]
- internal static extern uint getSpecializationsCount_0(global::System.IntPtr instance);
+ EntryPoint="_ZN8CppSharp9CppParser3AST17TemplateParameterD2Ev")]
+ internal static extern void dtor_0(global::System.IntPtr instance);
}
- public static new ClassTemplate __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
+ public static new TemplateParameter __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
{
- return new ClassTemplate(native.ToPointer(), skipVTables);
+ return new TemplateParameter(native.ToPointer(), skipVTables);
}
- public static ClassTemplate __CreateInstance(ClassTemplate.Internal native, bool skipVTables = false)
+ public static TemplateParameter __CreateInstance(TemplateParameter.Internal native, bool skipVTables = false)
{
- return new ClassTemplate(native, skipVTables);
+ return new TemplateParameter(native, skipVTables);
}
- private static void* __CopyValue(ClassTemplate.Internal native)
+ private static void* __CopyValue(TemplateParameter.Internal native)
{
- var ret = Marshal.AllocHGlobal(120);
- CppSharp.Parser.AST.ClassTemplate.Internal.cctor_1(ret, new global::System.IntPtr(&native));
+ var ret = Marshal.AllocHGlobal(104);
+ CppSharp.Parser.AST.TemplateParameter.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return ret.ToPointer();
}
- private ClassTemplate(ClassTemplate.Internal native, bool skipVTables = false)
+ private TemplateParameter(TemplateParameter.Internal native, bool skipVTables = false)
: this(__CopyValue(native), skipVTables)
{
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
}
- protected ClassTemplate(void* native, bool skipVTables = false)
+ protected TemplateParameter(void* native, bool skipVTables = false)
: base((void*) null)
{
__PointerAdjustment = 0;
@@ -8140,19 +7966,20 @@ namespace CppSharp
__Instance = new global::System.IntPtr(native);
}
- public ClassTemplate()
+ public TemplateParameter(CppSharp.Parser.AST.DeclarationKind kind)
: this((void*) null)
{
- __Instance = Marshal.AllocHGlobal(120);
+ __Instance = Marshal.AllocHGlobal(104);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
- Internal.ctor_0((__Instance + __PointerAdjustment));
+ var arg0 = kind;
+ Internal.ctor_0((__Instance + __PointerAdjustment), arg0);
}
- public ClassTemplate(CppSharp.Parser.AST.ClassTemplate _0)
+ public TemplateParameter(CppSharp.Parser.AST.TemplateParameter _0)
: this((void*) null)
{
- __Instance = Marshal.AllocHGlobal(120);
+ __Instance = Marshal.AllocHGlobal(104);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null))
@@ -8170,41 +7997,578 @@ namespace CppSharp
Marshal.FreeHGlobal(__Instance);
}
- public CppSharp.Parser.AST.ClassTemplateSpecialization getSpecializations(uint i)
- {
- var __ret = Internal.getSpecializations_0((__Instance + __PointerAdjustment), i);
- CppSharp.Parser.AST.ClassTemplateSpecialization __result0;
- if (__ret == IntPtr.Zero) __result0 = null;
- else if (CppSharp.Parser.AST.ClassTemplateSpecialization.NativeToManagedMap.ContainsKey(__ret))
- __result0 = (CppSharp.Parser.AST.ClassTemplateSpecialization) CppSharp.Parser.AST.ClassTemplateSpecialization.NativeToManagedMap[__ret];
- else __result0 = CppSharp.Parser.AST.ClassTemplateSpecialization.__CreateInstance(__ret);
- return __result0;
- }
-
- public void addSpecializations(CppSharp.Parser.AST.ClassTemplateSpecialization s)
+ public uint Depth
{
- if (ReferenceEquals(s, null))
- throw new global::System.ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
- var arg0 = s.__Instance;
- Internal.addSpecializations_0((__Instance + __PointerAdjustment), arg0);
- }
+ get
+ {
+ return ((Internal*) __Instance)->Depth;
+ }
- public void clearSpecializations()
- {
- Internal.clearSpecializations_0((__Instance + __PointerAdjustment));
+ set
+ {
+ ((Internal*) __Instance)->Depth = value;
+ }
}
- public uint SpecializationsCount
+ public uint Index
{
get
{
- var __ret = Internal.getSpecializationsCount_0((__Instance + __PointerAdjustment));
- return __ret;
+ return ((Internal*) __Instance)->Index;
}
- }
- }
- public unsafe partial class ClassTemplateSpecialization : CppSharp.Parser.AST.Class, IDisposable
+ set
+ {
+ ((Internal*) __Instance)->Index = value;
+ }
+ }
+
+ public bool IsParameterPack
+ {
+ get
+ {
+ return ((Internal*) __Instance)->IsParameterPack != 0;
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->IsParameterPack = (byte) (value ? 1 : 0);
+ }
+ }
+ }
+
+ public unsafe partial class TypeTemplateParameter : CppSharp.Parser.AST.TemplateParameter, IDisposable
+ {
+ [StructLayout(LayoutKind.Explicit, Size = 112)]
+ public new partial struct Internal
+ {
+ [FieldOffset(0)]
+ public CppSharp.Parser.AST.DeclarationKind Kind;
+
+ [FieldOffset(4)]
+ public CppSharp.Parser.AST.AccessSpecifier Access;
+
+ [FieldOffset(8)]
+ public global::System.IntPtr _Namespace;
+
+ [FieldOffset(12)]
+ public CppSharp.Parser.SourceLocation.Internal Location;
+
+ [FieldOffset(16)]
+ public int LineNumberStart;
+
+ [FieldOffset(20)]
+ public int LineNumberEnd;
+
+ [FieldOffset(36)]
+ public global::System.IntPtr Comment;
+
+ [FieldOffset(52)]
+ public byte IsIncomplete;
+
+ [FieldOffset(53)]
+ public byte IsDependent;
+
+ [FieldOffset(54)]
+ public byte IsImplicit;
+
+ [FieldOffset(56)]
+ public global::System.IntPtr CompleteDeclaration;
+
+ [FieldOffset(60)]
+ public uint DefinitionOrder;
+
+ [FieldOffset(76)]
+ public global::System.IntPtr OriginalPtr;
+
+ [FieldOffset(92)]
+ public uint Depth;
+
+ [FieldOffset(96)]
+ public uint Index;
+
+ [FieldOffset(100)]
+ public byte IsParameterPack;
+
+ [FieldOffset(104)]
+ public CppSharp.Parser.AST.QualifiedType.Internal DefaultArgument;
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST21TypeTemplateParameterC2Ev")]
+ internal static extern void ctor_0(global::System.IntPtr instance);
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST21TypeTemplateParameterC2ERKS2_")]
+ 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="_ZN8CppSharp9CppParser3AST21TypeTemplateParameterD2Ev")]
+ internal static extern void dtor_0(global::System.IntPtr instance);
+ }
+
+ public static new TypeTemplateParameter __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
+ {
+ return new TypeTemplateParameter(native.ToPointer(), skipVTables);
+ }
+
+ public static TypeTemplateParameter __CreateInstance(TypeTemplateParameter.Internal native, bool skipVTables = false)
+ {
+ return new TypeTemplateParameter(native, skipVTables);
+ }
+
+ private static void* __CopyValue(TypeTemplateParameter.Internal native)
+ {
+ var ret = Marshal.AllocHGlobal(112);
+ CppSharp.Parser.AST.TypeTemplateParameter.Internal.cctor_1(ret, new global::System.IntPtr(&native));
+ return ret.ToPointer();
+ }
+
+ private TypeTemplateParameter(TypeTemplateParameter.Internal native, bool skipVTables = false)
+ : this(__CopyValue(native), skipVTables)
+ {
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ }
+
+ protected TypeTemplateParameter(void* native, bool skipVTables = false)
+ : base((void*) null)
+ {
+ __PointerAdjustment = 0;
+ if (native == null)
+ return;
+ __Instance = new global::System.IntPtr(native);
+ }
+
+ public TypeTemplateParameter()
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(112);
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ Internal.ctor_0((__Instance + __PointerAdjustment));
+ }
+
+ public TypeTemplateParameter(CppSharp.Parser.AST.TypeTemplateParameter _0)
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(112);
+ __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)
+ {
+ CppSharp.Parser.AST.Declaration __dummy;
+ NativeToManagedMap.TryRemove(__Instance, out __dummy);
+ Internal.dtor_0((__Instance + __PointerAdjustment));
+ if (__ownsNativeInstance)
+ Marshal.FreeHGlobal(__Instance);
+ }
+
+ public CppSharp.Parser.AST.QualifiedType DefaultArgument
+ {
+ get
+ {
+ return CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->DefaultArgument);
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->DefaultArgument = ReferenceEquals(value, null) ? new CppSharp.Parser.AST.QualifiedType.Internal() : *(CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance);
+ }
+ }
+ }
+
+ public unsafe partial class NonTypeTemplateParameter : CppSharp.Parser.AST.TemplateParameter, IDisposable
+ {
+ [StructLayout(LayoutKind.Explicit, Size = 116)]
+ public new partial struct Internal
+ {
+ [FieldOffset(0)]
+ public CppSharp.Parser.AST.DeclarationKind Kind;
+
+ [FieldOffset(4)]
+ public CppSharp.Parser.AST.AccessSpecifier Access;
+
+ [FieldOffset(8)]
+ public global::System.IntPtr _Namespace;
+
+ [FieldOffset(12)]
+ public CppSharp.Parser.SourceLocation.Internal Location;
+
+ [FieldOffset(16)]
+ public int LineNumberStart;
+
+ [FieldOffset(20)]
+ public int LineNumberEnd;
+
+ [FieldOffset(36)]
+ public global::System.IntPtr Comment;
+
+ [FieldOffset(52)]
+ public byte IsIncomplete;
+
+ [FieldOffset(53)]
+ public byte IsDependent;
+
+ [FieldOffset(54)]
+ public byte IsImplicit;
+
+ [FieldOffset(56)]
+ public global::System.IntPtr CompleteDeclaration;
+
+ [FieldOffset(60)]
+ public uint DefinitionOrder;
+
+ [FieldOffset(76)]
+ public global::System.IntPtr OriginalPtr;
+
+ [FieldOffset(92)]
+ public uint Depth;
+
+ [FieldOffset(96)]
+ public uint Index;
+
+ [FieldOffset(100)]
+ public byte IsParameterPack;
+
+ [FieldOffset(104)]
+ public global::System.IntPtr DefaultArgument;
+
+ [FieldOffset(108)]
+ public uint Position;
+
+ [FieldOffset(112)]
+ public byte IsPackExpansion;
+
+ [FieldOffset(113)]
+ public byte IsExpandedParameterPack;
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST24NonTypeTemplateParameterC2Ev")]
+ internal static extern void ctor_0(global::System.IntPtr instance);
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST24NonTypeTemplateParameterC2ERKS2_")]
+ 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="_ZN8CppSharp9CppParser3AST24NonTypeTemplateParameterD2Ev")]
+ internal static extern void dtor_0(global::System.IntPtr instance);
+ }
+
+ public static new NonTypeTemplateParameter __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
+ {
+ return new NonTypeTemplateParameter(native.ToPointer(), skipVTables);
+ }
+
+ public static NonTypeTemplateParameter __CreateInstance(NonTypeTemplateParameter.Internal native, bool skipVTables = false)
+ {
+ return new NonTypeTemplateParameter(native, skipVTables);
+ }
+
+ private static void* __CopyValue(NonTypeTemplateParameter.Internal native)
+ {
+ var ret = Marshal.AllocHGlobal(116);
+ CppSharp.Parser.AST.NonTypeTemplateParameter.Internal.cctor_1(ret, new global::System.IntPtr(&native));
+ return ret.ToPointer();
+ }
+
+ private NonTypeTemplateParameter(NonTypeTemplateParameter.Internal native, bool skipVTables = false)
+ : this(__CopyValue(native), skipVTables)
+ {
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ }
+
+ protected NonTypeTemplateParameter(void* native, bool skipVTables = false)
+ : base((void*) null)
+ {
+ __PointerAdjustment = 0;
+ if (native == null)
+ return;
+ __Instance = new global::System.IntPtr(native);
+ }
+
+ public NonTypeTemplateParameter()
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(116);
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ Internal.ctor_0((__Instance + __PointerAdjustment));
+ }
+
+ public NonTypeTemplateParameter(CppSharp.Parser.AST.NonTypeTemplateParameter _0)
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(116);
+ __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)
+ {
+ CppSharp.Parser.AST.Declaration __dummy;
+ NativeToManagedMap.TryRemove(__Instance, out __dummy);
+ Internal.dtor_0((__Instance + __PointerAdjustment));
+ if (__ownsNativeInstance)
+ Marshal.FreeHGlobal(__Instance);
+ }
+
+ public CppSharp.Parser.AST.Expression DefaultArgument
+ {
+ get
+ {
+ CppSharp.Parser.AST.Expression __result0;
+ if (((Internal*) __Instance)->DefaultArgument == IntPtr.Zero) __result0 = null;
+ else if (CppSharp.Parser.AST.Expression.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->DefaultArgument))
+ __result0 = (CppSharp.Parser.AST.Expression) CppSharp.Parser.AST.Expression.NativeToManagedMap[((Internal*) __Instance)->DefaultArgument];
+ else __result0 = CppSharp.Parser.AST.Expression.__CreateInstance(((Internal*) __Instance)->DefaultArgument);
+ return __result0;
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->DefaultArgument = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance;
+ }
+ }
+
+ public uint Position
+ {
+ get
+ {
+ return ((Internal*) __Instance)->Position;
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->Position = value;
+ }
+ }
+
+ public bool IsPackExpansion
+ {
+ get
+ {
+ return ((Internal*) __Instance)->IsPackExpansion != 0;
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->IsPackExpansion = (byte) (value ? 1 : 0);
+ }
+ }
+
+ public bool IsExpandedParameterPack
+ {
+ get
+ {
+ return ((Internal*) __Instance)->IsExpandedParameterPack != 0;
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->IsExpandedParameterPack = (byte) (value ? 1 : 0);
+ }
+ }
+ }
+
+ public unsafe partial class ClassTemplate : CppSharp.Parser.AST.Template, IDisposable
+ {
+ [StructLayout(LayoutKind.Explicit, Size = 120)]
+ public new partial struct Internal
+ {
+ [FieldOffset(0)]
+ public CppSharp.Parser.AST.DeclarationKind Kind;
+
+ [FieldOffset(4)]
+ public CppSharp.Parser.AST.AccessSpecifier Access;
+
+ [FieldOffset(8)]
+ public global::System.IntPtr _Namespace;
+
+ [FieldOffset(12)]
+ public CppSharp.Parser.SourceLocation.Internal Location;
+
+ [FieldOffset(16)]
+ public int LineNumberStart;
+
+ [FieldOffset(20)]
+ public int LineNumberEnd;
+
+ [FieldOffset(36)]
+ public global::System.IntPtr Comment;
+
+ [FieldOffset(52)]
+ public byte IsIncomplete;
+
+ [FieldOffset(53)]
+ public byte IsDependent;
+
+ [FieldOffset(54)]
+ public byte IsImplicit;
+
+ [FieldOffset(56)]
+ public global::System.IntPtr CompleteDeclaration;
+
+ [FieldOffset(60)]
+ public uint DefinitionOrder;
+
+ [FieldOffset(76)]
+ public global::System.IntPtr OriginalPtr;
+
+ [FieldOffset(92)]
+ public global::System.IntPtr TemplatedDecl;
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplateC2Ev")]
+ internal static extern void ctor_0(global::System.IntPtr instance);
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplateC2ERKS2_")]
+ 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="_ZN8CppSharp9CppParser3AST13ClassTemplateD2Ev")]
+ internal static extern void dtor_0(global::System.IntPtr instance);
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplate18getSpecializationsEj")]
+ internal static extern global::System.IntPtr getSpecializations_0(global::System.IntPtr instance, uint i);
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplate18addSpecializationsERPNS1_27ClassTemplateSpecializationE")]
+ internal static extern void addSpecializations_0(global::System.IntPtr instance, global::System.IntPtr s);
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplate20clearSpecializationsEv")]
+ internal static extern void clearSpecializations_0(global::System.IntPtr instance);
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplate23getSpecializationsCountEv")]
+ internal static extern uint getSpecializationsCount_0(global::System.IntPtr instance);
+ }
+
+ public static new ClassTemplate __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
+ {
+ return new ClassTemplate(native.ToPointer(), skipVTables);
+ }
+
+ public static ClassTemplate __CreateInstance(ClassTemplate.Internal native, bool skipVTables = false)
+ {
+ return new ClassTemplate(native, skipVTables);
+ }
+
+ private static void* __CopyValue(ClassTemplate.Internal native)
+ {
+ var ret = Marshal.AllocHGlobal(120);
+ CppSharp.Parser.AST.ClassTemplate.Internal.cctor_1(ret, new global::System.IntPtr(&native));
+ return ret.ToPointer();
+ }
+
+ private ClassTemplate(ClassTemplate.Internal native, bool skipVTables = false)
+ : this(__CopyValue(native), skipVTables)
+ {
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ }
+
+ protected ClassTemplate(void* native, bool skipVTables = false)
+ : base((void*) null)
+ {
+ __PointerAdjustment = 0;
+ if (native == null)
+ return;
+ __Instance = new global::System.IntPtr(native);
+ }
+
+ public ClassTemplate()
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(120);
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ Internal.ctor_0((__Instance + __PointerAdjustment));
+ }
+
+ public ClassTemplate(CppSharp.Parser.AST.ClassTemplate _0)
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(120);
+ __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)
+ {
+ CppSharp.Parser.AST.Declaration __dummy;
+ NativeToManagedMap.TryRemove(__Instance, out __dummy);
+ Internal.dtor_0((__Instance + __PointerAdjustment));
+ if (__ownsNativeInstance)
+ Marshal.FreeHGlobal(__Instance);
+ }
+
+ public CppSharp.Parser.AST.ClassTemplateSpecialization getSpecializations(uint i)
+ {
+ var __ret = Internal.getSpecializations_0((__Instance + __PointerAdjustment), i);
+ CppSharp.Parser.AST.ClassTemplateSpecialization __result0;
+ if (__ret == IntPtr.Zero) __result0 = null;
+ else if (CppSharp.Parser.AST.ClassTemplateSpecialization.NativeToManagedMap.ContainsKey(__ret))
+ __result0 = (CppSharp.Parser.AST.ClassTemplateSpecialization) CppSharp.Parser.AST.ClassTemplateSpecialization.NativeToManagedMap[__ret];
+ else __result0 = CppSharp.Parser.AST.ClassTemplateSpecialization.__CreateInstance(__ret);
+ return __result0;
+ }
+
+ public void addSpecializations(CppSharp.Parser.AST.ClassTemplateSpecialization 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.addSpecializations_0((__Instance + __PointerAdjustment), arg0);
+ }
+
+ public void clearSpecializations()
+ {
+ Internal.clearSpecializations_0((__Instance + __PointerAdjustment));
+ }
+
+ public uint SpecializationsCount
+ {
+ get
+ {
+ var __ret = Internal.getSpecializationsCount_0((__Instance + __PointerAdjustment));
+ return __ret;
+ }
+ }
+ }
+
+ public unsafe partial class ClassTemplateSpecialization : CppSharp.Parser.AST.Class, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 288)]
public new partial struct Internal
@@ -8812,7 +9176,7 @@ namespace CppSharp
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST30FunctionTemplateSpecializationC2ERKS2_")]
- internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0);
+ 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,
@@ -8861,7 +9225,7 @@ namespace CppSharp
private static void* __CopyValue(FunctionTemplateSpecialization.Internal native)
{
var ret = Marshal.AllocHGlobal(24);
- CppSharp.Parser.AST.FunctionTemplateSpecialization.Internal.cctor_2(ret, new global::System.IntPtr(&native));
+ CppSharp.Parser.AST.FunctionTemplateSpecialization.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return ret.ToPointer();
}
@@ -8895,7 +9259,7 @@ namespace CppSharp
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_2((__Instance + __PointerAdjustment), arg0);
+ Internal.cctor_1((__Instance + __PointerAdjustment), arg0);
}
public void Dispose()
@@ -9249,7 +9613,7 @@ namespace CppSharp
set
{
- ((Internal*) __Instance)->OriginalPtr = value;
+ ((Internal*) __Instance)->OriginalPtr = (global::System.IntPtr) value;
}
}
diff --git a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/AST.cs b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/AST.cs
index c9ae95ee..51405a3e 100644
--- a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/AST.cs
+++ b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/AST.cs
@@ -54,7 +54,9 @@ namespace CppSharp
MacroDefinition = 18,
MacroExpansion = 19,
TranslationUnit = 20,
- Friend = 21
+ Friend = 21,
+ TemplateTypeParm = 22,
+ NonTypeTemplateParm = 23
}
public enum AccessSpecifier
@@ -1927,180 +1929,9 @@ namespace CppSharp
}
}
- public unsafe partial class TemplateParameter : IDisposable
- {
- [StructLayout(LayoutKind.Explicit, Size = 28)]
- public partial struct Internal
- {
- [FieldOffset(24)]
- public byte IsTypeParameter;
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
- EntryPoint="??0TemplateParameter@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="??0TemplateParameter@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="??1TemplateParameter@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="??8TemplateParameter@AST@CppParser@CppSharp@@QBE_NABV0123@@Z")]
- [return: MarshalAsAttribute(UnmanagedType.I1)]
- internal static extern bool OperatorEqualEqual_0(global::System.IntPtr instance, global::System.IntPtr param);
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
- EntryPoint="?getName@TemplateParameter@AST@CppParser@CppSharp@@QAEPBDXZ")]
- internal static extern global::System.IntPtr getName_0(global::System.IntPtr instance);
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
- EntryPoint="?setName@TemplateParameter@AST@CppParser@CppSharp@@QAEXPBD@Z")]
- internal static extern void setName_0(global::System.IntPtr instance, global::System.IntPtr s);
- }
-
- public global::System.IntPtr __Instance { get; protected set; }
-
- protected int __PointerAdjustment;
- public static readonly System.Collections.Concurrent.ConcurrentDictionary NativeToManagedMap = new System.Collections.Concurrent.ConcurrentDictionary();
- protected void*[] __OriginalVTables;
-
- protected bool __ownsNativeInstance;
-
- public static TemplateParameter __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
- {
- return new TemplateParameter(native.ToPointer(), skipVTables);
- }
-
- public static TemplateParameter __CreateInstance(TemplateParameter.Internal native, bool skipVTables = false)
- {
- return new TemplateParameter(native, skipVTables);
- }
-
- private static void* __CopyValue(TemplateParameter.Internal native)
- {
- var ret = Marshal.AllocHGlobal(28);
- CppSharp.Parser.AST.TemplateParameter.Internal.cctor_1(ret, new global::System.IntPtr(&native));
- return ret.ToPointer();
- }
-
- private TemplateParameter(TemplateParameter.Internal native, bool skipVTables = false)
- : this(__CopyValue(native), skipVTables)
- {
- __ownsNativeInstance = true;
- NativeToManagedMap[__Instance] = this;
- }
-
- protected TemplateParameter(void* native, bool skipVTables = false)
- {
- if (native == null)
- return;
- __Instance = new global::System.IntPtr(native);
- }
-
- public TemplateParameter()
- {
- __Instance = Marshal.AllocHGlobal(28);
- __ownsNativeInstance = true;
- NativeToManagedMap[__Instance] = this;
- Internal.ctor_0((__Instance + __PointerAdjustment));
- }
-
- public TemplateParameter(CppSharp.Parser.AST.TemplateParameter _0)
- {
- __Instance = Marshal.AllocHGlobal(28);
- __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);
- }
-
- public void Dispose()
- {
- Dispose(disposing: true);
- }
-
- protected virtual void Dispose(bool disposing)
- {
- CppSharp.Parser.AST.TemplateParameter __dummy;
- NativeToManagedMap.TryRemove(__Instance, out __dummy);
- Internal.dtor_0((__Instance + __PointerAdjustment), 0);
- if (__ownsNativeInstance)
- Marshal.FreeHGlobal(__Instance);
- }
-
- public static bool operator !=(CppSharp.Parser.AST.TemplateParameter __op, CppSharp.Parser.AST.TemplateParameter param)
- {
- return !(__op == param);
- }
-
- public static bool operator ==(CppSharp.Parser.AST.TemplateParameter __op, CppSharp.Parser.AST.TemplateParameter param)
- {
- bool __opNull = ReferenceEquals(__op, null);
- bool paramNull = ReferenceEquals(param, null);
- if (__opNull || paramNull)
- return __opNull && paramNull;
- var arg0 = __op.__Instance;
- var arg1 = param.__Instance;
- var __ret = Internal.OperatorEqualEqual_0(arg0, arg1);
- return __ret;
- }
-
- public override bool Equals(object obj)
- {
- return this == obj as TemplateParameter;
- }
-
- public override int GetHashCode()
- {
- if (__Instance == global::System.IntPtr.Zero)
- return global::System.IntPtr.Zero.GetHashCode();
- return (*(Internal*) __Instance).GetHashCode();
- }
-
- public string Name
- {
- get
- {
- var __ret = Internal.getName_0((__Instance + __PointerAdjustment));
- return Marshal.PtrToStringAnsi(__ret);
- }
-
- set
- {
- var arg0 = Marshal.StringToHGlobalAnsi(value);
- Internal.setName_0((__Instance + __PointerAdjustment), arg0);
- Marshal.FreeHGlobal(arg0);
- }
- }
-
- public bool IsTypeParameter
- {
- get
- {
- return ((Internal*) __Instance)->IsTypeParameter != 0;
- }
-
- set
- {
- ((Internal*) __Instance)->IsTypeParameter = (byte) (value ? 1 : 0);
- }
- }
- }
-
public unsafe partial class TemplateParameterType : CppSharp.Parser.AST.Type, IDisposable
{
- [StructLayout(LayoutKind.Explicit, Size = 48)]
+ [StructLayout(LayoutKind.Explicit, Size = 24)]
public new partial struct Internal
{
[FieldOffset(0)]
@@ -2110,15 +1941,15 @@ namespace CppSharp
public byte IsDependent;
[FieldOffset(8)]
- public CppSharp.Parser.AST.TemplateParameter.Internal Parameter;
+ public global::System.IntPtr Parameter;
- [FieldOffset(36)]
+ [FieldOffset(12)]
public uint Depth;
- [FieldOffset(40)]
+ [FieldOffset(16)]
public uint Index;
- [FieldOffset(44)]
+ [FieldOffset(20)]
public byte IsParameterPack;
[SuppressUnmanagedCodeSecurity]
@@ -2149,7 +1980,7 @@ namespace CppSharp
private static void* __CopyValue(TemplateParameterType.Internal native)
{
- var ret = Marshal.AllocHGlobal(48);
+ var ret = Marshal.AllocHGlobal(24);
CppSharp.Parser.AST.TemplateParameterType.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return ret.ToPointer();
}
@@ -2173,7 +2004,7 @@ namespace CppSharp
public TemplateParameterType()
: this((void*) null)
{
- __Instance = Marshal.AllocHGlobal(48);
+ __Instance = Marshal.AllocHGlobal(24);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
Internal.ctor_0((__Instance + __PointerAdjustment));
@@ -2182,7 +2013,7 @@ namespace CppSharp
public TemplateParameterType(CppSharp.Parser.AST.TemplateParameterType _0)
: this((void*) null)
{
- __Instance = Marshal.AllocHGlobal(48);
+ __Instance = Marshal.AllocHGlobal(24);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null))
@@ -2200,16 +2031,21 @@ namespace CppSharp
Marshal.FreeHGlobal(__Instance);
}
- public CppSharp.Parser.AST.TemplateParameter Parameter
+ public CppSharp.Parser.AST.TypeTemplateParameter Parameter
{
get
{
- return CppSharp.Parser.AST.TemplateParameter.__CreateInstance(((Internal*) __Instance)->Parameter);
+ CppSharp.Parser.AST.TypeTemplateParameter __result0;
+ if (((Internal*) __Instance)->Parameter == IntPtr.Zero) __result0 = null;
+ else if (CppSharp.Parser.AST.TypeTemplateParameter.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Parameter))
+ __result0 = (CppSharp.Parser.AST.TypeTemplateParameter) CppSharp.Parser.AST.TypeTemplateParameter.NativeToManagedMap[((Internal*) __Instance)->Parameter];
+ else __result0 = CppSharp.Parser.AST.TypeTemplateParameter.__CreateInstance(((Internal*) __Instance)->Parameter);
+ return __result0;
}
set
{
- ((Internal*) __Instance)->Parameter = ReferenceEquals(value, null) ? new CppSharp.Parser.AST.TemplateParameter.Internal() : *(CppSharp.Parser.AST.TemplateParameter.Internal*) (value.__Instance);
+ ((Internal*) __Instance)->Parameter = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance;
}
}
@@ -3824,7 +3660,7 @@ namespace CppSharp
set
{
- ((Internal*) __Instance)->OriginalPtr = value;
+ ((Internal*) __Instance)->OriginalPtr = (global::System.IntPtr) value;
}
}
}
@@ -7884,12 +7720,12 @@ namespace CppSharp
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
- EntryPoint="?getParameters@Template@AST@CppParser@CppSharp@@QAE?AVTemplateParameter@234@I@Z")]
- internal static extern void getParameters_0(global::System.IntPtr instance, global::System.IntPtr @return, uint i);
+ EntryPoint="?getParameters@Template@AST@CppParser@CppSharp@@QAEPAVDeclaration@234@I@Z")]
+ internal static extern global::System.IntPtr getParameters_0(global::System.IntPtr instance, uint i);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
- EntryPoint="?addParameters@Template@AST@CppParser@CppSharp@@QAEXAAVTemplateParameter@234@@Z")]
+ EntryPoint="?addParameters@Template@AST@CppParser@CppSharp@@QAEXAAPAVDeclaration@234@@Z")]
internal static extern void addParameters_0(global::System.IntPtr instance, global::System.IntPtr s);
[SuppressUnmanagedCodeSecurity]
@@ -7976,14 +7812,18 @@ namespace CppSharp
Marshal.FreeHGlobal(__Instance);
}
- public CppSharp.Parser.AST.TemplateParameter getParameters(uint i)
+ public CppSharp.Parser.AST.Declaration getParameters(uint i)
{
- var __ret = new CppSharp.Parser.AST.TemplateParameter.Internal();
- Internal.getParameters_0((__Instance + __PointerAdjustment), new IntPtr(&__ret), i);
- return CppSharp.Parser.AST.TemplateParameter.__CreateInstance(__ret);
+ var __ret = Internal.getParameters_0((__Instance + __PointerAdjustment), i);
+ CppSharp.Parser.AST.Declaration __result0;
+ if (__ret == IntPtr.Zero) __result0 = null;
+ else if (CppSharp.Parser.AST.Declaration.NativeToManagedMap.ContainsKey(__ret))
+ __result0 = (CppSharp.Parser.AST.Declaration) CppSharp.Parser.AST.Declaration.NativeToManagedMap[__ret];
+ else __result0 = CppSharp.Parser.AST.Declaration.__CreateInstance(__ret);
+ return __result0;
}
- public void addParameters(CppSharp.Parser.AST.TemplateParameter s)
+ public void addParameters(CppSharp.Parser.AST.Declaration s)
{
if (ReferenceEquals(s, null))
throw new global::System.ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
@@ -8024,9 +7864,9 @@ namespace CppSharp
}
}
- public unsafe partial class ClassTemplate : CppSharp.Parser.AST.Template, IDisposable
+ public unsafe partial class TemplateParameter : CppSharp.Parser.AST.Declaration, IDisposable
{
- [StructLayout(LayoutKind.Explicit, Size = 156)]
+ [StructLayout(LayoutKind.Explicit, Size = 140)]
public new partial struct Internal
{
[FieldOffset(0)]
@@ -8069,69 +7909,55 @@ namespace CppSharp
public global::System.IntPtr OriginalPtr;
[FieldOffset(128)]
- public global::System.IntPtr TemplatedDecl;
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
- EntryPoint="??0ClassTemplate@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="??0ClassTemplate@AST@CppParser@CppSharp@@QAE@ABV0123@@Z")]
- internal static extern global::System.IntPtr cctor_1(global::System.IntPtr instance, global::System.IntPtr _0);
+ public uint Depth;
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
- EntryPoint="??1ClassTemplate@AST@CppParser@CppSharp@@QAE@XZ")]
- internal static extern void dtor_0(global::System.IntPtr instance, int delete);
+ [FieldOffset(132)]
+ public uint Index;
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
- EntryPoint="?getSpecializations@ClassTemplate@AST@CppParser@CppSharp@@QAEPAVClassTemplateSpecialization@234@I@Z")]
- internal static extern global::System.IntPtr getSpecializations_0(global::System.IntPtr instance, uint i);
+ [FieldOffset(136)]
+ public byte IsParameterPack;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
- EntryPoint="?addSpecializations@ClassTemplate@AST@CppParser@CppSharp@@QAEXAAPAVClassTemplateSpecialization@234@@Z")]
- internal static extern void addSpecializations_0(global::System.IntPtr instance, global::System.IntPtr s);
+ EntryPoint="??0TemplateParameter@AST@CppParser@CppSharp@@QAE@W4DeclarationKind@123@@Z")]
+ internal static extern global::System.IntPtr ctor_0(global::System.IntPtr instance, CppSharp.Parser.AST.DeclarationKind kind);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
- EntryPoint="?clearSpecializations@ClassTemplate@AST@CppParser@CppSharp@@QAEXXZ")]
- internal static extern void clearSpecializations_0(global::System.IntPtr instance);
+ EntryPoint="??0TemplateParameter@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="?getSpecializationsCount@ClassTemplate@AST@CppParser@CppSharp@@QAEIXZ")]
- internal static extern uint getSpecializationsCount_0(global::System.IntPtr instance);
+ EntryPoint="??1TemplateParameter@AST@CppParser@CppSharp@@QAE@XZ")]
+ internal static extern void dtor_0(global::System.IntPtr instance, int delete);
}
- public static new ClassTemplate __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
+ public static new TemplateParameter __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
{
- return new ClassTemplate(native.ToPointer(), skipVTables);
+ return new TemplateParameter(native.ToPointer(), skipVTables);
}
- public static ClassTemplate __CreateInstance(ClassTemplate.Internal native, bool skipVTables = false)
+ public static TemplateParameter __CreateInstance(TemplateParameter.Internal native, bool skipVTables = false)
{
- return new ClassTemplate(native, skipVTables);
+ return new TemplateParameter(native, skipVTables);
}
- private static void* __CopyValue(ClassTemplate.Internal native)
+ private static void* __CopyValue(TemplateParameter.Internal native)
{
- var ret = Marshal.AllocHGlobal(156);
- CppSharp.Parser.AST.ClassTemplate.Internal.cctor_1(ret, new global::System.IntPtr(&native));
+ var ret = Marshal.AllocHGlobal(140);
+ CppSharp.Parser.AST.TemplateParameter.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return ret.ToPointer();
}
- private ClassTemplate(ClassTemplate.Internal native, bool skipVTables = false)
+ private TemplateParameter(TemplateParameter.Internal native, bool skipVTables = false)
: this(__CopyValue(native), skipVTables)
{
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
}
- protected ClassTemplate(void* native, bool skipVTables = false)
+ protected TemplateParameter(void* native, bool skipVTables = false)
: base((void*) null)
{
__PointerAdjustment = 0;
@@ -8140,19 +7966,20 @@ namespace CppSharp
__Instance = new global::System.IntPtr(native);
}
- public ClassTemplate()
+ public TemplateParameter(CppSharp.Parser.AST.DeclarationKind kind)
: this((void*) null)
{
- __Instance = Marshal.AllocHGlobal(156);
+ __Instance = Marshal.AllocHGlobal(140);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
- Internal.ctor_0((__Instance + __PointerAdjustment));
+ var arg0 = kind;
+ Internal.ctor_0((__Instance + __PointerAdjustment), arg0);
}
- public ClassTemplate(CppSharp.Parser.AST.ClassTemplate _0)
+ public TemplateParameter(CppSharp.Parser.AST.TemplateParameter _0)
: this((void*) null)
{
- __Instance = Marshal.AllocHGlobal(156);
+ __Instance = Marshal.AllocHGlobal(140);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null))
@@ -8170,41 +7997,578 @@ namespace CppSharp
Marshal.FreeHGlobal(__Instance);
}
- public CppSharp.Parser.AST.ClassTemplateSpecialization getSpecializations(uint i)
- {
- var __ret = Internal.getSpecializations_0((__Instance + __PointerAdjustment), i);
- CppSharp.Parser.AST.ClassTemplateSpecialization __result0;
- if (__ret == IntPtr.Zero) __result0 = null;
- else if (CppSharp.Parser.AST.ClassTemplateSpecialization.NativeToManagedMap.ContainsKey(__ret))
- __result0 = (CppSharp.Parser.AST.ClassTemplateSpecialization) CppSharp.Parser.AST.ClassTemplateSpecialization.NativeToManagedMap[__ret];
- else __result0 = CppSharp.Parser.AST.ClassTemplateSpecialization.__CreateInstance(__ret);
- return __result0;
- }
-
- public void addSpecializations(CppSharp.Parser.AST.ClassTemplateSpecialization s)
+ public uint Depth
{
- if (ReferenceEquals(s, null))
- throw new global::System.ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
- var arg0 = s.__Instance;
- Internal.addSpecializations_0((__Instance + __PointerAdjustment), arg0);
- }
+ get
+ {
+ return ((Internal*) __Instance)->Depth;
+ }
- public void clearSpecializations()
- {
- Internal.clearSpecializations_0((__Instance + __PointerAdjustment));
+ set
+ {
+ ((Internal*) __Instance)->Depth = value;
+ }
}
- public uint SpecializationsCount
+ public uint Index
{
get
{
- var __ret = Internal.getSpecializationsCount_0((__Instance + __PointerAdjustment));
- return __ret;
+ return ((Internal*) __Instance)->Index;
}
- }
- }
- public unsafe partial class ClassTemplateSpecialization : CppSharp.Parser.AST.Class, IDisposable
+ set
+ {
+ ((Internal*) __Instance)->Index = value;
+ }
+ }
+
+ public bool IsParameterPack
+ {
+ get
+ {
+ return ((Internal*) __Instance)->IsParameterPack != 0;
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->IsParameterPack = (byte) (value ? 1 : 0);
+ }
+ }
+ }
+
+ public unsafe partial class TypeTemplateParameter : CppSharp.Parser.AST.TemplateParameter, IDisposable
+ {
+ [StructLayout(LayoutKind.Explicit, Size = 148)]
+ public new partial struct Internal
+ {
+ [FieldOffset(0)]
+ public CppSharp.Parser.AST.DeclarationKind Kind;
+
+ [FieldOffset(4)]
+ public CppSharp.Parser.AST.AccessSpecifier Access;
+
+ [FieldOffset(8)]
+ public global::System.IntPtr _Namespace;
+
+ [FieldOffset(12)]
+ public CppSharp.Parser.SourceLocation.Internal Location;
+
+ [FieldOffset(16)]
+ public int LineNumberStart;
+
+ [FieldOffset(20)]
+ public int LineNumberEnd;
+
+ [FieldOffset(48)]
+ public global::System.IntPtr Comment;
+
+ [FieldOffset(76)]
+ public byte IsIncomplete;
+
+ [FieldOffset(77)]
+ public byte IsDependent;
+
+ [FieldOffset(78)]
+ public byte IsImplicit;
+
+ [FieldOffset(80)]
+ public global::System.IntPtr CompleteDeclaration;
+
+ [FieldOffset(84)]
+ public uint DefinitionOrder;
+
+ [FieldOffset(100)]
+ public global::System.IntPtr OriginalPtr;
+
+ [FieldOffset(128)]
+ public uint Depth;
+
+ [FieldOffset(132)]
+ public uint Index;
+
+ [FieldOffset(136)]
+ public byte IsParameterPack;
+
+ [FieldOffset(140)]
+ public CppSharp.Parser.AST.QualifiedType.Internal DefaultArgument;
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
+ EntryPoint="??0TypeTemplateParameter@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="??0TypeTemplateParameter@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="??1TypeTemplateParameter@AST@CppParser@CppSharp@@QAE@XZ")]
+ internal static extern void dtor_0(global::System.IntPtr instance, int delete);
+ }
+
+ public static new TypeTemplateParameter __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
+ {
+ return new TypeTemplateParameter(native.ToPointer(), skipVTables);
+ }
+
+ public static TypeTemplateParameter __CreateInstance(TypeTemplateParameter.Internal native, bool skipVTables = false)
+ {
+ return new TypeTemplateParameter(native, skipVTables);
+ }
+
+ private static void* __CopyValue(TypeTemplateParameter.Internal native)
+ {
+ var ret = Marshal.AllocHGlobal(148);
+ CppSharp.Parser.AST.TypeTemplateParameter.Internal.cctor_1(ret, new global::System.IntPtr(&native));
+ return ret.ToPointer();
+ }
+
+ private TypeTemplateParameter(TypeTemplateParameter.Internal native, bool skipVTables = false)
+ : this(__CopyValue(native), skipVTables)
+ {
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ }
+
+ protected TypeTemplateParameter(void* native, bool skipVTables = false)
+ : base((void*) null)
+ {
+ __PointerAdjustment = 0;
+ if (native == null)
+ return;
+ __Instance = new global::System.IntPtr(native);
+ }
+
+ public TypeTemplateParameter()
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(148);
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ Internal.ctor_0((__Instance + __PointerAdjustment));
+ }
+
+ public TypeTemplateParameter(CppSharp.Parser.AST.TypeTemplateParameter _0)
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(148);
+ __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)
+ {
+ CppSharp.Parser.AST.Declaration __dummy;
+ NativeToManagedMap.TryRemove(__Instance, out __dummy);
+ Internal.dtor_0((__Instance + __PointerAdjustment), 0);
+ if (__ownsNativeInstance)
+ Marshal.FreeHGlobal(__Instance);
+ }
+
+ public CppSharp.Parser.AST.QualifiedType DefaultArgument
+ {
+ get
+ {
+ return CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->DefaultArgument);
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->DefaultArgument = ReferenceEquals(value, null) ? new CppSharp.Parser.AST.QualifiedType.Internal() : *(CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance);
+ }
+ }
+ }
+
+ public unsafe partial class NonTypeTemplateParameter : CppSharp.Parser.AST.TemplateParameter, IDisposable
+ {
+ [StructLayout(LayoutKind.Explicit, Size = 152)]
+ public new partial struct Internal
+ {
+ [FieldOffset(0)]
+ public CppSharp.Parser.AST.DeclarationKind Kind;
+
+ [FieldOffset(4)]
+ public CppSharp.Parser.AST.AccessSpecifier Access;
+
+ [FieldOffset(8)]
+ public global::System.IntPtr _Namespace;
+
+ [FieldOffset(12)]
+ public CppSharp.Parser.SourceLocation.Internal Location;
+
+ [FieldOffset(16)]
+ public int LineNumberStart;
+
+ [FieldOffset(20)]
+ public int LineNumberEnd;
+
+ [FieldOffset(48)]
+ public global::System.IntPtr Comment;
+
+ [FieldOffset(76)]
+ public byte IsIncomplete;
+
+ [FieldOffset(77)]
+ public byte IsDependent;
+
+ [FieldOffset(78)]
+ public byte IsImplicit;
+
+ [FieldOffset(80)]
+ public global::System.IntPtr CompleteDeclaration;
+
+ [FieldOffset(84)]
+ public uint DefinitionOrder;
+
+ [FieldOffset(100)]
+ public global::System.IntPtr OriginalPtr;
+
+ [FieldOffset(128)]
+ public uint Depth;
+
+ [FieldOffset(132)]
+ public uint Index;
+
+ [FieldOffset(136)]
+ public byte IsParameterPack;
+
+ [FieldOffset(140)]
+ public global::System.IntPtr DefaultArgument;
+
+ [FieldOffset(144)]
+ public uint Position;
+
+ [FieldOffset(148)]
+ public byte IsPackExpansion;
+
+ [FieldOffset(149)]
+ public byte IsExpandedParameterPack;
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
+ EntryPoint="??0NonTypeTemplateParameter@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="??0NonTypeTemplateParameter@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="??1NonTypeTemplateParameter@AST@CppParser@CppSharp@@QAE@XZ")]
+ internal static extern void dtor_0(global::System.IntPtr instance, int delete);
+ }
+
+ public static new NonTypeTemplateParameter __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
+ {
+ return new NonTypeTemplateParameter(native.ToPointer(), skipVTables);
+ }
+
+ public static NonTypeTemplateParameter __CreateInstance(NonTypeTemplateParameter.Internal native, bool skipVTables = false)
+ {
+ return new NonTypeTemplateParameter(native, skipVTables);
+ }
+
+ private static void* __CopyValue(NonTypeTemplateParameter.Internal native)
+ {
+ var ret = Marshal.AllocHGlobal(152);
+ CppSharp.Parser.AST.NonTypeTemplateParameter.Internal.cctor_1(ret, new global::System.IntPtr(&native));
+ return ret.ToPointer();
+ }
+
+ private NonTypeTemplateParameter(NonTypeTemplateParameter.Internal native, bool skipVTables = false)
+ : this(__CopyValue(native), skipVTables)
+ {
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ }
+
+ protected NonTypeTemplateParameter(void* native, bool skipVTables = false)
+ : base((void*) null)
+ {
+ __PointerAdjustment = 0;
+ if (native == null)
+ return;
+ __Instance = new global::System.IntPtr(native);
+ }
+
+ public NonTypeTemplateParameter()
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(152);
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ Internal.ctor_0((__Instance + __PointerAdjustment));
+ }
+
+ public NonTypeTemplateParameter(CppSharp.Parser.AST.NonTypeTemplateParameter _0)
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(152);
+ __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)
+ {
+ CppSharp.Parser.AST.Declaration __dummy;
+ NativeToManagedMap.TryRemove(__Instance, out __dummy);
+ Internal.dtor_0((__Instance + __PointerAdjustment), 0);
+ if (__ownsNativeInstance)
+ Marshal.FreeHGlobal(__Instance);
+ }
+
+ public CppSharp.Parser.AST.Expression DefaultArgument
+ {
+ get
+ {
+ CppSharp.Parser.AST.Expression __result0;
+ if (((Internal*) __Instance)->DefaultArgument == IntPtr.Zero) __result0 = null;
+ else if (CppSharp.Parser.AST.Expression.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->DefaultArgument))
+ __result0 = (CppSharp.Parser.AST.Expression) CppSharp.Parser.AST.Expression.NativeToManagedMap[((Internal*) __Instance)->DefaultArgument];
+ else __result0 = CppSharp.Parser.AST.Expression.__CreateInstance(((Internal*) __Instance)->DefaultArgument);
+ return __result0;
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->DefaultArgument = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance;
+ }
+ }
+
+ public uint Position
+ {
+ get
+ {
+ return ((Internal*) __Instance)->Position;
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->Position = value;
+ }
+ }
+
+ public bool IsPackExpansion
+ {
+ get
+ {
+ return ((Internal*) __Instance)->IsPackExpansion != 0;
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->IsPackExpansion = (byte) (value ? 1 : 0);
+ }
+ }
+
+ public bool IsExpandedParameterPack
+ {
+ get
+ {
+ return ((Internal*) __Instance)->IsExpandedParameterPack != 0;
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->IsExpandedParameterPack = (byte) (value ? 1 : 0);
+ }
+ }
+ }
+
+ public unsafe partial class ClassTemplate : CppSharp.Parser.AST.Template, IDisposable
+ {
+ [StructLayout(LayoutKind.Explicit, Size = 156)]
+ public new partial struct Internal
+ {
+ [FieldOffset(0)]
+ public CppSharp.Parser.AST.DeclarationKind Kind;
+
+ [FieldOffset(4)]
+ public CppSharp.Parser.AST.AccessSpecifier Access;
+
+ [FieldOffset(8)]
+ public global::System.IntPtr _Namespace;
+
+ [FieldOffset(12)]
+ public CppSharp.Parser.SourceLocation.Internal Location;
+
+ [FieldOffset(16)]
+ public int LineNumberStart;
+
+ [FieldOffset(20)]
+ public int LineNumberEnd;
+
+ [FieldOffset(48)]
+ public global::System.IntPtr Comment;
+
+ [FieldOffset(76)]
+ public byte IsIncomplete;
+
+ [FieldOffset(77)]
+ public byte IsDependent;
+
+ [FieldOffset(78)]
+ public byte IsImplicit;
+
+ [FieldOffset(80)]
+ public global::System.IntPtr CompleteDeclaration;
+
+ [FieldOffset(84)]
+ public uint DefinitionOrder;
+
+ [FieldOffset(100)]
+ public global::System.IntPtr OriginalPtr;
+
+ [FieldOffset(128)]
+ public global::System.IntPtr TemplatedDecl;
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
+ EntryPoint="??0ClassTemplate@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="??0ClassTemplate@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="??1ClassTemplate@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="?getSpecializations@ClassTemplate@AST@CppParser@CppSharp@@QAEPAVClassTemplateSpecialization@234@I@Z")]
+ internal static extern global::System.IntPtr getSpecializations_0(global::System.IntPtr instance, uint i);
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
+ EntryPoint="?addSpecializations@ClassTemplate@AST@CppParser@CppSharp@@QAEXAAPAVClassTemplateSpecialization@234@@Z")]
+ internal static extern void addSpecializations_0(global::System.IntPtr instance, global::System.IntPtr s);
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
+ EntryPoint="?clearSpecializations@ClassTemplate@AST@CppParser@CppSharp@@QAEXXZ")]
+ internal static extern void clearSpecializations_0(global::System.IntPtr instance);
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
+ EntryPoint="?getSpecializationsCount@ClassTemplate@AST@CppParser@CppSharp@@QAEIXZ")]
+ internal static extern uint getSpecializationsCount_0(global::System.IntPtr instance);
+ }
+
+ public static new ClassTemplate __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
+ {
+ return new ClassTemplate(native.ToPointer(), skipVTables);
+ }
+
+ public static ClassTemplate __CreateInstance(ClassTemplate.Internal native, bool skipVTables = false)
+ {
+ return new ClassTemplate(native, skipVTables);
+ }
+
+ private static void* __CopyValue(ClassTemplate.Internal native)
+ {
+ var ret = Marshal.AllocHGlobal(156);
+ CppSharp.Parser.AST.ClassTemplate.Internal.cctor_1(ret, new global::System.IntPtr(&native));
+ return ret.ToPointer();
+ }
+
+ private ClassTemplate(ClassTemplate.Internal native, bool skipVTables = false)
+ : this(__CopyValue(native), skipVTables)
+ {
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ }
+
+ protected ClassTemplate(void* native, bool skipVTables = false)
+ : base((void*) null)
+ {
+ __PointerAdjustment = 0;
+ if (native == null)
+ return;
+ __Instance = new global::System.IntPtr(native);
+ }
+
+ public ClassTemplate()
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(156);
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ Internal.ctor_0((__Instance + __PointerAdjustment));
+ }
+
+ public ClassTemplate(CppSharp.Parser.AST.ClassTemplate _0)
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(156);
+ __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)
+ {
+ CppSharp.Parser.AST.Declaration __dummy;
+ NativeToManagedMap.TryRemove(__Instance, out __dummy);
+ Internal.dtor_0((__Instance + __PointerAdjustment), 0);
+ if (__ownsNativeInstance)
+ Marshal.FreeHGlobal(__Instance);
+ }
+
+ public CppSharp.Parser.AST.ClassTemplateSpecialization getSpecializations(uint i)
+ {
+ var __ret = Internal.getSpecializations_0((__Instance + __PointerAdjustment), i);
+ CppSharp.Parser.AST.ClassTemplateSpecialization __result0;
+ if (__ret == IntPtr.Zero) __result0 = null;
+ else if (CppSharp.Parser.AST.ClassTemplateSpecialization.NativeToManagedMap.ContainsKey(__ret))
+ __result0 = (CppSharp.Parser.AST.ClassTemplateSpecialization) CppSharp.Parser.AST.ClassTemplateSpecialization.NativeToManagedMap[__ret];
+ else __result0 = CppSharp.Parser.AST.ClassTemplateSpecialization.__CreateInstance(__ret);
+ return __result0;
+ }
+
+ public void addSpecializations(CppSharp.Parser.AST.ClassTemplateSpecialization 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.addSpecializations_0((__Instance + __PointerAdjustment), arg0);
+ }
+
+ public void clearSpecializations()
+ {
+ Internal.clearSpecializations_0((__Instance + __PointerAdjustment));
+ }
+
+ public uint SpecializationsCount
+ {
+ get
+ {
+ var __ret = Internal.getSpecializationsCount_0((__Instance + __PointerAdjustment));
+ return __ret;
+ }
+ }
+ }
+
+ public unsafe partial class ClassTemplateSpecialization : CppSharp.Parser.AST.Class, IDisposable
{
[StructLayout(LayoutKind.Explicit, Size = 320)]
public new partial struct Internal
@@ -8812,7 +9176,7 @@ namespace CppSharp
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
EntryPoint="??0FunctionTemplateSpecialization@AST@CppParser@CppSharp@@QAE@ABV0123@@Z")]
- internal static extern global::System.IntPtr cctor_2(global::System.IntPtr instance, global::System.IntPtr _0);
+ 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,
@@ -8861,7 +9225,7 @@ namespace CppSharp
private static void* __CopyValue(FunctionTemplateSpecialization.Internal native)
{
var ret = Marshal.AllocHGlobal(24);
- CppSharp.Parser.AST.FunctionTemplateSpecialization.Internal.cctor_2(ret, new global::System.IntPtr(&native));
+ CppSharp.Parser.AST.FunctionTemplateSpecialization.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return ret.ToPointer();
}
@@ -8895,7 +9259,7 @@ namespace CppSharp
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_2((__Instance + __PointerAdjustment), arg0);
+ Internal.cctor_1((__Instance + __PointerAdjustment), arg0);
}
public void Dispose()
@@ -9249,7 +9613,7 @@ namespace CppSharp
set
{
- ((Internal*) __Instance)->OriginalPtr = value;
+ ((Internal*) __Instance)->OriginalPtr = (global::System.IntPtr) value;
}
}
diff --git a/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/AST.cs b/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/AST.cs
index 5b80800c..21935bca 100644
--- a/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/AST.cs
+++ b/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/AST.cs
@@ -54,7 +54,9 @@ namespace CppSharp
MacroDefinition = 18,
MacroExpansion = 19,
TranslationUnit = 20,
- Friend = 21
+ Friend = 21,
+ TemplateTypeParm = 22,
+ NonTypeTemplateParm = 23
}
public enum AccessSpecifier
@@ -1927,180 +1929,9 @@ namespace CppSharp
}
}
- public unsafe partial class TemplateParameter : IDisposable
- {
- [StructLayout(LayoutKind.Explicit, Size = 32)]
- public partial struct Internal
- {
- [FieldOffset(24)]
- public byte IsTypeParameter;
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST17TemplateParameterC2Ev")]
- internal static extern void ctor_0(global::System.IntPtr instance);
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST17TemplateParameterC2ERKS2_")]
- 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="_ZN8CppSharp9CppParser3AST17TemplateParameterD2Ev")]
- internal static extern void dtor_0(global::System.IntPtr instance);
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZNK8CppSharp9CppParser3AST17TemplateParametereqERKS2_")]
- [return: MarshalAsAttribute(UnmanagedType.I1)]
- internal static extern bool OperatorEqualEqual_0(global::System.IntPtr instance, global::System.IntPtr param);
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST17TemplateParameter7getNameEv")]
- internal static extern global::System.IntPtr getName_0(global::System.IntPtr instance);
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST17TemplateParameter7setNameEPKc")]
- internal static extern void setName_0(global::System.IntPtr instance, global::System.IntPtr s);
- }
-
- public global::System.IntPtr __Instance { get; protected set; }
-
- protected int __PointerAdjustment;
- public static readonly System.Collections.Concurrent.ConcurrentDictionary NativeToManagedMap = new System.Collections.Concurrent.ConcurrentDictionary();
- protected void*[] __OriginalVTables;
-
- protected bool __ownsNativeInstance;
-
- public static TemplateParameter __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
- {
- return new TemplateParameter(native.ToPointer(), skipVTables);
- }
-
- public static TemplateParameter __CreateInstance(TemplateParameter.Internal native, bool skipVTables = false)
- {
- return new TemplateParameter(native, skipVTables);
- }
-
- private static void* __CopyValue(TemplateParameter.Internal native)
- {
- var ret = Marshal.AllocHGlobal(32);
- CppSharp.Parser.AST.TemplateParameter.Internal.cctor_1(ret, new global::System.IntPtr(&native));
- return ret.ToPointer();
- }
-
- private TemplateParameter(TemplateParameter.Internal native, bool skipVTables = false)
- : this(__CopyValue(native), skipVTables)
- {
- __ownsNativeInstance = true;
- NativeToManagedMap[__Instance] = this;
- }
-
- protected TemplateParameter(void* native, bool skipVTables = false)
- {
- if (native == null)
- return;
- __Instance = new global::System.IntPtr(native);
- }
-
- public TemplateParameter()
- {
- __Instance = Marshal.AllocHGlobal(32);
- __ownsNativeInstance = true;
- NativeToManagedMap[__Instance] = this;
- Internal.ctor_0((__Instance + __PointerAdjustment));
- }
-
- public TemplateParameter(CppSharp.Parser.AST.TemplateParameter _0)
- {
- __Instance = Marshal.AllocHGlobal(32);
- __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);
- }
-
- public void Dispose()
- {
- Dispose(disposing: true);
- }
-
- protected virtual void Dispose(bool disposing)
- {
- CppSharp.Parser.AST.TemplateParameter __dummy;
- NativeToManagedMap.TryRemove(__Instance, out __dummy);
- Internal.dtor_0((__Instance + __PointerAdjustment));
- if (__ownsNativeInstance)
- Marshal.FreeHGlobal(__Instance);
- }
-
- public static bool operator !=(CppSharp.Parser.AST.TemplateParameter __op, CppSharp.Parser.AST.TemplateParameter param)
- {
- return !(__op == param);
- }
-
- public static bool operator ==(CppSharp.Parser.AST.TemplateParameter __op, CppSharp.Parser.AST.TemplateParameter param)
- {
- bool __opNull = ReferenceEquals(__op, null);
- bool paramNull = ReferenceEquals(param, null);
- if (__opNull || paramNull)
- return __opNull && paramNull;
- var arg0 = __op.__Instance;
- var arg1 = param.__Instance;
- var __ret = Internal.OperatorEqualEqual_0(arg0, arg1);
- return __ret;
- }
-
- public override bool Equals(object obj)
- {
- return this == obj as TemplateParameter;
- }
-
- public override int GetHashCode()
- {
- if (__Instance == global::System.IntPtr.Zero)
- return global::System.IntPtr.Zero.GetHashCode();
- return (*(Internal*) __Instance).GetHashCode();
- }
-
- public string Name
- {
- get
- {
- var __ret = Internal.getName_0((__Instance + __PointerAdjustment));
- return Marshal.PtrToStringAnsi(__ret);
- }
-
- set
- {
- var arg0 = Marshal.StringToHGlobalAnsi(value);
- Internal.setName_0((__Instance + __PointerAdjustment), arg0);
- Marshal.FreeHGlobal(arg0);
- }
- }
-
- public bool IsTypeParameter
- {
- get
- {
- return ((Internal*) __Instance)->IsTypeParameter != 0;
- }
-
- set
- {
- ((Internal*) __Instance)->IsTypeParameter = (byte) (value ? 1 : 0);
- }
- }
- }
-
public unsafe partial class TemplateParameterType : CppSharp.Parser.AST.Type, IDisposable
{
- [StructLayout(LayoutKind.Explicit, Size = 56)]
+ [StructLayout(LayoutKind.Explicit, Size = 32)]
public new partial struct Internal
{
[FieldOffset(0)]
@@ -2110,15 +1941,15 @@ namespace CppSharp
public byte IsDependent;
[FieldOffset(8)]
- public CppSharp.Parser.AST.TemplateParameter.Internal Parameter;
+ public global::System.IntPtr Parameter;
- [FieldOffset(40)]
+ [FieldOffset(16)]
public uint Depth;
- [FieldOffset(44)]
+ [FieldOffset(20)]
public uint Index;
- [FieldOffset(48)]
+ [FieldOffset(24)]
public byte IsParameterPack;
[SuppressUnmanagedCodeSecurity]
@@ -2149,7 +1980,7 @@ namespace CppSharp
private static void* __CopyValue(TemplateParameterType.Internal native)
{
- var ret = Marshal.AllocHGlobal(56);
+ var ret = Marshal.AllocHGlobal(32);
CppSharp.Parser.AST.TemplateParameterType.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return ret.ToPointer();
}
@@ -2173,7 +2004,7 @@ namespace CppSharp
public TemplateParameterType()
: this((void*) null)
{
- __Instance = Marshal.AllocHGlobal(56);
+ __Instance = Marshal.AllocHGlobal(32);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
Internal.ctor_0((__Instance + __PointerAdjustment));
@@ -2182,7 +2013,7 @@ namespace CppSharp
public TemplateParameterType(CppSharp.Parser.AST.TemplateParameterType _0)
: this((void*) null)
{
- __Instance = Marshal.AllocHGlobal(56);
+ __Instance = Marshal.AllocHGlobal(32);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null))
@@ -2200,16 +2031,21 @@ namespace CppSharp
Marshal.FreeHGlobal(__Instance);
}
- public CppSharp.Parser.AST.TemplateParameter Parameter
+ public CppSharp.Parser.AST.TypeTemplateParameter Parameter
{
get
{
- return CppSharp.Parser.AST.TemplateParameter.__CreateInstance(((Internal*) __Instance)->Parameter);
+ CppSharp.Parser.AST.TypeTemplateParameter __result0;
+ if (((Internal*) __Instance)->Parameter == IntPtr.Zero) __result0 = null;
+ else if (CppSharp.Parser.AST.TypeTemplateParameter.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Parameter))
+ __result0 = (CppSharp.Parser.AST.TypeTemplateParameter) CppSharp.Parser.AST.TypeTemplateParameter.NativeToManagedMap[((Internal*) __Instance)->Parameter];
+ else __result0 = CppSharp.Parser.AST.TypeTemplateParameter.__CreateInstance(((Internal*) __Instance)->Parameter);
+ return __result0;
}
set
{
- ((Internal*) __Instance)->Parameter = ReferenceEquals(value, null) ? new CppSharp.Parser.AST.TemplateParameter.Internal() : *(CppSharp.Parser.AST.TemplateParameter.Internal*) (value.__Instance);
+ ((Internal*) __Instance)->Parameter = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance;
}
}
@@ -3823,7 +3659,7 @@ namespace CppSharp
set
{
- ((Internal*) __Instance)->OriginalPtr = value;
+ ((Internal*) __Instance)->OriginalPtr = (global::System.IntPtr) value;
}
}
}
@@ -7884,11 +7720,11 @@ namespace CppSharp
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST8Template13getParametersEj")]
- internal static extern void getParameters_0(global::System.IntPtr @return, global::System.IntPtr instance, uint i);
+ internal static extern global::System.IntPtr getParameters_0(global::System.IntPtr instance, uint i);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST8Template13addParametersERNS1_17TemplateParameterE")]
+ EntryPoint="_ZN8CppSharp9CppParser3AST8Template13addParametersERPNS1_11DeclarationE")]
internal static extern void addParameters_0(global::System.IntPtr instance, global::System.IntPtr s);
[SuppressUnmanagedCodeSecurity]
@@ -7975,14 +7811,18 @@ namespace CppSharp
Marshal.FreeHGlobal(__Instance);
}
- public CppSharp.Parser.AST.TemplateParameter getParameters(uint i)
+ public CppSharp.Parser.AST.Declaration getParameters(uint i)
{
- var __ret = new CppSharp.Parser.AST.TemplateParameter.Internal();
- Internal.getParameters_0(new IntPtr(&__ret), (__Instance + __PointerAdjustment), i);
- return CppSharp.Parser.AST.TemplateParameter.__CreateInstance(__ret);
+ var __ret = Internal.getParameters_0((__Instance + __PointerAdjustment), i);
+ CppSharp.Parser.AST.Declaration __result0;
+ if (__ret == IntPtr.Zero) __result0 = null;
+ else if (CppSharp.Parser.AST.Declaration.NativeToManagedMap.ContainsKey(__ret))
+ __result0 = (CppSharp.Parser.AST.Declaration) CppSharp.Parser.AST.Declaration.NativeToManagedMap[__ret];
+ else __result0 = CppSharp.Parser.AST.Declaration.__CreateInstance(__ret);
+ return __result0;
}
- public void addParameters(CppSharp.Parser.AST.TemplateParameter s)
+ public void addParameters(CppSharp.Parser.AST.Declaration s)
{
if (ReferenceEquals(s, null))
throw new global::System.ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
@@ -8023,9 +7863,9 @@ namespace CppSharp
}
}
- public unsafe partial class ClassTemplate : CppSharp.Parser.AST.Template, IDisposable
+ public unsafe partial class TemplateParameter : CppSharp.Parser.AST.Declaration, IDisposable
{
- [StructLayout(LayoutKind.Explicit, Size = 224)]
+ [StructLayout(LayoutKind.Explicit, Size = 184)]
public new partial struct Internal
{
[FieldOffset(0)]
@@ -8068,69 +7908,55 @@ namespace CppSharp
public global::System.IntPtr OriginalPtr;
[FieldOffset(168)]
- public global::System.IntPtr TemplatedDecl;
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplateC2Ev")]
- internal static extern void ctor_0(global::System.IntPtr instance);
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplateC2ERKS2_")]
- internal static extern void cctor_1(global::System.IntPtr instance, global::System.IntPtr _0);
+ public uint Depth;
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplateD2Ev")]
- internal static extern void dtor_0(global::System.IntPtr instance);
+ [FieldOffset(172)]
+ public uint Index;
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplate18getSpecializationsEj")]
- internal static extern global::System.IntPtr getSpecializations_0(global::System.IntPtr instance, uint i);
+ [FieldOffset(176)]
+ public byte IsParameterPack;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplate18addSpecializationsERPNS1_27ClassTemplateSpecializationE")]
- internal static extern void addSpecializations_0(global::System.IntPtr instance, global::System.IntPtr s);
+ EntryPoint="_ZN8CppSharp9CppParser3AST17TemplateParameterC2ENS1_15DeclarationKindE")]
+ internal static extern void ctor_0(global::System.IntPtr instance, CppSharp.Parser.AST.DeclarationKind kind);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplate20clearSpecializationsEv")]
- internal static extern void clearSpecializations_0(global::System.IntPtr instance);
+ EntryPoint="_ZN8CppSharp9CppParser3AST17TemplateParameterC2ERKS2_")]
+ 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="_ZN8CppSharp9CppParser3AST13ClassTemplate23getSpecializationsCountEv")]
- internal static extern uint getSpecializationsCount_0(global::System.IntPtr instance);
+ EntryPoint="_ZN8CppSharp9CppParser3AST17TemplateParameterD2Ev")]
+ internal static extern void dtor_0(global::System.IntPtr instance);
}
- public static new ClassTemplate __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
+ public static new TemplateParameter __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
{
- return new ClassTemplate(native.ToPointer(), skipVTables);
+ return new TemplateParameter(native.ToPointer(), skipVTables);
}
- public static ClassTemplate __CreateInstance(ClassTemplate.Internal native, bool skipVTables = false)
+ public static TemplateParameter __CreateInstance(TemplateParameter.Internal native, bool skipVTables = false)
{
- return new ClassTemplate(native, skipVTables);
+ return new TemplateParameter(native, skipVTables);
}
- private static void* __CopyValue(ClassTemplate.Internal native)
+ private static void* __CopyValue(TemplateParameter.Internal native)
{
- var ret = Marshal.AllocHGlobal(224);
- CppSharp.Parser.AST.ClassTemplate.Internal.cctor_1(ret, new global::System.IntPtr(&native));
+ var ret = Marshal.AllocHGlobal(184);
+ CppSharp.Parser.AST.TemplateParameter.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return ret.ToPointer();
}
- private ClassTemplate(ClassTemplate.Internal native, bool skipVTables = false)
+ private TemplateParameter(TemplateParameter.Internal native, bool skipVTables = false)
: this(__CopyValue(native), skipVTables)
{
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
}
- protected ClassTemplate(void* native, bool skipVTables = false)
+ protected TemplateParameter(void* native, bool skipVTables = false)
: base((void*) null)
{
__PointerAdjustment = 0;
@@ -8139,19 +7965,20 @@ namespace CppSharp
__Instance = new global::System.IntPtr(native);
}
- public ClassTemplate()
+ public TemplateParameter(CppSharp.Parser.AST.DeclarationKind kind)
: this((void*) null)
{
- __Instance = Marshal.AllocHGlobal(224);
+ __Instance = Marshal.AllocHGlobal(184);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
- Internal.ctor_0((__Instance + __PointerAdjustment));
+ var arg0 = kind;
+ Internal.ctor_0((__Instance + __PointerAdjustment), arg0);
}
- public ClassTemplate(CppSharp.Parser.AST.ClassTemplate _0)
+ public TemplateParameter(CppSharp.Parser.AST.TemplateParameter _0)
: this((void*) null)
{
- __Instance = Marshal.AllocHGlobal(224);
+ __Instance = Marshal.AllocHGlobal(184);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null))
@@ -8169,36 +7996,573 @@ namespace CppSharp
Marshal.FreeHGlobal(__Instance);
}
- public CppSharp.Parser.AST.ClassTemplateSpecialization getSpecializations(uint i)
- {
- var __ret = Internal.getSpecializations_0((__Instance + __PointerAdjustment), i);
- CppSharp.Parser.AST.ClassTemplateSpecialization __result0;
- if (__ret == IntPtr.Zero) __result0 = null;
- else if (CppSharp.Parser.AST.ClassTemplateSpecialization.NativeToManagedMap.ContainsKey(__ret))
- __result0 = (CppSharp.Parser.AST.ClassTemplateSpecialization) CppSharp.Parser.AST.ClassTemplateSpecialization.NativeToManagedMap[__ret];
- else __result0 = CppSharp.Parser.AST.ClassTemplateSpecialization.__CreateInstance(__ret);
- return __result0;
- }
-
- public void addSpecializations(CppSharp.Parser.AST.ClassTemplateSpecialization s)
+ public uint Depth
{
- if (ReferenceEquals(s, null))
- throw new global::System.ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
- var arg0 = s.__Instance;
- Internal.addSpecializations_0((__Instance + __PointerAdjustment), arg0);
- }
+ get
+ {
+ return ((Internal*) __Instance)->Depth;
+ }
- public void clearSpecializations()
- {
- Internal.clearSpecializations_0((__Instance + __PointerAdjustment));
+ set
+ {
+ ((Internal*) __Instance)->Depth = value;
+ }
}
- public uint SpecializationsCount
+ public uint Index
{
get
{
- var __ret = Internal.getSpecializationsCount_0((__Instance + __PointerAdjustment));
- return __ret;
+ return ((Internal*) __Instance)->Index;
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->Index = value;
+ }
+ }
+
+ public bool IsParameterPack
+ {
+ get
+ {
+ return ((Internal*) __Instance)->IsParameterPack != 0;
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->IsParameterPack = (byte) (value ? 1 : 0);
+ }
+ }
+ }
+
+ public unsafe partial class TypeTemplateParameter : CppSharp.Parser.AST.TemplateParameter, IDisposable
+ {
+ [StructLayout(LayoutKind.Explicit, Size = 200)]
+ public new partial struct Internal
+ {
+ [FieldOffset(0)]
+ public CppSharp.Parser.AST.DeclarationKind Kind;
+
+ [FieldOffset(4)]
+ public CppSharp.Parser.AST.AccessSpecifier Access;
+
+ [FieldOffset(8)]
+ public global::System.IntPtr _Namespace;
+
+ [FieldOffset(16)]
+ public CppSharp.Parser.SourceLocation.Internal Location;
+
+ [FieldOffset(20)]
+ public int LineNumberStart;
+
+ [FieldOffset(24)]
+ public int LineNumberEnd;
+
+ [FieldOffset(56)]
+ public global::System.IntPtr Comment;
+
+ [FieldOffset(88)]
+ public byte IsIncomplete;
+
+ [FieldOffset(89)]
+ public byte IsDependent;
+
+ [FieldOffset(90)]
+ public byte IsImplicit;
+
+ [FieldOffset(96)]
+ public global::System.IntPtr CompleteDeclaration;
+
+ [FieldOffset(104)]
+ public uint DefinitionOrder;
+
+ [FieldOffset(136)]
+ public global::System.IntPtr OriginalPtr;
+
+ [FieldOffset(168)]
+ public uint Depth;
+
+ [FieldOffset(172)]
+ public uint Index;
+
+ [FieldOffset(176)]
+ public byte IsParameterPack;
+
+ [FieldOffset(184)]
+ public CppSharp.Parser.AST.QualifiedType.Internal DefaultArgument;
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST21TypeTemplateParameterC2Ev")]
+ internal static extern void ctor_0(global::System.IntPtr instance);
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST21TypeTemplateParameterC2ERKS2_")]
+ 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="_ZN8CppSharp9CppParser3AST21TypeTemplateParameterD2Ev")]
+ internal static extern void dtor_0(global::System.IntPtr instance);
+ }
+
+ public static new TypeTemplateParameter __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
+ {
+ return new TypeTemplateParameter(native.ToPointer(), skipVTables);
+ }
+
+ public static TypeTemplateParameter __CreateInstance(TypeTemplateParameter.Internal native, bool skipVTables = false)
+ {
+ return new TypeTemplateParameter(native, skipVTables);
+ }
+
+ private static void* __CopyValue(TypeTemplateParameter.Internal native)
+ {
+ var ret = Marshal.AllocHGlobal(200);
+ CppSharp.Parser.AST.TypeTemplateParameter.Internal.cctor_1(ret, new global::System.IntPtr(&native));
+ return ret.ToPointer();
+ }
+
+ private TypeTemplateParameter(TypeTemplateParameter.Internal native, bool skipVTables = false)
+ : this(__CopyValue(native), skipVTables)
+ {
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ }
+
+ protected TypeTemplateParameter(void* native, bool skipVTables = false)
+ : base((void*) null)
+ {
+ __PointerAdjustment = 0;
+ if (native == null)
+ return;
+ __Instance = new global::System.IntPtr(native);
+ }
+
+ public TypeTemplateParameter()
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(200);
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ Internal.ctor_0((__Instance + __PointerAdjustment));
+ }
+
+ public TypeTemplateParameter(CppSharp.Parser.AST.TypeTemplateParameter _0)
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(200);
+ __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)
+ {
+ CppSharp.Parser.AST.Declaration __dummy;
+ NativeToManagedMap.TryRemove(__Instance, out __dummy);
+ Internal.dtor_0((__Instance + __PointerAdjustment));
+ if (__ownsNativeInstance)
+ Marshal.FreeHGlobal(__Instance);
+ }
+
+ public CppSharp.Parser.AST.QualifiedType DefaultArgument
+ {
+ get
+ {
+ return CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->DefaultArgument);
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->DefaultArgument = ReferenceEquals(value, null) ? new CppSharp.Parser.AST.QualifiedType.Internal() : *(CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance);
+ }
+ }
+ }
+
+ public unsafe partial class NonTypeTemplateParameter : CppSharp.Parser.AST.TemplateParameter, IDisposable
+ {
+ [StructLayout(LayoutKind.Explicit, Size = 200)]
+ public new partial struct Internal
+ {
+ [FieldOffset(0)]
+ public CppSharp.Parser.AST.DeclarationKind Kind;
+
+ [FieldOffset(4)]
+ public CppSharp.Parser.AST.AccessSpecifier Access;
+
+ [FieldOffset(8)]
+ public global::System.IntPtr _Namespace;
+
+ [FieldOffset(16)]
+ public CppSharp.Parser.SourceLocation.Internal Location;
+
+ [FieldOffset(20)]
+ public int LineNumberStart;
+
+ [FieldOffset(24)]
+ public int LineNumberEnd;
+
+ [FieldOffset(56)]
+ public global::System.IntPtr Comment;
+
+ [FieldOffset(88)]
+ public byte IsIncomplete;
+
+ [FieldOffset(89)]
+ public byte IsDependent;
+
+ [FieldOffset(90)]
+ public byte IsImplicit;
+
+ [FieldOffset(96)]
+ public global::System.IntPtr CompleteDeclaration;
+
+ [FieldOffset(104)]
+ public uint DefinitionOrder;
+
+ [FieldOffset(136)]
+ public global::System.IntPtr OriginalPtr;
+
+ [FieldOffset(168)]
+ public uint Depth;
+
+ [FieldOffset(172)]
+ public uint Index;
+
+ [FieldOffset(176)]
+ public byte IsParameterPack;
+
+ [FieldOffset(184)]
+ public global::System.IntPtr DefaultArgument;
+
+ [FieldOffset(192)]
+ public uint Position;
+
+ [FieldOffset(196)]
+ public byte IsPackExpansion;
+
+ [FieldOffset(197)]
+ public byte IsExpandedParameterPack;
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST24NonTypeTemplateParameterC2Ev")]
+ internal static extern void ctor_0(global::System.IntPtr instance);
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST24NonTypeTemplateParameterC2ERKS2_")]
+ 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="_ZN8CppSharp9CppParser3AST24NonTypeTemplateParameterD2Ev")]
+ internal static extern void dtor_0(global::System.IntPtr instance);
+ }
+
+ public static new NonTypeTemplateParameter __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
+ {
+ return new NonTypeTemplateParameter(native.ToPointer(), skipVTables);
+ }
+
+ public static NonTypeTemplateParameter __CreateInstance(NonTypeTemplateParameter.Internal native, bool skipVTables = false)
+ {
+ return new NonTypeTemplateParameter(native, skipVTables);
+ }
+
+ private static void* __CopyValue(NonTypeTemplateParameter.Internal native)
+ {
+ var ret = Marshal.AllocHGlobal(200);
+ CppSharp.Parser.AST.NonTypeTemplateParameter.Internal.cctor_1(ret, new global::System.IntPtr(&native));
+ return ret.ToPointer();
+ }
+
+ private NonTypeTemplateParameter(NonTypeTemplateParameter.Internal native, bool skipVTables = false)
+ : this(__CopyValue(native), skipVTables)
+ {
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ }
+
+ protected NonTypeTemplateParameter(void* native, bool skipVTables = false)
+ : base((void*) null)
+ {
+ __PointerAdjustment = 0;
+ if (native == null)
+ return;
+ __Instance = new global::System.IntPtr(native);
+ }
+
+ public NonTypeTemplateParameter()
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(200);
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ Internal.ctor_0((__Instance + __PointerAdjustment));
+ }
+
+ public NonTypeTemplateParameter(CppSharp.Parser.AST.NonTypeTemplateParameter _0)
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(200);
+ __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)
+ {
+ CppSharp.Parser.AST.Declaration __dummy;
+ NativeToManagedMap.TryRemove(__Instance, out __dummy);
+ Internal.dtor_0((__Instance + __PointerAdjustment));
+ if (__ownsNativeInstance)
+ Marshal.FreeHGlobal(__Instance);
+ }
+
+ public CppSharp.Parser.AST.Expression DefaultArgument
+ {
+ get
+ {
+ CppSharp.Parser.AST.Expression __result0;
+ if (((Internal*) __Instance)->DefaultArgument == IntPtr.Zero) __result0 = null;
+ else if (CppSharp.Parser.AST.Expression.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->DefaultArgument))
+ __result0 = (CppSharp.Parser.AST.Expression) CppSharp.Parser.AST.Expression.NativeToManagedMap[((Internal*) __Instance)->DefaultArgument];
+ else __result0 = CppSharp.Parser.AST.Expression.__CreateInstance(((Internal*) __Instance)->DefaultArgument);
+ return __result0;
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->DefaultArgument = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance;
+ }
+ }
+
+ public uint Position
+ {
+ get
+ {
+ return ((Internal*) __Instance)->Position;
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->Position = value;
+ }
+ }
+
+ public bool IsPackExpansion
+ {
+ get
+ {
+ return ((Internal*) __Instance)->IsPackExpansion != 0;
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->IsPackExpansion = (byte) (value ? 1 : 0);
+ }
+ }
+
+ public bool IsExpandedParameterPack
+ {
+ get
+ {
+ return ((Internal*) __Instance)->IsExpandedParameterPack != 0;
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->IsExpandedParameterPack = (byte) (value ? 1 : 0);
+ }
+ }
+ }
+
+ public unsafe partial class ClassTemplate : CppSharp.Parser.AST.Template, IDisposable
+ {
+ [StructLayout(LayoutKind.Explicit, Size = 224)]
+ public new partial struct Internal
+ {
+ [FieldOffset(0)]
+ public CppSharp.Parser.AST.DeclarationKind Kind;
+
+ [FieldOffset(4)]
+ public CppSharp.Parser.AST.AccessSpecifier Access;
+
+ [FieldOffset(8)]
+ public global::System.IntPtr _Namespace;
+
+ [FieldOffset(16)]
+ public CppSharp.Parser.SourceLocation.Internal Location;
+
+ [FieldOffset(20)]
+ public int LineNumberStart;
+
+ [FieldOffset(24)]
+ public int LineNumberEnd;
+
+ [FieldOffset(56)]
+ public global::System.IntPtr Comment;
+
+ [FieldOffset(88)]
+ public byte IsIncomplete;
+
+ [FieldOffset(89)]
+ public byte IsDependent;
+
+ [FieldOffset(90)]
+ public byte IsImplicit;
+
+ [FieldOffset(96)]
+ public global::System.IntPtr CompleteDeclaration;
+
+ [FieldOffset(104)]
+ public uint DefinitionOrder;
+
+ [FieldOffset(136)]
+ public global::System.IntPtr OriginalPtr;
+
+ [FieldOffset(168)]
+ public global::System.IntPtr TemplatedDecl;
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplateC2Ev")]
+ internal static extern void ctor_0(global::System.IntPtr instance);
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplateC2ERKS2_")]
+ 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="_ZN8CppSharp9CppParser3AST13ClassTemplateD2Ev")]
+ internal static extern void dtor_0(global::System.IntPtr instance);
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplate18getSpecializationsEj")]
+ internal static extern global::System.IntPtr getSpecializations_0(global::System.IntPtr instance, uint i);
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplate18addSpecializationsERPNS1_27ClassTemplateSpecializationE")]
+ internal static extern void addSpecializations_0(global::System.IntPtr instance, global::System.IntPtr s);
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplate20clearSpecializationsEv")]
+ internal static extern void clearSpecializations_0(global::System.IntPtr instance);
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplate23getSpecializationsCountEv")]
+ internal static extern uint getSpecializationsCount_0(global::System.IntPtr instance);
+ }
+
+ public static new ClassTemplate __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
+ {
+ return new ClassTemplate(native.ToPointer(), skipVTables);
+ }
+
+ public static ClassTemplate __CreateInstance(ClassTemplate.Internal native, bool skipVTables = false)
+ {
+ return new ClassTemplate(native, skipVTables);
+ }
+
+ private static void* __CopyValue(ClassTemplate.Internal native)
+ {
+ var ret = Marshal.AllocHGlobal(224);
+ CppSharp.Parser.AST.ClassTemplate.Internal.cctor_1(ret, new global::System.IntPtr(&native));
+ return ret.ToPointer();
+ }
+
+ private ClassTemplate(ClassTemplate.Internal native, bool skipVTables = false)
+ : this(__CopyValue(native), skipVTables)
+ {
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ }
+
+ protected ClassTemplate(void* native, bool skipVTables = false)
+ : base((void*) null)
+ {
+ __PointerAdjustment = 0;
+ if (native == null)
+ return;
+ __Instance = new global::System.IntPtr(native);
+ }
+
+ public ClassTemplate()
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(224);
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ Internal.ctor_0((__Instance + __PointerAdjustment));
+ }
+
+ public ClassTemplate(CppSharp.Parser.AST.ClassTemplate _0)
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(224);
+ __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)
+ {
+ CppSharp.Parser.AST.Declaration __dummy;
+ NativeToManagedMap.TryRemove(__Instance, out __dummy);
+ Internal.dtor_0((__Instance + __PointerAdjustment));
+ if (__ownsNativeInstance)
+ Marshal.FreeHGlobal(__Instance);
+ }
+
+ public CppSharp.Parser.AST.ClassTemplateSpecialization getSpecializations(uint i)
+ {
+ var __ret = Internal.getSpecializations_0((__Instance + __PointerAdjustment), i);
+ CppSharp.Parser.AST.ClassTemplateSpecialization __result0;
+ if (__ret == IntPtr.Zero) __result0 = null;
+ else if (CppSharp.Parser.AST.ClassTemplateSpecialization.NativeToManagedMap.ContainsKey(__ret))
+ __result0 = (CppSharp.Parser.AST.ClassTemplateSpecialization) CppSharp.Parser.AST.ClassTemplateSpecialization.NativeToManagedMap[__ret];
+ else __result0 = CppSharp.Parser.AST.ClassTemplateSpecialization.__CreateInstance(__ret);
+ return __result0;
+ }
+
+ public void addSpecializations(CppSharp.Parser.AST.ClassTemplateSpecialization 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.addSpecializations_0((__Instance + __PointerAdjustment), arg0);
+ }
+
+ public void clearSpecializations()
+ {
+ Internal.clearSpecializations_0((__Instance + __PointerAdjustment));
+ }
+
+ public uint SpecializationsCount
+ {
+ get
+ {
+ var __ret = Internal.getSpecializationsCount_0((__Instance + __PointerAdjustment));
+ return __ret;
}
}
}
@@ -8811,7 +9175,7 @@ namespace CppSharp
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST30FunctionTemplateSpecializationC2ERKS2_")]
- internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0);
+ 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,
@@ -8860,7 +9224,7 @@ namespace CppSharp
private static void* __CopyValue(FunctionTemplateSpecialization.Internal native)
{
var ret = Marshal.AllocHGlobal(48);
- CppSharp.Parser.AST.FunctionTemplateSpecialization.Internal.cctor_2(ret, new global::System.IntPtr(&native));
+ CppSharp.Parser.AST.FunctionTemplateSpecialization.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return ret.ToPointer();
}
@@ -8894,7 +9258,7 @@ namespace CppSharp
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_2((__Instance + __PointerAdjustment), arg0);
+ Internal.cctor_1((__Instance + __PointerAdjustment), arg0);
}
public void Dispose()
@@ -9248,7 +9612,7 @@ namespace CppSharp
set
{
- ((Internal*) __Instance)->OriginalPtr = value;
+ ((Internal*) __Instance)->OriginalPtr = (global::System.IntPtr) value;
}
}
diff --git a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/AST.cs b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/AST.cs
index 471d3918..dc82185a 100644
--- a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/AST.cs
+++ b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/AST.cs
@@ -54,7 +54,9 @@ namespace CppSharp
MacroDefinition = 18,
MacroExpansion = 19,
TranslationUnit = 20,
- Friend = 21
+ Friend = 21,
+ TemplateTypeParm = 22,
+ NonTypeTemplateParm = 23
}
public enum AccessSpecifier
@@ -1927,180 +1929,9 @@ namespace CppSharp
}
}
- public unsafe partial class TemplateParameter : IDisposable
- {
- [StructLayout(LayoutKind.Explicit, Size = 16)]
- public partial struct Internal
- {
- [FieldOffset(8)]
- public byte IsTypeParameter;
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST17TemplateParameterC2Ev")]
- internal static extern void ctor_0(global::System.IntPtr instance);
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST17TemplateParameterC2ERKS2_")]
- 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="_ZN8CppSharp9CppParser3AST17TemplateParameterD2Ev")]
- internal static extern void dtor_0(global::System.IntPtr instance);
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZNK8CppSharp9CppParser3AST17TemplateParametereqERKS2_")]
- [return: MarshalAsAttribute(UnmanagedType.I1)]
- internal static extern bool OperatorEqualEqual_0(global::System.IntPtr instance, global::System.IntPtr param);
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST17TemplateParameter7getNameEv")]
- internal static extern global::System.IntPtr getName_0(global::System.IntPtr instance);
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST17TemplateParameter7setNameEPKc")]
- internal static extern void setName_0(global::System.IntPtr instance, global::System.IntPtr s);
- }
-
- public global::System.IntPtr __Instance { get; protected set; }
-
- protected int __PointerAdjustment;
- public static readonly System.Collections.Concurrent.ConcurrentDictionary NativeToManagedMap = new System.Collections.Concurrent.ConcurrentDictionary();
- protected void*[] __OriginalVTables;
-
- protected bool __ownsNativeInstance;
-
- public static TemplateParameter __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
- {
- return new TemplateParameter(native.ToPointer(), skipVTables);
- }
-
- public static TemplateParameter __CreateInstance(TemplateParameter.Internal native, bool skipVTables = false)
- {
- return new TemplateParameter(native, skipVTables);
- }
-
- private static void* __CopyValue(TemplateParameter.Internal native)
- {
- var ret = Marshal.AllocHGlobal(16);
- CppSharp.Parser.AST.TemplateParameter.Internal.cctor_1(ret, new global::System.IntPtr(&native));
- return ret.ToPointer();
- }
-
- private TemplateParameter(TemplateParameter.Internal native, bool skipVTables = false)
- : this(__CopyValue(native), skipVTables)
- {
- __ownsNativeInstance = true;
- NativeToManagedMap[__Instance] = this;
- }
-
- protected TemplateParameter(void* native, bool skipVTables = false)
- {
- if (native == null)
- return;
- __Instance = new global::System.IntPtr(native);
- }
-
- public TemplateParameter()
- {
- __Instance = Marshal.AllocHGlobal(16);
- __ownsNativeInstance = true;
- NativeToManagedMap[__Instance] = this;
- Internal.ctor_0((__Instance + __PointerAdjustment));
- }
-
- public TemplateParameter(CppSharp.Parser.AST.TemplateParameter _0)
- {
- __Instance = Marshal.AllocHGlobal(16);
- __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);
- }
-
- public void Dispose()
- {
- Dispose(disposing: true);
- }
-
- protected virtual void Dispose(bool disposing)
- {
- CppSharp.Parser.AST.TemplateParameter __dummy;
- NativeToManagedMap.TryRemove(__Instance, out __dummy);
- Internal.dtor_0((__Instance + __PointerAdjustment));
- if (__ownsNativeInstance)
- Marshal.FreeHGlobal(__Instance);
- }
-
- public static bool operator !=(CppSharp.Parser.AST.TemplateParameter __op, CppSharp.Parser.AST.TemplateParameter param)
- {
- return !(__op == param);
- }
-
- public static bool operator ==(CppSharp.Parser.AST.TemplateParameter __op, CppSharp.Parser.AST.TemplateParameter param)
- {
- bool __opNull = ReferenceEquals(__op, null);
- bool paramNull = ReferenceEquals(param, null);
- if (__opNull || paramNull)
- return __opNull && paramNull;
- var arg0 = __op.__Instance;
- var arg1 = param.__Instance;
- var __ret = Internal.OperatorEqualEqual_0(arg0, arg1);
- return __ret;
- }
-
- public override bool Equals(object obj)
- {
- return this == obj as TemplateParameter;
- }
-
- public override int GetHashCode()
- {
- if (__Instance == global::System.IntPtr.Zero)
- return global::System.IntPtr.Zero.GetHashCode();
- return (*(Internal*) __Instance).GetHashCode();
- }
-
- public string Name
- {
- get
- {
- var __ret = Internal.getName_0((__Instance + __PointerAdjustment));
- return Marshal.PtrToStringAnsi(__ret);
- }
-
- set
- {
- var arg0 = Marshal.StringToHGlobalAnsi(value);
- Internal.setName_0((__Instance + __PointerAdjustment), arg0);
- Marshal.FreeHGlobal(arg0);
- }
- }
-
- public bool IsTypeParameter
- {
- get
- {
- return ((Internal*) __Instance)->IsTypeParameter != 0;
- }
-
- set
- {
- ((Internal*) __Instance)->IsTypeParameter = (byte) (value ? 1 : 0);
- }
- }
- }
-
public unsafe partial class TemplateParameterType : CppSharp.Parser.AST.Type, IDisposable
{
- [StructLayout(LayoutKind.Explicit, Size = 40)]
+ [StructLayout(LayoutKind.Explicit, Size = 32)]
public new partial struct Internal
{
[FieldOffset(0)]
@@ -2110,15 +1941,15 @@ namespace CppSharp
public byte IsDependent;
[FieldOffset(8)]
- public CppSharp.Parser.AST.TemplateParameter.Internal Parameter;
+ public global::System.IntPtr Parameter;
- [FieldOffset(24)]
+ [FieldOffset(16)]
public uint Depth;
- [FieldOffset(28)]
+ [FieldOffset(20)]
public uint Index;
- [FieldOffset(32)]
+ [FieldOffset(24)]
public byte IsParameterPack;
[SuppressUnmanagedCodeSecurity]
@@ -2149,7 +1980,7 @@ namespace CppSharp
private static void* __CopyValue(TemplateParameterType.Internal native)
{
- var ret = Marshal.AllocHGlobal(40);
+ var ret = Marshal.AllocHGlobal(32);
CppSharp.Parser.AST.TemplateParameterType.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return ret.ToPointer();
}
@@ -2173,7 +2004,7 @@ namespace CppSharp
public TemplateParameterType()
: this((void*) null)
{
- __Instance = Marshal.AllocHGlobal(40);
+ __Instance = Marshal.AllocHGlobal(32);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
Internal.ctor_0((__Instance + __PointerAdjustment));
@@ -2182,7 +2013,7 @@ namespace CppSharp
public TemplateParameterType(CppSharp.Parser.AST.TemplateParameterType _0)
: this((void*) null)
{
- __Instance = Marshal.AllocHGlobal(40);
+ __Instance = Marshal.AllocHGlobal(32);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null))
@@ -2200,16 +2031,21 @@ namespace CppSharp
Marshal.FreeHGlobal(__Instance);
}
- public CppSharp.Parser.AST.TemplateParameter Parameter
+ public CppSharp.Parser.AST.TypeTemplateParameter Parameter
{
get
{
- return CppSharp.Parser.AST.TemplateParameter.__CreateInstance(((Internal*) __Instance)->Parameter);
+ CppSharp.Parser.AST.TypeTemplateParameter __result0;
+ if (((Internal*) __Instance)->Parameter == IntPtr.Zero) __result0 = null;
+ else if (CppSharp.Parser.AST.TypeTemplateParameter.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Parameter))
+ __result0 = (CppSharp.Parser.AST.TypeTemplateParameter) CppSharp.Parser.AST.TypeTemplateParameter.NativeToManagedMap[((Internal*) __Instance)->Parameter];
+ else __result0 = CppSharp.Parser.AST.TypeTemplateParameter.__CreateInstance(((Internal*) __Instance)->Parameter);
+ return __result0;
}
set
{
- ((Internal*) __Instance)->Parameter = ReferenceEquals(value, null) ? new CppSharp.Parser.AST.TemplateParameter.Internal() : *(CppSharp.Parser.AST.TemplateParameter.Internal*) (value.__Instance);
+ ((Internal*) __Instance)->Parameter = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance;
}
}
@@ -3823,7 +3659,7 @@ namespace CppSharp
set
{
- ((Internal*) __Instance)->OriginalPtr = value;
+ ((Internal*) __Instance)->OriginalPtr = (global::System.IntPtr) value;
}
}
}
@@ -7884,11 +7720,11 @@ namespace CppSharp
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST8Template13getParametersEj")]
- internal static extern void getParameters_0(global::System.IntPtr @return, global::System.IntPtr instance, uint i);
+ internal static extern global::System.IntPtr getParameters_0(global::System.IntPtr instance, uint i);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST8Template13addParametersERNS1_17TemplateParameterE")]
+ EntryPoint="_ZN8CppSharp9CppParser3AST8Template13addParametersERPNS1_11DeclarationE")]
internal static extern void addParameters_0(global::System.IntPtr instance, global::System.IntPtr s);
[SuppressUnmanagedCodeSecurity]
@@ -7975,14 +7811,18 @@ namespace CppSharp
Marshal.FreeHGlobal(__Instance);
}
- public CppSharp.Parser.AST.TemplateParameter getParameters(uint i)
+ public CppSharp.Parser.AST.Declaration getParameters(uint i)
{
- var __ret = new CppSharp.Parser.AST.TemplateParameter.Internal();
- Internal.getParameters_0(new IntPtr(&__ret), (__Instance + __PointerAdjustment), i);
- return CppSharp.Parser.AST.TemplateParameter.__CreateInstance(__ret);
+ var __ret = Internal.getParameters_0((__Instance + __PointerAdjustment), i);
+ CppSharp.Parser.AST.Declaration __result0;
+ if (__ret == IntPtr.Zero) __result0 = null;
+ else if (CppSharp.Parser.AST.Declaration.NativeToManagedMap.ContainsKey(__ret))
+ __result0 = (CppSharp.Parser.AST.Declaration) CppSharp.Parser.AST.Declaration.NativeToManagedMap[__ret];
+ else __result0 = CppSharp.Parser.AST.Declaration.__CreateInstance(__ret);
+ return __result0;
}
- public void addParameters(CppSharp.Parser.AST.TemplateParameter s)
+ public void addParameters(CppSharp.Parser.AST.Declaration s)
{
if (ReferenceEquals(s, null))
throw new global::System.ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
@@ -8023,9 +7863,9 @@ namespace CppSharp
}
}
- public unsafe partial class ClassTemplate : CppSharp.Parser.AST.Template, IDisposable
+ public unsafe partial class TemplateParameter : CppSharp.Parser.AST.Declaration, IDisposable
{
- [StructLayout(LayoutKind.Explicit, Size = 176)]
+ [StructLayout(LayoutKind.Explicit, Size = 136)]
public new partial struct Internal
{
[FieldOffset(0)]
@@ -8068,69 +7908,55 @@ namespace CppSharp
public global::System.IntPtr OriginalPtr;
[FieldOffset(120)]
- public global::System.IntPtr TemplatedDecl;
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplateC2Ev")]
- internal static extern void ctor_0(global::System.IntPtr instance);
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplateC2ERKS2_")]
- internal static extern void cctor_1(global::System.IntPtr instance, global::System.IntPtr _0);
+ public uint Depth;
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplateD2Ev")]
- internal static extern void dtor_0(global::System.IntPtr instance);
+ [FieldOffset(124)]
+ public uint Index;
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplate18getSpecializationsEj")]
- internal static extern global::System.IntPtr getSpecializations_0(global::System.IntPtr instance, uint i);
+ [FieldOffset(128)]
+ public byte IsParameterPack;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplate18addSpecializationsERPNS1_27ClassTemplateSpecializationE")]
- internal static extern void addSpecializations_0(global::System.IntPtr instance, global::System.IntPtr s);
+ EntryPoint="_ZN8CppSharp9CppParser3AST17TemplateParameterC2ENS1_15DeclarationKindE")]
+ internal static extern void ctor_0(global::System.IntPtr instance, CppSharp.Parser.AST.DeclarationKind kind);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplate20clearSpecializationsEv")]
- internal static extern void clearSpecializations_0(global::System.IntPtr instance);
+ EntryPoint="_ZN8CppSharp9CppParser3AST17TemplateParameterC2ERKS2_")]
+ 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="_ZN8CppSharp9CppParser3AST13ClassTemplate23getSpecializationsCountEv")]
- internal static extern uint getSpecializationsCount_0(global::System.IntPtr instance);
+ EntryPoint="_ZN8CppSharp9CppParser3AST17TemplateParameterD2Ev")]
+ internal static extern void dtor_0(global::System.IntPtr instance);
}
- public static new ClassTemplate __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
+ public static new TemplateParameter __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
{
- return new ClassTemplate(native.ToPointer(), skipVTables);
+ return new TemplateParameter(native.ToPointer(), skipVTables);
}
- public static ClassTemplate __CreateInstance(ClassTemplate.Internal native, bool skipVTables = false)
+ public static TemplateParameter __CreateInstance(TemplateParameter.Internal native, bool skipVTables = false)
{
- return new ClassTemplate(native, skipVTables);
+ return new TemplateParameter(native, skipVTables);
}
- private static void* __CopyValue(ClassTemplate.Internal native)
+ private static void* __CopyValue(TemplateParameter.Internal native)
{
- var ret = Marshal.AllocHGlobal(176);
- CppSharp.Parser.AST.ClassTemplate.Internal.cctor_1(ret, new global::System.IntPtr(&native));
+ var ret = Marshal.AllocHGlobal(136);
+ CppSharp.Parser.AST.TemplateParameter.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return ret.ToPointer();
}
- private ClassTemplate(ClassTemplate.Internal native, bool skipVTables = false)
+ private TemplateParameter(TemplateParameter.Internal native, bool skipVTables = false)
: this(__CopyValue(native), skipVTables)
{
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
}
- protected ClassTemplate(void* native, bool skipVTables = false)
+ protected TemplateParameter(void* native, bool skipVTables = false)
: base((void*) null)
{
__PointerAdjustment = 0;
@@ -8139,19 +7965,20 @@ namespace CppSharp
__Instance = new global::System.IntPtr(native);
}
- public ClassTemplate()
+ public TemplateParameter(CppSharp.Parser.AST.DeclarationKind kind)
: this((void*) null)
{
- __Instance = Marshal.AllocHGlobal(176);
+ __Instance = Marshal.AllocHGlobal(136);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
- Internal.ctor_0((__Instance + __PointerAdjustment));
+ var arg0 = kind;
+ Internal.ctor_0((__Instance + __PointerAdjustment), arg0);
}
- public ClassTemplate(CppSharp.Parser.AST.ClassTemplate _0)
+ public TemplateParameter(CppSharp.Parser.AST.TemplateParameter _0)
: this((void*) null)
{
- __Instance = Marshal.AllocHGlobal(176);
+ __Instance = Marshal.AllocHGlobal(136);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null))
@@ -8169,36 +7996,573 @@ namespace CppSharp
Marshal.FreeHGlobal(__Instance);
}
- public CppSharp.Parser.AST.ClassTemplateSpecialization getSpecializations(uint i)
- {
- var __ret = Internal.getSpecializations_0((__Instance + __PointerAdjustment), i);
- CppSharp.Parser.AST.ClassTemplateSpecialization __result0;
- if (__ret == IntPtr.Zero) __result0 = null;
- else if (CppSharp.Parser.AST.ClassTemplateSpecialization.NativeToManagedMap.ContainsKey(__ret))
- __result0 = (CppSharp.Parser.AST.ClassTemplateSpecialization) CppSharp.Parser.AST.ClassTemplateSpecialization.NativeToManagedMap[__ret];
- else __result0 = CppSharp.Parser.AST.ClassTemplateSpecialization.__CreateInstance(__ret);
- return __result0;
- }
-
- public void addSpecializations(CppSharp.Parser.AST.ClassTemplateSpecialization s)
+ public uint Depth
{
- if (ReferenceEquals(s, null))
- throw new global::System.ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
- var arg0 = s.__Instance;
- Internal.addSpecializations_0((__Instance + __PointerAdjustment), arg0);
- }
+ get
+ {
+ return ((Internal*) __Instance)->Depth;
+ }
- public void clearSpecializations()
- {
- Internal.clearSpecializations_0((__Instance + __PointerAdjustment));
+ set
+ {
+ ((Internal*) __Instance)->Depth = value;
+ }
}
- public uint SpecializationsCount
+ public uint Index
{
get
{
- var __ret = Internal.getSpecializationsCount_0((__Instance + __PointerAdjustment));
- return __ret;
+ return ((Internal*) __Instance)->Index;
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->Index = value;
+ }
+ }
+
+ public bool IsParameterPack
+ {
+ get
+ {
+ return ((Internal*) __Instance)->IsParameterPack != 0;
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->IsParameterPack = (byte) (value ? 1 : 0);
+ }
+ }
+ }
+
+ public unsafe partial class TypeTemplateParameter : CppSharp.Parser.AST.TemplateParameter, IDisposable
+ {
+ [StructLayout(LayoutKind.Explicit, Size = 152)]
+ public new partial struct Internal
+ {
+ [FieldOffset(0)]
+ public CppSharp.Parser.AST.DeclarationKind Kind;
+
+ [FieldOffset(4)]
+ public CppSharp.Parser.AST.AccessSpecifier Access;
+
+ [FieldOffset(8)]
+ public global::System.IntPtr _Namespace;
+
+ [FieldOffset(16)]
+ public CppSharp.Parser.SourceLocation.Internal Location;
+
+ [FieldOffset(20)]
+ public int LineNumberStart;
+
+ [FieldOffset(24)]
+ public int LineNumberEnd;
+
+ [FieldOffset(40)]
+ public global::System.IntPtr Comment;
+
+ [FieldOffset(56)]
+ public byte IsIncomplete;
+
+ [FieldOffset(57)]
+ public byte IsDependent;
+
+ [FieldOffset(58)]
+ public byte IsImplicit;
+
+ [FieldOffset(64)]
+ public global::System.IntPtr CompleteDeclaration;
+
+ [FieldOffset(72)]
+ public uint DefinitionOrder;
+
+ [FieldOffset(104)]
+ public global::System.IntPtr OriginalPtr;
+
+ [FieldOffset(120)]
+ public uint Depth;
+
+ [FieldOffset(124)]
+ public uint Index;
+
+ [FieldOffset(128)]
+ public byte IsParameterPack;
+
+ [FieldOffset(136)]
+ public CppSharp.Parser.AST.QualifiedType.Internal DefaultArgument;
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST21TypeTemplateParameterC2Ev")]
+ internal static extern void ctor_0(global::System.IntPtr instance);
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST21TypeTemplateParameterC2ERKS2_")]
+ 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="_ZN8CppSharp9CppParser3AST21TypeTemplateParameterD2Ev")]
+ internal static extern void dtor_0(global::System.IntPtr instance);
+ }
+
+ public static new TypeTemplateParameter __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
+ {
+ return new TypeTemplateParameter(native.ToPointer(), skipVTables);
+ }
+
+ public static TypeTemplateParameter __CreateInstance(TypeTemplateParameter.Internal native, bool skipVTables = false)
+ {
+ return new TypeTemplateParameter(native, skipVTables);
+ }
+
+ private static void* __CopyValue(TypeTemplateParameter.Internal native)
+ {
+ var ret = Marshal.AllocHGlobal(152);
+ CppSharp.Parser.AST.TypeTemplateParameter.Internal.cctor_1(ret, new global::System.IntPtr(&native));
+ return ret.ToPointer();
+ }
+
+ private TypeTemplateParameter(TypeTemplateParameter.Internal native, bool skipVTables = false)
+ : this(__CopyValue(native), skipVTables)
+ {
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ }
+
+ protected TypeTemplateParameter(void* native, bool skipVTables = false)
+ : base((void*) null)
+ {
+ __PointerAdjustment = 0;
+ if (native == null)
+ return;
+ __Instance = new global::System.IntPtr(native);
+ }
+
+ public TypeTemplateParameter()
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(152);
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ Internal.ctor_0((__Instance + __PointerAdjustment));
+ }
+
+ public TypeTemplateParameter(CppSharp.Parser.AST.TypeTemplateParameter _0)
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(152);
+ __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)
+ {
+ CppSharp.Parser.AST.Declaration __dummy;
+ NativeToManagedMap.TryRemove(__Instance, out __dummy);
+ Internal.dtor_0((__Instance + __PointerAdjustment));
+ if (__ownsNativeInstance)
+ Marshal.FreeHGlobal(__Instance);
+ }
+
+ public CppSharp.Parser.AST.QualifiedType DefaultArgument
+ {
+ get
+ {
+ return CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->DefaultArgument);
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->DefaultArgument = ReferenceEquals(value, null) ? new CppSharp.Parser.AST.QualifiedType.Internal() : *(CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance);
+ }
+ }
+ }
+
+ public unsafe partial class NonTypeTemplateParameter : CppSharp.Parser.AST.TemplateParameter, IDisposable
+ {
+ [StructLayout(LayoutKind.Explicit, Size = 152)]
+ public new partial struct Internal
+ {
+ [FieldOffset(0)]
+ public CppSharp.Parser.AST.DeclarationKind Kind;
+
+ [FieldOffset(4)]
+ public CppSharp.Parser.AST.AccessSpecifier Access;
+
+ [FieldOffset(8)]
+ public global::System.IntPtr _Namespace;
+
+ [FieldOffset(16)]
+ public CppSharp.Parser.SourceLocation.Internal Location;
+
+ [FieldOffset(20)]
+ public int LineNumberStart;
+
+ [FieldOffset(24)]
+ public int LineNumberEnd;
+
+ [FieldOffset(40)]
+ public global::System.IntPtr Comment;
+
+ [FieldOffset(56)]
+ public byte IsIncomplete;
+
+ [FieldOffset(57)]
+ public byte IsDependent;
+
+ [FieldOffset(58)]
+ public byte IsImplicit;
+
+ [FieldOffset(64)]
+ public global::System.IntPtr CompleteDeclaration;
+
+ [FieldOffset(72)]
+ public uint DefinitionOrder;
+
+ [FieldOffset(104)]
+ public global::System.IntPtr OriginalPtr;
+
+ [FieldOffset(120)]
+ public uint Depth;
+
+ [FieldOffset(124)]
+ public uint Index;
+
+ [FieldOffset(128)]
+ public byte IsParameterPack;
+
+ [FieldOffset(136)]
+ public global::System.IntPtr DefaultArgument;
+
+ [FieldOffset(144)]
+ public uint Position;
+
+ [FieldOffset(148)]
+ public byte IsPackExpansion;
+
+ [FieldOffset(149)]
+ public byte IsExpandedParameterPack;
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST24NonTypeTemplateParameterC2Ev")]
+ internal static extern void ctor_0(global::System.IntPtr instance);
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST24NonTypeTemplateParameterC2ERKS2_")]
+ 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="_ZN8CppSharp9CppParser3AST24NonTypeTemplateParameterD2Ev")]
+ internal static extern void dtor_0(global::System.IntPtr instance);
+ }
+
+ public static new NonTypeTemplateParameter __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
+ {
+ return new NonTypeTemplateParameter(native.ToPointer(), skipVTables);
+ }
+
+ public static NonTypeTemplateParameter __CreateInstance(NonTypeTemplateParameter.Internal native, bool skipVTables = false)
+ {
+ return new NonTypeTemplateParameter(native, skipVTables);
+ }
+
+ private static void* __CopyValue(NonTypeTemplateParameter.Internal native)
+ {
+ var ret = Marshal.AllocHGlobal(152);
+ CppSharp.Parser.AST.NonTypeTemplateParameter.Internal.cctor_1(ret, new global::System.IntPtr(&native));
+ return ret.ToPointer();
+ }
+
+ private NonTypeTemplateParameter(NonTypeTemplateParameter.Internal native, bool skipVTables = false)
+ : this(__CopyValue(native), skipVTables)
+ {
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ }
+
+ protected NonTypeTemplateParameter(void* native, bool skipVTables = false)
+ : base((void*) null)
+ {
+ __PointerAdjustment = 0;
+ if (native == null)
+ return;
+ __Instance = new global::System.IntPtr(native);
+ }
+
+ public NonTypeTemplateParameter()
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(152);
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ Internal.ctor_0((__Instance + __PointerAdjustment));
+ }
+
+ public NonTypeTemplateParameter(CppSharp.Parser.AST.NonTypeTemplateParameter _0)
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(152);
+ __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)
+ {
+ CppSharp.Parser.AST.Declaration __dummy;
+ NativeToManagedMap.TryRemove(__Instance, out __dummy);
+ Internal.dtor_0((__Instance + __PointerAdjustment));
+ if (__ownsNativeInstance)
+ Marshal.FreeHGlobal(__Instance);
+ }
+
+ public CppSharp.Parser.AST.Expression DefaultArgument
+ {
+ get
+ {
+ CppSharp.Parser.AST.Expression __result0;
+ if (((Internal*) __Instance)->DefaultArgument == IntPtr.Zero) __result0 = null;
+ else if (CppSharp.Parser.AST.Expression.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->DefaultArgument))
+ __result0 = (CppSharp.Parser.AST.Expression) CppSharp.Parser.AST.Expression.NativeToManagedMap[((Internal*) __Instance)->DefaultArgument];
+ else __result0 = CppSharp.Parser.AST.Expression.__CreateInstance(((Internal*) __Instance)->DefaultArgument);
+ return __result0;
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->DefaultArgument = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance;
+ }
+ }
+
+ public uint Position
+ {
+ get
+ {
+ return ((Internal*) __Instance)->Position;
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->Position = value;
+ }
+ }
+
+ public bool IsPackExpansion
+ {
+ get
+ {
+ return ((Internal*) __Instance)->IsPackExpansion != 0;
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->IsPackExpansion = (byte) (value ? 1 : 0);
+ }
+ }
+
+ public bool IsExpandedParameterPack
+ {
+ get
+ {
+ return ((Internal*) __Instance)->IsExpandedParameterPack != 0;
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->IsExpandedParameterPack = (byte) (value ? 1 : 0);
+ }
+ }
+ }
+
+ public unsafe partial class ClassTemplate : CppSharp.Parser.AST.Template, IDisposable
+ {
+ [StructLayout(LayoutKind.Explicit, Size = 176)]
+ public new partial struct Internal
+ {
+ [FieldOffset(0)]
+ public CppSharp.Parser.AST.DeclarationKind Kind;
+
+ [FieldOffset(4)]
+ public CppSharp.Parser.AST.AccessSpecifier Access;
+
+ [FieldOffset(8)]
+ public global::System.IntPtr _Namespace;
+
+ [FieldOffset(16)]
+ public CppSharp.Parser.SourceLocation.Internal Location;
+
+ [FieldOffset(20)]
+ public int LineNumberStart;
+
+ [FieldOffset(24)]
+ public int LineNumberEnd;
+
+ [FieldOffset(40)]
+ public global::System.IntPtr Comment;
+
+ [FieldOffset(56)]
+ public byte IsIncomplete;
+
+ [FieldOffset(57)]
+ public byte IsDependent;
+
+ [FieldOffset(58)]
+ public byte IsImplicit;
+
+ [FieldOffset(64)]
+ public global::System.IntPtr CompleteDeclaration;
+
+ [FieldOffset(72)]
+ public uint DefinitionOrder;
+
+ [FieldOffset(104)]
+ public global::System.IntPtr OriginalPtr;
+
+ [FieldOffset(120)]
+ public global::System.IntPtr TemplatedDecl;
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplateC2Ev")]
+ internal static extern void ctor_0(global::System.IntPtr instance);
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplateC2ERKS2_")]
+ 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="_ZN8CppSharp9CppParser3AST13ClassTemplateD2Ev")]
+ internal static extern void dtor_0(global::System.IntPtr instance);
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplate18getSpecializationsEj")]
+ internal static extern global::System.IntPtr getSpecializations_0(global::System.IntPtr instance, uint i);
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplate18addSpecializationsERPNS1_27ClassTemplateSpecializationE")]
+ internal static extern void addSpecializations_0(global::System.IntPtr instance, global::System.IntPtr s);
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplate20clearSpecializationsEv")]
+ internal static extern void clearSpecializations_0(global::System.IntPtr instance);
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="_ZN8CppSharp9CppParser3AST13ClassTemplate23getSpecializationsCountEv")]
+ internal static extern uint getSpecializationsCount_0(global::System.IntPtr instance);
+ }
+
+ public static new ClassTemplate __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
+ {
+ return new ClassTemplate(native.ToPointer(), skipVTables);
+ }
+
+ public static ClassTemplate __CreateInstance(ClassTemplate.Internal native, bool skipVTables = false)
+ {
+ return new ClassTemplate(native, skipVTables);
+ }
+
+ private static void* __CopyValue(ClassTemplate.Internal native)
+ {
+ var ret = Marshal.AllocHGlobal(176);
+ CppSharp.Parser.AST.ClassTemplate.Internal.cctor_1(ret, new global::System.IntPtr(&native));
+ return ret.ToPointer();
+ }
+
+ private ClassTemplate(ClassTemplate.Internal native, bool skipVTables = false)
+ : this(__CopyValue(native), skipVTables)
+ {
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ }
+
+ protected ClassTemplate(void* native, bool skipVTables = false)
+ : base((void*) null)
+ {
+ __PointerAdjustment = 0;
+ if (native == null)
+ return;
+ __Instance = new global::System.IntPtr(native);
+ }
+
+ public ClassTemplate()
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(176);
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ Internal.ctor_0((__Instance + __PointerAdjustment));
+ }
+
+ public ClassTemplate(CppSharp.Parser.AST.ClassTemplate _0)
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(176);
+ __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)
+ {
+ CppSharp.Parser.AST.Declaration __dummy;
+ NativeToManagedMap.TryRemove(__Instance, out __dummy);
+ Internal.dtor_0((__Instance + __PointerAdjustment));
+ if (__ownsNativeInstance)
+ Marshal.FreeHGlobal(__Instance);
+ }
+
+ public CppSharp.Parser.AST.ClassTemplateSpecialization getSpecializations(uint i)
+ {
+ var __ret = Internal.getSpecializations_0((__Instance + __PointerAdjustment), i);
+ CppSharp.Parser.AST.ClassTemplateSpecialization __result0;
+ if (__ret == IntPtr.Zero) __result0 = null;
+ else if (CppSharp.Parser.AST.ClassTemplateSpecialization.NativeToManagedMap.ContainsKey(__ret))
+ __result0 = (CppSharp.Parser.AST.ClassTemplateSpecialization) CppSharp.Parser.AST.ClassTemplateSpecialization.NativeToManagedMap[__ret];
+ else __result0 = CppSharp.Parser.AST.ClassTemplateSpecialization.__CreateInstance(__ret);
+ return __result0;
+ }
+
+ public void addSpecializations(CppSharp.Parser.AST.ClassTemplateSpecialization 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.addSpecializations_0((__Instance + __PointerAdjustment), arg0);
+ }
+
+ public void clearSpecializations()
+ {
+ Internal.clearSpecializations_0((__Instance + __PointerAdjustment));
+ }
+
+ public uint SpecializationsCount
+ {
+ get
+ {
+ var __ret = Internal.getSpecializationsCount_0((__Instance + __PointerAdjustment));
+ return __ret;
}
}
}
@@ -8811,7 +9175,7 @@ namespace CppSharp
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="_ZN8CppSharp9CppParser3AST30FunctionTemplateSpecializationC2ERKS2_")]
- internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0);
+ 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,
@@ -8860,7 +9224,7 @@ namespace CppSharp
private static void* __CopyValue(FunctionTemplateSpecialization.Internal native)
{
var ret = Marshal.AllocHGlobal(48);
- CppSharp.Parser.AST.FunctionTemplateSpecialization.Internal.cctor_2(ret, new global::System.IntPtr(&native));
+ CppSharp.Parser.AST.FunctionTemplateSpecialization.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return ret.ToPointer();
}
@@ -8894,7 +9258,7 @@ namespace CppSharp
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_2((__Instance + __PointerAdjustment), arg0);
+ Internal.cctor_1((__Instance + __PointerAdjustment), arg0);
}
public void Dispose()
@@ -9248,7 +9612,7 @@ namespace CppSharp
set
{
- ((Internal*) __Instance)->OriginalPtr = value;
+ ((Internal*) __Instance)->OriginalPtr = (global::System.IntPtr) value;
}
}
diff --git a/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/AST.cs b/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/AST.cs
index b94cfbc4..fea9b0f3 100644
--- a/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/AST.cs
+++ b/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/AST.cs
@@ -54,7 +54,9 @@ namespace CppSharp
MacroDefinition = 18,
MacroExpansion = 19,
TranslationUnit = 20,
- Friend = 21
+ Friend = 21,
+ TemplateTypeParm = 22,
+ NonTypeTemplateParm = 23
}
public enum AccessSpecifier
@@ -1927,180 +1929,9 @@ namespace CppSharp
}
}
- public unsafe partial class TemplateParameter : IDisposable
- {
- [StructLayout(LayoutKind.Explicit, Size = 40)]
- public partial struct Internal
- {
- [FieldOffset(32)]
- public byte IsTypeParameter;
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="??0TemplateParameter@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="??0TemplateParameter@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="??1TemplateParameter@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="??8TemplateParameter@AST@CppParser@CppSharp@@QEBA_NAEBV0123@@Z")]
- [return: MarshalAsAttribute(UnmanagedType.I1)]
- internal static extern bool OperatorEqualEqual_0(global::System.IntPtr instance, global::System.IntPtr param);
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="?getName@TemplateParameter@AST@CppParser@CppSharp@@QEAAPEBDXZ")]
- internal static extern global::System.IntPtr getName_0(global::System.IntPtr instance);
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="?setName@TemplateParameter@AST@CppParser@CppSharp@@QEAAXPEBD@Z")]
- internal static extern void setName_0(global::System.IntPtr instance, global::System.IntPtr s);
- }
-
- public global::System.IntPtr __Instance { get; protected set; }
-
- protected int __PointerAdjustment;
- public static readonly System.Collections.Concurrent.ConcurrentDictionary NativeToManagedMap = new System.Collections.Concurrent.ConcurrentDictionary();
- protected void*[] __OriginalVTables;
-
- protected bool __ownsNativeInstance;
-
- public static TemplateParameter __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
- {
- return new TemplateParameter(native.ToPointer(), skipVTables);
- }
-
- public static TemplateParameter __CreateInstance(TemplateParameter.Internal native, bool skipVTables = false)
- {
- return new TemplateParameter(native, skipVTables);
- }
-
- private static void* __CopyValue(TemplateParameter.Internal native)
- {
- var ret = Marshal.AllocHGlobal(40);
- CppSharp.Parser.AST.TemplateParameter.Internal.cctor_1(ret, new global::System.IntPtr(&native));
- return ret.ToPointer();
- }
-
- private TemplateParameter(TemplateParameter.Internal native, bool skipVTables = false)
- : this(__CopyValue(native), skipVTables)
- {
- __ownsNativeInstance = true;
- NativeToManagedMap[__Instance] = this;
- }
-
- protected TemplateParameter(void* native, bool skipVTables = false)
- {
- if (native == null)
- return;
- __Instance = new global::System.IntPtr(native);
- }
-
- public TemplateParameter()
- {
- __Instance = Marshal.AllocHGlobal(40);
- __ownsNativeInstance = true;
- NativeToManagedMap[__Instance] = this;
- Internal.ctor_0((__Instance + __PointerAdjustment));
- }
-
- public TemplateParameter(CppSharp.Parser.AST.TemplateParameter _0)
- {
- __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);
- }
-
- public void Dispose()
- {
- Dispose(disposing: true);
- }
-
- protected virtual void Dispose(bool disposing)
- {
- CppSharp.Parser.AST.TemplateParameter __dummy;
- NativeToManagedMap.TryRemove(__Instance, out __dummy);
- Internal.dtor_0((__Instance + __PointerAdjustment), 0);
- if (__ownsNativeInstance)
- Marshal.FreeHGlobal(__Instance);
- }
-
- public static bool operator !=(CppSharp.Parser.AST.TemplateParameter __op, CppSharp.Parser.AST.TemplateParameter param)
- {
- return !(__op == param);
- }
-
- public static bool operator ==(CppSharp.Parser.AST.TemplateParameter __op, CppSharp.Parser.AST.TemplateParameter param)
- {
- bool __opNull = ReferenceEquals(__op, null);
- bool paramNull = ReferenceEquals(param, null);
- if (__opNull || paramNull)
- return __opNull && paramNull;
- var arg0 = __op.__Instance;
- var arg1 = param.__Instance;
- var __ret = Internal.OperatorEqualEqual_0(arg0, arg1);
- return __ret;
- }
-
- public override bool Equals(object obj)
- {
- return this == obj as TemplateParameter;
- }
-
- public override int GetHashCode()
- {
- if (__Instance == global::System.IntPtr.Zero)
- return global::System.IntPtr.Zero.GetHashCode();
- return (*(Internal*) __Instance).GetHashCode();
- }
-
- public string Name
- {
- get
- {
- var __ret = Internal.getName_0((__Instance + __PointerAdjustment));
- return Marshal.PtrToStringAnsi(__ret);
- }
-
- set
- {
- var arg0 = Marshal.StringToHGlobalAnsi(value);
- Internal.setName_0((__Instance + __PointerAdjustment), arg0);
- Marshal.FreeHGlobal(arg0);
- }
- }
-
- public bool IsTypeParameter
- {
- get
- {
- return ((Internal*) __Instance)->IsTypeParameter != 0;
- }
-
- set
- {
- ((Internal*) __Instance)->IsTypeParameter = (byte) (value ? 1 : 0);
- }
- }
- }
-
public unsafe partial class TemplateParameterType : CppSharp.Parser.AST.Type, IDisposable
{
- [StructLayout(LayoutKind.Explicit, Size = 64)]
+ [StructLayout(LayoutKind.Explicit, Size = 32)]
public new partial struct Internal
{
[FieldOffset(0)]
@@ -2110,15 +1941,15 @@ namespace CppSharp
public byte IsDependent;
[FieldOffset(8)]
- public CppSharp.Parser.AST.TemplateParameter.Internal Parameter;
+ public global::System.IntPtr Parameter;
- [FieldOffset(48)]
+ [FieldOffset(16)]
public uint Depth;
- [FieldOffset(52)]
+ [FieldOffset(20)]
public uint Index;
- [FieldOffset(56)]
+ [FieldOffset(24)]
public byte IsParameterPack;
[SuppressUnmanagedCodeSecurity]
@@ -2149,7 +1980,7 @@ namespace CppSharp
private static void* __CopyValue(TemplateParameterType.Internal native)
{
- var ret = Marshal.AllocHGlobal(64);
+ var ret = Marshal.AllocHGlobal(32);
CppSharp.Parser.AST.TemplateParameterType.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return ret.ToPointer();
}
@@ -2173,7 +2004,7 @@ namespace CppSharp
public TemplateParameterType()
: this((void*) null)
{
- __Instance = Marshal.AllocHGlobal(64);
+ __Instance = Marshal.AllocHGlobal(32);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
Internal.ctor_0((__Instance + __PointerAdjustment));
@@ -2182,7 +2013,7 @@ namespace CppSharp
public TemplateParameterType(CppSharp.Parser.AST.TemplateParameterType _0)
: this((void*) null)
{
- __Instance = Marshal.AllocHGlobal(64);
+ __Instance = Marshal.AllocHGlobal(32);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null))
@@ -2200,16 +2031,21 @@ namespace CppSharp
Marshal.FreeHGlobal(__Instance);
}
- public CppSharp.Parser.AST.TemplateParameter Parameter
+ public CppSharp.Parser.AST.TypeTemplateParameter Parameter
{
get
{
- return CppSharp.Parser.AST.TemplateParameter.__CreateInstance(((Internal*) __Instance)->Parameter);
+ CppSharp.Parser.AST.TypeTemplateParameter __result0;
+ if (((Internal*) __Instance)->Parameter == IntPtr.Zero) __result0 = null;
+ else if (CppSharp.Parser.AST.TypeTemplateParameter.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Parameter))
+ __result0 = (CppSharp.Parser.AST.TypeTemplateParameter) CppSharp.Parser.AST.TypeTemplateParameter.NativeToManagedMap[((Internal*) __Instance)->Parameter];
+ else __result0 = CppSharp.Parser.AST.TypeTemplateParameter.__CreateInstance(((Internal*) __Instance)->Parameter);
+ return __result0;
}
set
{
- ((Internal*) __Instance)->Parameter = ReferenceEquals(value, null) ? new CppSharp.Parser.AST.TemplateParameter.Internal() : *(CppSharp.Parser.AST.TemplateParameter.Internal*) (value.__Instance);
+ ((Internal*) __Instance)->Parameter = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance;
}
}
@@ -3824,7 +3660,7 @@ namespace CppSharp
set
{
- ((Internal*) __Instance)->OriginalPtr = value;
+ ((Internal*) __Instance)->OriginalPtr = (global::System.IntPtr) value;
}
}
}
@@ -7884,12 +7720,12 @@ namespace CppSharp
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="?getParameters@Template@AST@CppParser@CppSharp@@QEAA?AVTemplateParameter@234@I@Z")]
- internal static extern void getParameters_0(global::System.IntPtr instance, global::System.IntPtr @return, uint i);
+ EntryPoint="?getParameters@Template@AST@CppParser@CppSharp@@QEAAPEAVDeclaration@234@I@Z")]
+ internal static extern global::System.IntPtr getParameters_0(global::System.IntPtr instance, uint i);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="?addParameters@Template@AST@CppParser@CppSharp@@QEAAXAEAVTemplateParameter@234@@Z")]
+ EntryPoint="?addParameters@Template@AST@CppParser@CppSharp@@QEAAXAEAPEAVDeclaration@234@@Z")]
internal static extern void addParameters_0(global::System.IntPtr instance, global::System.IntPtr s);
[SuppressUnmanagedCodeSecurity]
@@ -7976,14 +7812,18 @@ namespace CppSharp
Marshal.FreeHGlobal(__Instance);
}
- public CppSharp.Parser.AST.TemplateParameter getParameters(uint i)
+ public CppSharp.Parser.AST.Declaration getParameters(uint i)
{
- var __ret = new CppSharp.Parser.AST.TemplateParameter.Internal();
- Internal.getParameters_0((__Instance + __PointerAdjustment), new IntPtr(&__ret), i);
- return CppSharp.Parser.AST.TemplateParameter.__CreateInstance(__ret);
+ var __ret = Internal.getParameters_0((__Instance + __PointerAdjustment), i);
+ CppSharp.Parser.AST.Declaration __result0;
+ if (__ret == IntPtr.Zero) __result0 = null;
+ else if (CppSharp.Parser.AST.Declaration.NativeToManagedMap.ContainsKey(__ret))
+ __result0 = (CppSharp.Parser.AST.Declaration) CppSharp.Parser.AST.Declaration.NativeToManagedMap[__ret];
+ else __result0 = CppSharp.Parser.AST.Declaration.__CreateInstance(__ret);
+ return __result0;
}
- public void addParameters(CppSharp.Parser.AST.TemplateParameter s)
+ public void addParameters(CppSharp.Parser.AST.Declaration s)
{
if (ReferenceEquals(s, null))
throw new global::System.ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
@@ -8024,9 +7864,9 @@ namespace CppSharp
}
}
- public unsafe partial class ClassTemplate : CppSharp.Parser.AST.Template, IDisposable
+ public unsafe partial class TemplateParameter : CppSharp.Parser.AST.Declaration, IDisposable
{
- [StructLayout(LayoutKind.Explicit, Size = 248)]
+ [StructLayout(LayoutKind.Explicit, Size = 208)]
public new partial struct Internal
{
[FieldOffset(0)]
@@ -8069,69 +7909,55 @@ namespace CppSharp
public global::System.IntPtr OriginalPtr;
[FieldOffset(192)]
- public global::System.IntPtr TemplatedDecl;
-
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="??0ClassTemplate@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="??0ClassTemplate@AST@CppParser@CppSharp@@QEAA@AEBV0123@@Z")]
- internal static extern global::System.IntPtr cctor_1(global::System.IntPtr instance, global::System.IntPtr _0);
+ public uint Depth;
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="??1ClassTemplate@AST@CppParser@CppSharp@@QEAA@XZ")]
- internal static extern void dtor_0(global::System.IntPtr instance, int delete);
+ [FieldOffset(196)]
+ public uint Index;
- [SuppressUnmanagedCodeSecurity]
- [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="?getSpecializations@ClassTemplate@AST@CppParser@CppSharp@@QEAAPEAVClassTemplateSpecialization@234@I@Z")]
- internal static extern global::System.IntPtr getSpecializations_0(global::System.IntPtr instance, uint i);
+ [FieldOffset(200)]
+ public byte IsParameterPack;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="?addSpecializations@ClassTemplate@AST@CppParser@CppSharp@@QEAAXAEAPEAVClassTemplateSpecialization@234@@Z")]
- internal static extern void addSpecializations_0(global::System.IntPtr instance, global::System.IntPtr s);
+ EntryPoint="??0TemplateParameter@AST@CppParser@CppSharp@@QEAA@W4DeclarationKind@123@@Z")]
+ internal static extern global::System.IntPtr ctor_0(global::System.IntPtr instance, CppSharp.Parser.AST.DeclarationKind kind);
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
- EntryPoint="?clearSpecializations@ClassTemplate@AST@CppParser@CppSharp@@QEAAXXZ")]
- internal static extern void clearSpecializations_0(global::System.IntPtr instance);
+ EntryPoint="??0TemplateParameter@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="?getSpecializationsCount@ClassTemplate@AST@CppParser@CppSharp@@QEAAIXZ")]
- internal static extern uint getSpecializationsCount_0(global::System.IntPtr instance);
+ EntryPoint="??1TemplateParameter@AST@CppParser@CppSharp@@QEAA@XZ")]
+ internal static extern void dtor_0(global::System.IntPtr instance, int delete);
}
- public static new ClassTemplate __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
+ public static new TemplateParameter __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
{
- return new ClassTemplate(native.ToPointer(), skipVTables);
+ return new TemplateParameter(native.ToPointer(), skipVTables);
}
- public static ClassTemplate __CreateInstance(ClassTemplate.Internal native, bool skipVTables = false)
+ public static TemplateParameter __CreateInstance(TemplateParameter.Internal native, bool skipVTables = false)
{
- return new ClassTemplate(native, skipVTables);
+ return new TemplateParameter(native, skipVTables);
}
- private static void* __CopyValue(ClassTemplate.Internal native)
+ private static void* __CopyValue(TemplateParameter.Internal native)
{
- var ret = Marshal.AllocHGlobal(248);
- CppSharp.Parser.AST.ClassTemplate.Internal.cctor_1(ret, new global::System.IntPtr(&native));
+ var ret = Marshal.AllocHGlobal(208);
+ CppSharp.Parser.AST.TemplateParameter.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return ret.ToPointer();
}
- private ClassTemplate(ClassTemplate.Internal native, bool skipVTables = false)
+ private TemplateParameter(TemplateParameter.Internal native, bool skipVTables = false)
: this(__CopyValue(native), skipVTables)
{
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
}
- protected ClassTemplate(void* native, bool skipVTables = false)
+ protected TemplateParameter(void* native, bool skipVTables = false)
: base((void*) null)
{
__PointerAdjustment = 0;
@@ -8140,19 +7966,20 @@ namespace CppSharp
__Instance = new global::System.IntPtr(native);
}
- public ClassTemplate()
+ public TemplateParameter(CppSharp.Parser.AST.DeclarationKind kind)
: this((void*) null)
{
- __Instance = Marshal.AllocHGlobal(248);
+ __Instance = Marshal.AllocHGlobal(208);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
- Internal.ctor_0((__Instance + __PointerAdjustment));
+ var arg0 = kind;
+ Internal.ctor_0((__Instance + __PointerAdjustment), arg0);
}
- public ClassTemplate(CppSharp.Parser.AST.ClassTemplate _0)
+ public TemplateParameter(CppSharp.Parser.AST.TemplateParameter _0)
: this((void*) null)
{
- __Instance = Marshal.AllocHGlobal(248);
+ __Instance = Marshal.AllocHGlobal(208);
__ownsNativeInstance = true;
NativeToManagedMap[__Instance] = this;
if (ReferenceEquals(_0, null))
@@ -8170,38 +7997,575 @@ namespace CppSharp
Marshal.FreeHGlobal(__Instance);
}
- public CppSharp.Parser.AST.ClassTemplateSpecialization getSpecializations(uint i)
- {
- var __ret = Internal.getSpecializations_0((__Instance + __PointerAdjustment), i);
- CppSharp.Parser.AST.ClassTemplateSpecialization __result0;
- if (__ret == IntPtr.Zero) __result0 = null;
- else if (CppSharp.Parser.AST.ClassTemplateSpecialization.NativeToManagedMap.ContainsKey(__ret))
- __result0 = (CppSharp.Parser.AST.ClassTemplateSpecialization) CppSharp.Parser.AST.ClassTemplateSpecialization.NativeToManagedMap[__ret];
- else __result0 = CppSharp.Parser.AST.ClassTemplateSpecialization.__CreateInstance(__ret);
- return __result0;
- }
-
- public void addSpecializations(CppSharp.Parser.AST.ClassTemplateSpecialization s)
+ public uint Depth
{
- if (ReferenceEquals(s, null))
- throw new global::System.ArgumentNullException("s", "Cannot be null because it is a C++ reference (&).");
- var arg0 = s.__Instance;
- Internal.addSpecializations_0((__Instance + __PointerAdjustment), arg0);
- }
+ get
+ {
+ return ((Internal*) __Instance)->Depth;
+ }
- public void clearSpecializations()
- {
- Internal.clearSpecializations_0((__Instance + __PointerAdjustment));
+ set
+ {
+ ((Internal*) __Instance)->Depth = value;
+ }
}
- public uint SpecializationsCount
+ public uint Index
{
get
{
- var __ret = Internal.getSpecializationsCount_0((__Instance + __PointerAdjustment));
- return __ret;
+ return ((Internal*) __Instance)->Index;
}
- }
+
+ set
+ {
+ ((Internal*) __Instance)->Index = value;
+ }
+ }
+
+ public bool IsParameterPack
+ {
+ get
+ {
+ return ((Internal*) __Instance)->IsParameterPack != 0;
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->IsParameterPack = (byte) (value ? 1 : 0);
+ }
+ }
+ }
+
+ public unsafe partial class TypeTemplateParameter : CppSharp.Parser.AST.TemplateParameter, IDisposable
+ {
+ [StructLayout(LayoutKind.Explicit, Size = 224)]
+ public new partial struct Internal
+ {
+ [FieldOffset(0)]
+ public CppSharp.Parser.AST.DeclarationKind Kind;
+
+ [FieldOffset(4)]
+ public CppSharp.Parser.AST.AccessSpecifier Access;
+
+ [FieldOffset(8)]
+ public global::System.IntPtr _Namespace;
+
+ [FieldOffset(16)]
+ public CppSharp.Parser.SourceLocation.Internal Location;
+
+ [FieldOffset(20)]
+ public int LineNumberStart;
+
+ [FieldOffset(24)]
+ public int LineNumberEnd;
+
+ [FieldOffset(64)]
+ public global::System.IntPtr Comment;
+
+ [FieldOffset(104)]
+ public byte IsIncomplete;
+
+ [FieldOffset(105)]
+ public byte IsDependent;
+
+ [FieldOffset(106)]
+ public byte IsImplicit;
+
+ [FieldOffset(112)]
+ public global::System.IntPtr CompleteDeclaration;
+
+ [FieldOffset(120)]
+ public uint DefinitionOrder;
+
+ [FieldOffset(152)]
+ public global::System.IntPtr OriginalPtr;
+
+ [FieldOffset(192)]
+ public uint Depth;
+
+ [FieldOffset(196)]
+ public uint Index;
+
+ [FieldOffset(200)]
+ public byte IsParameterPack;
+
+ [FieldOffset(208)]
+ public CppSharp.Parser.AST.QualifiedType.Internal DefaultArgument;
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="??0TypeTemplateParameter@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="??0TypeTemplateParameter@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="??1TypeTemplateParameter@AST@CppParser@CppSharp@@QEAA@XZ")]
+ internal static extern void dtor_0(global::System.IntPtr instance, int delete);
+ }
+
+ public static new TypeTemplateParameter __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
+ {
+ return new TypeTemplateParameter(native.ToPointer(), skipVTables);
+ }
+
+ public static TypeTemplateParameter __CreateInstance(TypeTemplateParameter.Internal native, bool skipVTables = false)
+ {
+ return new TypeTemplateParameter(native, skipVTables);
+ }
+
+ private static void* __CopyValue(TypeTemplateParameter.Internal native)
+ {
+ var ret = Marshal.AllocHGlobal(224);
+ CppSharp.Parser.AST.TypeTemplateParameter.Internal.cctor_1(ret, new global::System.IntPtr(&native));
+ return ret.ToPointer();
+ }
+
+ private TypeTemplateParameter(TypeTemplateParameter.Internal native, bool skipVTables = false)
+ : this(__CopyValue(native), skipVTables)
+ {
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ }
+
+ protected TypeTemplateParameter(void* native, bool skipVTables = false)
+ : base((void*) null)
+ {
+ __PointerAdjustment = 0;
+ if (native == null)
+ return;
+ __Instance = new global::System.IntPtr(native);
+ }
+
+ public TypeTemplateParameter()
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(224);
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ Internal.ctor_0((__Instance + __PointerAdjustment));
+ }
+
+ public TypeTemplateParameter(CppSharp.Parser.AST.TypeTemplateParameter _0)
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(224);
+ __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)
+ {
+ CppSharp.Parser.AST.Declaration __dummy;
+ NativeToManagedMap.TryRemove(__Instance, out __dummy);
+ Internal.dtor_0((__Instance + __PointerAdjustment), 0);
+ if (__ownsNativeInstance)
+ Marshal.FreeHGlobal(__Instance);
+ }
+
+ public CppSharp.Parser.AST.QualifiedType DefaultArgument
+ {
+ get
+ {
+ return CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->DefaultArgument);
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->DefaultArgument = ReferenceEquals(value, null) ? new CppSharp.Parser.AST.QualifiedType.Internal() : *(CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance);
+ }
+ }
+ }
+
+ public unsafe partial class NonTypeTemplateParameter : CppSharp.Parser.AST.TemplateParameter, IDisposable
+ {
+ [StructLayout(LayoutKind.Explicit, Size = 224)]
+ public new partial struct Internal
+ {
+ [FieldOffset(0)]
+ public CppSharp.Parser.AST.DeclarationKind Kind;
+
+ [FieldOffset(4)]
+ public CppSharp.Parser.AST.AccessSpecifier Access;
+
+ [FieldOffset(8)]
+ public global::System.IntPtr _Namespace;
+
+ [FieldOffset(16)]
+ public CppSharp.Parser.SourceLocation.Internal Location;
+
+ [FieldOffset(20)]
+ public int LineNumberStart;
+
+ [FieldOffset(24)]
+ public int LineNumberEnd;
+
+ [FieldOffset(64)]
+ public global::System.IntPtr Comment;
+
+ [FieldOffset(104)]
+ public byte IsIncomplete;
+
+ [FieldOffset(105)]
+ public byte IsDependent;
+
+ [FieldOffset(106)]
+ public byte IsImplicit;
+
+ [FieldOffset(112)]
+ public global::System.IntPtr CompleteDeclaration;
+
+ [FieldOffset(120)]
+ public uint DefinitionOrder;
+
+ [FieldOffset(152)]
+ public global::System.IntPtr OriginalPtr;
+
+ [FieldOffset(192)]
+ public uint Depth;
+
+ [FieldOffset(196)]
+ public uint Index;
+
+ [FieldOffset(200)]
+ public byte IsParameterPack;
+
+ [FieldOffset(208)]
+ public global::System.IntPtr DefaultArgument;
+
+ [FieldOffset(216)]
+ public uint Position;
+
+ [FieldOffset(220)]
+ public byte IsPackExpansion;
+
+ [FieldOffset(221)]
+ public byte IsExpandedParameterPack;
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="??0NonTypeTemplateParameter@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="??0NonTypeTemplateParameter@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="??1NonTypeTemplateParameter@AST@CppParser@CppSharp@@QEAA@XZ")]
+ internal static extern void dtor_0(global::System.IntPtr instance, int delete);
+ }
+
+ public static new NonTypeTemplateParameter __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
+ {
+ return new NonTypeTemplateParameter(native.ToPointer(), skipVTables);
+ }
+
+ public static NonTypeTemplateParameter __CreateInstance(NonTypeTemplateParameter.Internal native, bool skipVTables = false)
+ {
+ return new NonTypeTemplateParameter(native, skipVTables);
+ }
+
+ private static void* __CopyValue(NonTypeTemplateParameter.Internal native)
+ {
+ var ret = Marshal.AllocHGlobal(224);
+ CppSharp.Parser.AST.NonTypeTemplateParameter.Internal.cctor_1(ret, new global::System.IntPtr(&native));
+ return ret.ToPointer();
+ }
+
+ private NonTypeTemplateParameter(NonTypeTemplateParameter.Internal native, bool skipVTables = false)
+ : this(__CopyValue(native), skipVTables)
+ {
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ }
+
+ protected NonTypeTemplateParameter(void* native, bool skipVTables = false)
+ : base((void*) null)
+ {
+ __PointerAdjustment = 0;
+ if (native == null)
+ return;
+ __Instance = new global::System.IntPtr(native);
+ }
+
+ public NonTypeTemplateParameter()
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(224);
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ Internal.ctor_0((__Instance + __PointerAdjustment));
+ }
+
+ public NonTypeTemplateParameter(CppSharp.Parser.AST.NonTypeTemplateParameter _0)
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(224);
+ __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)
+ {
+ CppSharp.Parser.AST.Declaration __dummy;
+ NativeToManagedMap.TryRemove(__Instance, out __dummy);
+ Internal.dtor_0((__Instance + __PointerAdjustment), 0);
+ if (__ownsNativeInstance)
+ Marshal.FreeHGlobal(__Instance);
+ }
+
+ public CppSharp.Parser.AST.Expression DefaultArgument
+ {
+ get
+ {
+ CppSharp.Parser.AST.Expression __result0;
+ if (((Internal*) __Instance)->DefaultArgument == IntPtr.Zero) __result0 = null;
+ else if (CppSharp.Parser.AST.Expression.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->DefaultArgument))
+ __result0 = (CppSharp.Parser.AST.Expression) CppSharp.Parser.AST.Expression.NativeToManagedMap[((Internal*) __Instance)->DefaultArgument];
+ else __result0 = CppSharp.Parser.AST.Expression.__CreateInstance(((Internal*) __Instance)->DefaultArgument);
+ return __result0;
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->DefaultArgument = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance;
+ }
+ }
+
+ public uint Position
+ {
+ get
+ {
+ return ((Internal*) __Instance)->Position;
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->Position = value;
+ }
+ }
+
+ public bool IsPackExpansion
+ {
+ get
+ {
+ return ((Internal*) __Instance)->IsPackExpansion != 0;
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->IsPackExpansion = (byte) (value ? 1 : 0);
+ }
+ }
+
+ public bool IsExpandedParameterPack
+ {
+ get
+ {
+ return ((Internal*) __Instance)->IsExpandedParameterPack != 0;
+ }
+
+ set
+ {
+ ((Internal*) __Instance)->IsExpandedParameterPack = (byte) (value ? 1 : 0);
+ }
+ }
+ }
+
+ public unsafe partial class ClassTemplate : CppSharp.Parser.AST.Template, IDisposable
+ {
+ [StructLayout(LayoutKind.Explicit, Size = 248)]
+ public new partial struct Internal
+ {
+ [FieldOffset(0)]
+ public CppSharp.Parser.AST.DeclarationKind Kind;
+
+ [FieldOffset(4)]
+ public CppSharp.Parser.AST.AccessSpecifier Access;
+
+ [FieldOffset(8)]
+ public global::System.IntPtr _Namespace;
+
+ [FieldOffset(16)]
+ public CppSharp.Parser.SourceLocation.Internal Location;
+
+ [FieldOffset(20)]
+ public int LineNumberStart;
+
+ [FieldOffset(24)]
+ public int LineNumberEnd;
+
+ [FieldOffset(64)]
+ public global::System.IntPtr Comment;
+
+ [FieldOffset(104)]
+ public byte IsIncomplete;
+
+ [FieldOffset(105)]
+ public byte IsDependent;
+
+ [FieldOffset(106)]
+ public byte IsImplicit;
+
+ [FieldOffset(112)]
+ public global::System.IntPtr CompleteDeclaration;
+
+ [FieldOffset(120)]
+ public uint DefinitionOrder;
+
+ [FieldOffset(152)]
+ public global::System.IntPtr OriginalPtr;
+
+ [FieldOffset(192)]
+ public global::System.IntPtr TemplatedDecl;
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="??0ClassTemplate@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="??0ClassTemplate@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="??1ClassTemplate@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="?getSpecializations@ClassTemplate@AST@CppParser@CppSharp@@QEAAPEAVClassTemplateSpecialization@234@I@Z")]
+ internal static extern global::System.IntPtr getSpecializations_0(global::System.IntPtr instance, uint i);
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="?addSpecializations@ClassTemplate@AST@CppParser@CppSharp@@QEAAXAEAPEAVClassTemplateSpecialization@234@@Z")]
+ internal static extern void addSpecializations_0(global::System.IntPtr instance, global::System.IntPtr s);
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="?clearSpecializations@ClassTemplate@AST@CppParser@CppSharp@@QEAAXXZ")]
+ internal static extern void clearSpecializations_0(global::System.IntPtr instance);
+
+ [SuppressUnmanagedCodeSecurity]
+ [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
+ EntryPoint="?getSpecializationsCount@ClassTemplate@AST@CppParser@CppSharp@@QEAAIXZ")]
+ internal static extern uint getSpecializationsCount_0(global::System.IntPtr instance);
+ }
+
+ public static new ClassTemplate __CreateInstance(global::System.IntPtr native, bool skipVTables = false)
+ {
+ return new ClassTemplate(native.ToPointer(), skipVTables);
+ }
+
+ public static ClassTemplate __CreateInstance(ClassTemplate.Internal native, bool skipVTables = false)
+ {
+ return new ClassTemplate(native, skipVTables);
+ }
+
+ private static void* __CopyValue(ClassTemplate.Internal native)
+ {
+ var ret = Marshal.AllocHGlobal(248);
+ CppSharp.Parser.AST.ClassTemplate.Internal.cctor_1(ret, new global::System.IntPtr(&native));
+ return ret.ToPointer();
+ }
+
+ private ClassTemplate(ClassTemplate.Internal native, bool skipVTables = false)
+ : this(__CopyValue(native), skipVTables)
+ {
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ }
+
+ protected ClassTemplate(void* native, bool skipVTables = false)
+ : base((void*) null)
+ {
+ __PointerAdjustment = 0;
+ if (native == null)
+ return;
+ __Instance = new global::System.IntPtr(native);
+ }
+
+ public ClassTemplate()
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(248);
+ __ownsNativeInstance = true;
+ NativeToManagedMap[__Instance] = this;
+ Internal.ctor_0((__Instance + __PointerAdjustment));
+ }
+
+ public ClassTemplate(CppSharp.Parser.AST.ClassTemplate _0)
+ : this((void*) null)
+ {
+ __Instance = Marshal.AllocHGlobal(248);
+ __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)
+ {
+ CppSharp.Parser.AST.Declaration __dummy;
+ NativeToManagedMap.TryRemove(__Instance, out __dummy);
+ Internal.dtor_0((__Instance + __PointerAdjustment), 0);
+ if (__ownsNativeInstance)
+ Marshal.FreeHGlobal(__Instance);
+ }
+
+ public CppSharp.Parser.AST.ClassTemplateSpecialization getSpecializations(uint i)
+ {
+ var __ret = Internal.getSpecializations_0((__Instance + __PointerAdjustment), i);
+ CppSharp.Parser.AST.ClassTemplateSpecialization __result0;
+ if (__ret == IntPtr.Zero) __result0 = null;
+ else if (CppSharp.Parser.AST.ClassTemplateSpecialization.NativeToManagedMap.ContainsKey(__ret))
+ __result0 = (CppSharp.Parser.AST.ClassTemplateSpecialization) CppSharp.Parser.AST.ClassTemplateSpecialization.NativeToManagedMap[__ret];
+ else __result0 = CppSharp.Parser.AST.ClassTemplateSpecialization.__CreateInstance(__ret);
+ return __result0;
+ }
+
+ public void addSpecializations(CppSharp.Parser.AST.ClassTemplateSpecialization 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.addSpecializations_0((__Instance + __PointerAdjustment), arg0);
+ }
+
+ public void clearSpecializations()
+ {
+ Internal.clearSpecializations_0((__Instance + __PointerAdjustment));
+ }
+
+ public uint SpecializationsCount
+ {
+ get
+ {
+ var __ret = Internal.getSpecializationsCount_0((__Instance + __PointerAdjustment));
+ return __ret;
+ }
+ }
}
public unsafe partial class ClassTemplateSpecialization : CppSharp.Parser.AST.Class, IDisposable
@@ -8812,7 +9176,7 @@ namespace CppSharp
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
EntryPoint="??0FunctionTemplateSpecialization@AST@CppParser@CppSharp@@QEAA@AEBV0123@@Z")]
- internal static extern global::System.IntPtr cctor_2(global::System.IntPtr instance, global::System.IntPtr _0);
+ 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,
@@ -8861,7 +9225,7 @@ namespace CppSharp
private static void* __CopyValue(FunctionTemplateSpecialization.Internal native)
{
var ret = Marshal.AllocHGlobal(48);
- CppSharp.Parser.AST.FunctionTemplateSpecialization.Internal.cctor_2(ret, new global::System.IntPtr(&native));
+ CppSharp.Parser.AST.FunctionTemplateSpecialization.Internal.cctor_1(ret, new global::System.IntPtr(&native));
return ret.ToPointer();
}
@@ -8895,7 +9259,7 @@ namespace CppSharp
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_2((__Instance + __PointerAdjustment), arg0);
+ Internal.cctor_1((__Instance + __PointerAdjustment), arg0);
}
public void Dispose()
@@ -9249,7 +9613,7 @@ namespace CppSharp
set
{
- ((Internal*) __Instance)->OriginalPtr = value;
+ ((Internal*) __Instance)->OriginalPtr = (global::System.IntPtr) value;
}
}
diff --git a/src/CppParser/Parser.cpp b/src/CppParser/Parser.cpp
index 3310a2bc..6b3fdd19 100644
--- a/src/CppParser/Parser.cpp
+++ b/src/CppParser/Parser.cpp
@@ -29,7 +29,6 @@
#include
#include
#include
-#include
#include
#include
#include
@@ -957,41 +956,14 @@ Parser::WalkClassTemplatePartialSpecialization(clang::ClassTemplatePartialSpecia
//-----------------------------------//
-CppSharp::CppParser::TemplateParameter
-WalkTemplateParameter(const clang::NamedDecl* D)
+std::vector Parser::WalkTemplateParameterList(const clang::TemplateParameterList* TPL)
{
- using namespace clang;
-
- auto TP = CppSharp::CppParser::TemplateParameter();
- if (D == nullptr)
- return TP;
-
- TP.Name = GetDeclName(D);
- switch (D->getKind())
- {
- case Decl::TemplateTypeParm:
- {
- auto TTPD = cast(D);
- TP.IsTypeParameter = true;
- break;
- }
- default:
- break;
- }
- return TP;
-}
-
-//-----------------------------------//
-
-static std::vector
-WalkTemplateParameterList(const clang::TemplateParameterList* TPL)
-{
- auto params = std::vector();
+ auto params = std::vector();
for (auto it = TPL->begin(); it != TPL->end(); ++it)
{
auto ND = *it;
- auto TP = WalkTemplateParameter(ND);
+ auto TP = WalkDeclaration(ND, /*IgnoreSystemDecls=*/false);
params.push_back(TP);
}
@@ -1031,6 +1003,41 @@ ClassTemplate* Parser::WalkClassTemplate(clang::ClassTemplateDecl* TD)
//-----------------------------------//
+TypeTemplateParameter* Parser::WalkTypeTemplateParameter(clang::TemplateTypeParmDecl* TTPD)
+{
+ using namespace clang;
+
+ auto TP = new CppSharp::CppParser::TypeTemplateParameter();
+ TP->Name = GetDeclName(TTPD);
+ HandleDeclaration(TTPD, TP);
+ if (TTPD->hasDefaultArgument())
+ TP->DefaultArgument = GetQualifiedType(
+ TTPD->getDefaultArgument(), WalkType(TTPD->getDefaultArgument()));
+ TP->Depth = TTPD->getDepth();
+ TP->Index = TTPD->getIndex();
+ TP->IsParameterPack = TTPD->isParameterPack();
+ return TP;
+}
+
+//-----------------------------------//
+
+NonTypeTemplateParameter* Parser::WalkNonTypeTemplateParameter(clang::NonTypeTemplateParmDecl* NTTPD)
+{
+ using namespace clang;
+
+ auto NTP = new CppSharp::CppParser::NonTypeTemplateParameter();
+ NTP->Name = GetDeclName(NTTPD);
+ HandleDeclaration(NTTPD, NTP);
+ if (NTTPD->hasDefaultArgument())
+ NTP->DefaultArgument = WalkExpression(NTTPD->getDefaultArgument());
+ NTP->Depth = NTTPD->getDepth();
+ NTP->Index = NTTPD->getIndex();
+ NTP->IsParameterPack = NTTPD->isParameterPack();
+ return NTP;
+}
+
+//-----------------------------------//
+
std::vector
Parser::WalkTemplateArgumentList(const clang::TemplateArgumentList* TAL,
clang::TemplateSpecializationTypeLoc* TSTL)
@@ -1977,7 +1984,7 @@ Type* Parser::WalkType(clang::QualType QualType, clang::TypeLoc* TL,
auto TPT = new CppSharp::CppParser::TemplateParameterType();
if (auto Ident = TP->getIdentifier())
- TPT->Parameter.Name = Ident->getName();
+ TPT->Parameter->Name = Ident->getName();
TypeLoc UTL, ETL, ITL, Next;
@@ -2005,7 +2012,7 @@ Type* Parser::WalkType(clang::QualType QualType, clang::TypeLoc* TL,
assert(TL->getTypeLocClass() == TypeLoc::TemplateTypeParm);
auto TTTL = TL->getAs();
- TPT->Parameter = WalkTemplateParameter(TTTL.getDecl());
+ TPT->Parameter = WalkTypeTemplateParameter(TTTL.getDecl());
}
TPT->Depth = TP->getDepth();
TPT->Index = TP->getIndex();
@@ -2734,6 +2741,7 @@ AST::Expression* Parser::WalkExpression(clang::Expr* Expr)
if (Expr->getStmtClass() != Stmt::CharacterLiteralClass &&
Expr->getStmtClass() != Stmt::CXXBoolLiteralExprClass &&
Expr->getStmtClass() != Stmt::UnaryExprOrTypeTraitExprClass &&
+ !Expr->isValueDependent() &&
Expr->EvaluateAsInt(integer, C->getASTContext()))
return new AST::Expression(integer.toString(10));
return new AST::Expression(GetStringFromStatement(Expr));
@@ -3042,6 +3050,18 @@ Declaration* Parser::WalkDeclaration(clang::Decl* D,
Decl = WalkFriend(FD);
break;
}
+ case Decl::TemplateTypeParm:
+ {
+ auto TTPD = cast(D);
+ Decl = WalkTypeTemplateParameter(TTPD);
+ break;
+ }
+ case Decl::NonTypeTemplateParm:
+ {
+ auto NTTPD = cast(D);
+ Decl = WalkNonTypeTemplateParameter(NTTPD);
+ break;
+ }
// Ignore these declarations since they must have been declared in
// a class already.
case Decl::CXXDestructor:
diff --git a/src/CppParser/Parser.h b/src/CppParser/Parser.h
index ae0dfa70..006df8dc 100644
--- a/src/CppParser/Parser.h
+++ b/src/CppParser/Parser.h
@@ -12,6 +12,7 @@
#include
#include
+#include
#include
#include
#include
@@ -81,8 +82,6 @@ protected:
WalkClassTemplatePartialSpecialization(clang::ClassTemplatePartialSpecializationDecl* CTS);
Method* WalkMethodCXX(clang::CXXMethodDecl* MD);
Field* WalkFieldCXX(clang::FieldDecl* FD, Class* Class);
- ClassTemplate* WalkClassTemplate(clang::ClassTemplateDecl* TD);
- FunctionTemplate* WalkFunctionTemplate(clang::FunctionTemplateDecl* TD);
FunctionTemplateSpecialization* WalkFunctionTemplateSpec(clang::FunctionTemplateSpecializationInfo* FTS, Function* Function);
Variable* WalkVariable(clang::VarDecl* VD);
Friend* WalkFriend(clang::FriendDecl* FD);
@@ -90,6 +89,11 @@ protected:
Type* WalkType(clang::QualType QualType, clang::TypeLoc* TL = 0,
bool DesugarType = false);
TemplateArgument WalkTemplateArgument(const clang::TemplateArgument& TA, clang::TemplateArgumentLoc* ArgLoc);
+ TypeTemplateParameter* WalkTypeTemplateParameter(clang::TemplateTypeParmDecl* TTPD);
+ NonTypeTemplateParameter* WalkNonTypeTemplateParameter(clang::NonTypeTemplateParmDecl* TTPD);
+ std::vector WalkTemplateParameterList(const clang::TemplateParameterList* TPL);
+ ClassTemplate* WalkClassTemplate(clang::ClassTemplateDecl* TD);
+ FunctionTemplate* WalkFunctionTemplate(clang::FunctionTemplateDecl* TD);
std::vector WalkTemplateArgumentList(const clang::TemplateArgumentList* TAL, clang::TemplateSpecializationTypeLoc* TSTL);
std::vector WalkTemplateArgumentList(const clang::TemplateArgumentList* TAL, const clang::ASTTemplateArgumentListInfo* TSTL);
void WalkVTable(clang::CXXRecordDecl* RD, Class* C);
diff --git a/src/Generator.Tests/AST/TestAST.cs b/src/Generator.Tests/AST/TestAST.cs
index 0117a3e9..59beeff2 100644
--- a/src/Generator.Tests/AST/TestAST.cs
+++ b/src/Generator.Tests/AST/TestAST.cs
@@ -4,6 +4,7 @@ using CppSharp.AST;
using CppSharp.AST.Extensions;
using NUnit.Framework;
using CppSharp.Generators.CSharp;
+using System;
namespace CppSharp.Generator.Tests.AST
{
@@ -149,6 +150,16 @@ namespace CppSharp.Generator.Tests.AST
{
throw new System.NotImplementedException();
}
+
+ public bool VisitTemplateParameter(TypeTemplateParameter templateParameter)
+ {
+ throw new NotImplementedException();
+ }
+
+ public bool VisitNonTypeTemplateParameter(NonTypeTemplateParameter nonTypeTemplateParameter)
+ {
+ throw new NotImplementedException();
+ }
}
#endregion
@@ -184,8 +195,6 @@ namespace CppSharp.Generator.Tests.AST
Assert.AreEqual(2, twoParamMethodTemplate.Parameters.Count);
Assert.AreEqual("T", twoParamMethodTemplate.Parameters[0].Name);
Assert.AreEqual("S", twoParamMethodTemplate.Parameters[1].Name);
- Assert.IsTrue(twoParamMethodTemplate.Parameters[0].IsTypeParameter);
- Assert.IsTrue(twoParamMethodTemplate.Parameters[1].IsTypeParameter);
var twoParamMethod = twoParamMethodTemplate.TemplatedFunction as Method;
Assert.IsNotNull(twoParamMethod);
Assert.IsInstanceOf(twoParamMethod.Parameters[0].Type);
diff --git a/src/Generator/Generators/CLI/CLIHeadersTemplate.cs b/src/Generator/Generators/CLI/CLIHeadersTemplate.cs
index 27b08ead..ed739be7 100644
--- a/src/Generator/Generators/CLI/CLIHeadersTemplate.cs
+++ b/src/Generator/Generators/CLI/CLIHeadersTemplate.cs
@@ -347,7 +347,7 @@ namespace CppSharp.Generators.CLI
// Process the generic type constraints
var constraints = new List();
- foreach (var param in template.Parameters)
+ foreach (var param in template.Parameters.OfType())
{
if (string.IsNullOrWhiteSpace(param.Constraint))
continue;
diff --git a/src/Generator/Generators/CLI/CLITypePrinter.cs b/src/Generator/Generators/CLI/CLITypePrinter.cs
index c5ae8a93..2b6e64c1 100644
--- a/src/Generator/Generators/CLI/CLITypePrinter.cs
+++ b/src/Generator/Generators/CLI/CLITypePrinter.cs
@@ -429,5 +429,15 @@ namespace CppSharp.Generators.CLI
{
return type.Visit(this);
}
+
+ public string VisitTemplateParameter(TypeTemplateParameter templateParameter)
+ {
+ return templateParameter.Name;
+ }
+
+ public string VisitNonTypeTemplateParameter(NonTypeTemplateParameter nonTypeTemplateParameter)
+ {
+ return nonTypeTemplateParameter.Name;
+ }
}
}
diff --git a/src/Generator/Generators/CSharp/CSharpTypePrinter.cs b/src/Generator/Generators/CSharp/CSharpTypePrinter.cs
index dfbf6c45..15da956b 100644
--- a/src/Generator/Generators/CSharp/CSharpTypePrinter.cs
+++ b/src/Generator/Generators/CSharp/CSharpTypePrinter.cs
@@ -702,6 +702,16 @@ namespace CppSharp.Generators.CSharp
{
return type.Visit(this).Type;
}
+
+ public CSharpTypePrinterResult VisitTemplateParameter(TypeTemplateParameter templateParameter)
+ {
+ return templateParameter.Name;
+ }
+
+ public CSharpTypePrinterResult VisitNonTypeTemplateParameter(NonTypeTemplateParameter nonTypeTemplateParameter)
+ {
+ return nonTypeTemplateParameter.Name;
+ }
}
public static class CSharpTypePrinterExtensions
diff --git a/src/Generator/Passes/CheckMacrosPass.cs b/src/Generator/Passes/CheckMacrosPass.cs
index 1946c30f..d3373728 100644
--- a/src/Generator/Passes/CheckMacrosPass.cs
+++ b/src/Generator/Passes/CheckMacrosPass.cs
@@ -203,40 +203,34 @@ namespace CppSharp.Passes
public override bool VisitClassTemplateDecl(ClassTemplate template)
{
- var expansions = template.PreprocessedEntities.OfType();
-
- var expansion = expansions.FirstOrDefault(e => e.Text.StartsWith(Prefix + "_CONSTRAINT"));
- if (expansion != null)
- {
- var args = GetArguments(expansion.Text);
- for (var i = 0; i < template.Parameters.Count && i < args.Length; ++i)
- {
- var param = template.Parameters[i];
- param.Constraint = args[i];
- template.Parameters[i] = param;
- }
- }
+ CheckForTemplateConstraints(template);
return base.VisitClassTemplateDecl(template);
}
public override bool VisitFunctionTemplateDecl(FunctionTemplate template)
+ {
+ CheckForTemplateConstraints(template);
+
+ return base.VisitFunctionTemplateDecl(template);
+ }
+
+ private void CheckForTemplateConstraints(Template template)
{
var expansions = template.PreprocessedEntities.OfType();
- var expansion = expansions.FirstOrDefault(e => e.Text.StartsWith(Prefix + "_CONSTRAINT"));
+ var expansion = expansions.FirstOrDefault(
+ e => e.Text.StartsWith(Prefix + "_CONSTRAINT", StringComparison.Ordinal));
if (expansion != null)
{
var args = GetArguments(expansion.Text);
for (var i = 0; i < template.Parameters.Count && i < args.Length; ++i)
{
- var param = template.Parameters[i];
- param.Constraint = args[i];
- template.Parameters[i] = param;
+ var templateParam = template.Parameters[i] as TypeTemplateParameter;
+ if (templateParam != null)
+ templateParam.Constraint = args[i];
}
}
-
- return base.VisitFunctionTemplateDecl(template);
}
private static string[] GetArguments(string str)
diff --git a/src/Generator/Passes/CheckVirtualOverrideReturnCovariance.cs b/src/Generator/Passes/CheckVirtualOverrideReturnCovariance.cs
index 0322089a..71a3d4ea 100644
--- a/src/Generator/Passes/CheckVirtualOverrideReturnCovariance.cs
+++ b/src/Generator/Passes/CheckVirtualOverrideReturnCovariance.cs
@@ -242,6 +242,16 @@ namespace CppSharp.Passes
return false;
}
+ public bool VisitTemplateParameter(TypeTemplateParameter templateParameter)
+ {
+ return false;
+ }
+
+ public bool VisitNonTypeTemplateParameter(NonTypeTemplateParameter nonTypeTemplateParameter)
+ {
+ return false;
+ }
+
#endregion
}
diff --git a/src/Generator/Types/CppTypePrinter.cs b/src/Generator/Types/CppTypePrinter.cs
index f378617e..cc5734fd 100644
--- a/src/Generator/Types/CppTypePrinter.cs
+++ b/src/Generator/Types/CppTypePrinter.cs
@@ -342,5 +342,23 @@ namespace CppSharp.Types
{
return type.Visit(this);
}
+
+ public string VisitTemplateParameter(TypeTemplateParameter templateParameter)
+ {
+ if (templateParameter.DefaultArgument.Type == null)
+ return templateParameter.Name;
+
+ return string.Format("{0} = {1}", templateParameter.Name,
+ templateParameter.DefaultArgument.Visit(this));
+ }
+
+ public string VisitNonTypeTemplateParameter(NonTypeTemplateParameter nonTypeTemplateParameter)
+ {
+ if (nonTypeTemplateParameter.DefaultArgument == null)
+ return nonTypeTemplateParameter.Name;
+
+ return string.Format("{0} = {1}", nonTypeTemplateParameter.Name,
+ nonTypeTemplateParameter.DefaultArgument.String);
+ }
}
}