From e4200f4690d9b06cd88b160aacafd4d83b0e0fcd Mon Sep 17 00:00:00 2001 From: Dimitar Dobrev Date: Fri, 15 Apr 2016 03:31:14 +0300 Subject: [PATCH] Fixed the wrapping of template parameters in the parser. Signed-off-by: Dimitar Dobrev --- src/AST/ASTVisitor.cs | 26 +- src/AST/Declaration.cs | 2 + src/AST/Template.cs | 80 +- src/AST/Type.cs | 5 +- src/Core/Parser/ASTConverter.cs | 50 +- src/CppParser/AST.cpp | 64 +- src/CppParser/AST.h | 56 +- src/CppParser/Bindings/CLI/AST.cpp | 292 ++++-- src/CppParser/Bindings/CLI/AST.h | 142 ++- .../CSharp/i686-apple-darwin12.4.0/AST.cs | 888 +++++++++++------ .../Bindings/CSharp/i686-pc-win32-msvc/AST.cs | 890 ++++++++++++------ .../CSharp/x86_64-apple-darwin12.4.0/AST.cs | 882 ++++++++++++----- .../Bindings/CSharp/x86_64-linux-gnu/AST.cs | 882 ++++++++++++----- .../CSharp/x86_64-pc-win32-msvc/AST.cs | 886 ++++++++++++----- src/CppParser/Parser.cpp | 86 +- src/CppParser/Parser.h | 8 +- src/Generator.Tests/AST/TestAST.cs | 13 +- .../Generators/CLI/CLIHeadersTemplate.cs | 2 +- .../Generators/CLI/CLITypePrinter.cs | 10 + .../Generators/CSharp/CSharpTypePrinter.cs | 10 + src/Generator/Passes/CheckMacrosPass.cs | 32 +- .../CheckVirtualOverrideReturnCovariance.cs | 10 + src/Generator/Types/CppTypePrinter.cs | 18 + 23 files changed, 3781 insertions(+), 1553 deletions(-) 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); + } } }