diff --git a/src/AST/ASTVisitor.cs b/src/AST/ASTVisitor.cs index fe580fc5..44ea798c 100644 --- a/src/AST/ASTVisitor.cs +++ b/src/AST/ASTVisitor.cs @@ -84,7 +84,7 @@ namespace CppSharp.AST if (array.SizeType == ArrayType.ArraySize.Dependent) return false; - return array.Type.Visit(this, quals); + return array.QualifiedType.Visit(this); } public virtual bool VisitFunctionType(FunctionType function, TypeQualifiers quals) @@ -119,7 +119,7 @@ namespace CppSharp.AST if (!VisitType(member, quals)) return false; - return member.Pointee.Visit(this, quals); + return member.QualifiedPointee.Visit(this); } public virtual bool VisitBuiltinType(BuiltinType builtin, TypeQualifiers quals) diff --git a/src/AST/Template.cs b/src/AST/Template.cs index 74b28b25..42cd6af3 100644 --- a/src/AST/Template.cs +++ b/src/AST/Template.cs @@ -168,7 +168,7 @@ namespace CppSharp.AST /// public class ClassTemplateSpecialization : Class { - public ClassTemplate TemplatedDecl; + public ClassTemplate TemplatedDecl; public List Arguments; diff --git a/src/AST/Type.cs b/src/AST/Type.cs index e6d6d4f0..bb85852a 100644 --- a/src/AST/Type.cs +++ b/src/AST/Type.cs @@ -136,7 +136,7 @@ namespace CppSharp.AST } // Type of the array elements. - public Type Type; + public QualifiedType QualifiedType; // Size type of array. public ArraySize SizeType; @@ -144,6 +144,11 @@ namespace CppSharp.AST // In case of a constant size array. public long Size; + public Type Type + { + get { return QualifiedType.Type; } + } + public override T Visit(ITypeVisitor visitor, TypeQualifiers quals) { return visitor.VisitArrayType(this, quals); @@ -153,7 +158,7 @@ namespace CppSharp.AST { var type = obj as ArrayType; if (type == null) return false; - var equals = Type.Equals(type.Type) && SizeType.Equals(type.SizeType); + var equals = QualifiedType.Equals(type.QualifiedType) && SizeType.Equals(type.SizeType); if (SizeType == ArraySize.Constant) equals &= Size.Equals(type.Size); @@ -266,7 +271,12 @@ namespace CppSharp.AST /// public class MemberPointerType : Type { - public Type Pointee; + public QualifiedType QualifiedPointee; + + public Type Pointee + { + get { return QualifiedPointee.Type; } + } public override T Visit(ITypeVisitor visitor, TypeQualifiers quals) { @@ -278,7 +288,7 @@ namespace CppSharp.AST var pointer = obj as MemberPointerType; if (pointer == null) return false; - return Pointee.Equals(pointer.Pointee); + return QualifiedPointee.Equals(pointer.QualifiedPointee); } public override int GetHashCode() diff --git a/src/AST/TypeExtensions.cs b/src/AST/TypeExtensions.cs index 174480b1..a29df940 100644 --- a/src/AST/TypeExtensions.cs +++ b/src/AST/TypeExtensions.cs @@ -197,7 +197,7 @@ return ptr.Pointee; var memberPtr = t as MemberPointerType; if (memberPtr != null) - return memberPtr.Pointee; + return memberPtr.QualifiedPointee.Type; return null; } diff --git a/src/Core/Parser/ASTConverter.cs b/src/Core/Parser/ASTConverter.cs index 2dbb728d..46df91d7 100644 --- a/src/Core/Parser/ASTConverter.cs +++ b/src/Core/Parser/ASTConverter.cs @@ -354,7 +354,7 @@ namespace CppSharp { Size = type.Size, SizeType = VisitArraySizeType(type.SizeType), - Type = VisitQualified(type.QualifiedType).Type + QualifiedType = VisitQualified(type.QualifiedType) }; VisitType(type, _type); return _type; @@ -408,7 +408,7 @@ namespace CppSharp { var _type = new CppSharp.AST.MemberPointerType(); VisitType(type, _type); - _type.Pointee = VisitQualified(type.Pointee).Type; + _type.QualifiedPointee = VisitQualified(type.Pointee); return _type; } @@ -502,8 +502,8 @@ namespace CppSharp public override AST.Type VisitTemplateParameterSubstitution(TemplateParameterSubstitutionType type) { - throw new NotImplementedException(); var _type = new CppSharp.AST.TemplateParameterSubstitutionType(); + _type.Replacement = VisitQualified(type.Replacement); VisitType(type, _type); return _type; } @@ -1262,7 +1262,12 @@ namespace CppSharp { var _decl = new AST.ClassTemplate(); VisitTemplate(decl, _decl); - + for (uint i = 0; i < decl.SpecializationsCount; ++i) + { + var spec = decl.getSpecializations(i); + var _spec = (AST.ClassTemplateSpecialization)Visit(spec); + _decl.Specializations.Add(_spec); + } return _decl; } @@ -1270,21 +1275,83 @@ namespace CppSharp ClassTemplateSpecialization decl) { var _decl = new AST.ClassTemplateSpecialization(); + VisitClassTemplateSpecialization(decl, _decl); + return _decl; + } + + private void VisitClassTemplateSpecialization(ClassTemplateSpecialization decl, AST.ClassTemplateSpecialization _decl) + { VisitClass(decl, _decl); + _decl.SpecializationKind = VisitSpecializationKind(decl.SpecializationKind); + _decl.TemplatedDecl = (AST.ClassTemplate)Visit(decl.TemplatedDecl); + for (uint i = 0; i < decl.ArgumentsCount; ++i) + { + var arg = decl.getArguments(i); + var _arg = VisitTemplateArgument(arg); + _decl.Arguments.Add(_arg); + } + } - //for (uint i = 0; i < decl.ArgumentsCount; ++i) - //{ - // var _arg = decl.getArguments(i); - // _decl.Arguments.Add(_arg); - //} + private AST.TemplateArgument VisitTemplateArgument(TemplateArgument arg) + { + var _arg = new AST.TemplateArgument(); + _arg.Kind = VisitTemplateArgumentKind(arg.Kind); + _arg.Type = typeConverter.VisitQualified(arg.Type); + _arg.Declaration = Visit(arg.Declaration); + _arg.Integral = arg.Integral; + return _arg; + } - return _decl; + private AST.TemplateArgument.ArgumentKind VisitTemplateArgumentKind(TemplateArgument.ArgumentKind argumentKind) + { + switch (argumentKind) + { + case TemplateArgument.ArgumentKind.Declaration: + return AST.TemplateArgument.ArgumentKind.Declaration; + case TemplateArgument.ArgumentKind.Expression: + return AST.TemplateArgument.ArgumentKind.Expression; + case TemplateArgument.ArgumentKind.Integral: + return AST.TemplateArgument.ArgumentKind.Integral; + case TemplateArgument.ArgumentKind.NullPtr: + return AST.TemplateArgument.ArgumentKind.NullPtr; + case TemplateArgument.ArgumentKind.Pack: + return AST.TemplateArgument.ArgumentKind.Pack; + case TemplateArgument.ArgumentKind.Template: + return AST.TemplateArgument.ArgumentKind.Template; + case TemplateArgument.ArgumentKind.TemplateExpansion: + return AST.TemplateArgument.ArgumentKind.TemplateExpansion; + case TemplateArgument.ArgumentKind.Type: + return AST.TemplateArgument.ArgumentKind.Type; + default: + throw new NotImplementedException(); + } + } + + private AST.TemplateSpecializationKind VisitSpecializationKind(TemplateSpecializationKind templateSpecializationKind) + { + switch (templateSpecializationKind) + { + case TemplateSpecializationKind.ExplicitInstantiationDeclaration: + return AST.TemplateSpecializationKind.ExplicitInstantiationDeclaration; + case TemplateSpecializationKind.ExplicitInstantiationDefinition: + return AST.TemplateSpecializationKind.ExplicitInstantiationDefinition; + case TemplateSpecializationKind.ExplicitSpecialization: + return AST.TemplateSpecializationKind.ExplicitSpecialization; + case TemplateSpecializationKind.ImplicitInstantiation: + return AST.TemplateSpecializationKind.ImplicitInstantiation; + case TemplateSpecializationKind.Undeclared: + return AST.TemplateSpecializationKind.Undeclared; + default: + throw new NotImplementedException(); + } } public override AST.Declaration VisitClassTemplatePartialSpecialization( ClassTemplatePartialSpecialization decl) { - throw new NotImplementedException(); + var _decl = new AST.ClassTemplatePartialSpecialization(); + VisitClassTemplateSpecialization(decl, _decl); + return _decl; } public override AST.Declaration VisitFunctionTemplate(FunctionTemplate decl) diff --git a/src/CppParser/AST.cpp b/src/CppParser/AST.cpp index 02a99767..fe6e156c 100644 --- a/src/CppParser/AST.cpp +++ b/src/CppParser/AST.cpp @@ -55,6 +55,9 @@ AttributedType::AttributedType() : Type(TypeKind::Attributed) {} DecayedType::DecayedType() : Type(TypeKind::Decayed) {} +// Template +Template::Template(DeclarationKind kind) : Declaration(kind) {} + TemplateArgument::TemplateArgument() : Declaration(0) {} TemplateSpecializationType::TemplateSpecializationType() @@ -136,8 +139,10 @@ DEF_STRING(Declaration, Name) DEF_STRING(Declaration, DebugText) DEF_VECTOR(Declaration, PreprocessedEntity*, PreprocessedEntities) -DeclarationContext::DeclarationContext() : IsAnonymous(false), - Declaration(DeclarationKind::DeclarationContext) {} +DeclarationContext::DeclarationContext(DeclarationKind kind) + : Declaration(kind) + , IsAnonymous(false) +{} DEF_VECTOR(DeclarationContext, Namespace*, Namespaces) DEF_VECTOR(DeclarationContext, Enumeration*, Enums) @@ -355,6 +360,18 @@ Function* DeclarationContext::FindFunction(const std::string& Name, bool Create) return function; } +ClassTemplate* +DeclarationContext::FindClassTemplate(void* OriginalPtr) +{ + auto foundTemplate = std::find_if(Templates.begin(), Templates.end(), + [&](Template* t) { return t->OriginalPtr == OriginalPtr; }); + + if (foundTemplate != Templates.end()) + return static_cast(*foundTemplate); + + return nullptr; +} + FunctionTemplate* DeclarationContext::FindFunctionTemplate(void* OriginalPtr) { @@ -450,7 +467,20 @@ Field::Field() : Declaration(DeclarationKind::Field), Class(0) {} AccessSpecifierDecl::AccessSpecifierDecl() : Declaration(DeclarationKind::AccessSpecifier) {} -Class::Class() : Layout(0) { Kind = DeclarationKind::Class; } +Class::Class() + : DeclarationContext(DeclarationKind::Class) + , IsPOD(false) + , IsAbstract(false) + , IsUnion(false) + , IsDynamic(false) + , IsPolymorphic(false) + , HasNonTrivialDefaultConstructor(false) + , HasNonTrivialCopyConstructor(false) + , HasNonTrivialDestructor(false) + , IsExternCContext(false) + , Layout(0) +{ +} DEF_VECTOR(Class, BaseClassSpecifier*, Bases) DEF_VECTOR(Class, Field*, Fields) @@ -462,7 +492,7 @@ Template::Template() : Declaration(DeclarationKind::Template), DEF_VECTOR(Template, TemplateParameter, Parameters) -ClassTemplate::ClassTemplate() { Kind = DeclarationKind::ClassTemplate; } +ClassTemplate::ClassTemplate() : Template(DeclarationKind::ClassTemplate) {} DEF_VECTOR(ClassTemplate, ClassTemplateSpecialization*, Specializations) @@ -474,9 +504,13 @@ DEF_VECTOR(ClassTemplateSpecialization, TemplateArgument, Arguments) ClassTemplatePartialSpecialization::ClassTemplatePartialSpecialization() { Kind = DeclarationKind::ClassTemplatePartialSpecialization; } -FunctionTemplate::FunctionTemplate() { Kind = DeclarationKind::FunctionTemplate; } +FunctionTemplate::FunctionTemplate() : Template(DeclarationKind::FunctionTemplate) {} -Namespace::Namespace() : IsInline(false) { Kind = DeclarationKind::Namespace; } +Namespace::Namespace() + : DeclarationContext(DeclarationKind::Namespace) + , IsInline(false) +{ +} PreprocessedEntity::PreprocessedEntity() : Declaration(DeclarationKind::PreprocessedEntity), @@ -504,7 +538,13 @@ DEF_VECTOR(ASTContext, TranslationUnit*, TranslationUnits) ClassTemplateSpecialization* ClassTemplate::FindSpecialization(void* ptr) { - return 0; + auto foundSpec = std::find_if(Specializations.begin(), Specializations.end(), + [&](ClassTemplateSpecialization* cts) { return cts->OriginalPtr == ptr; }); + + if (foundSpec != Specializations.end()) + return static_cast(*foundSpec); + + return nullptr; } ClassTemplateSpecialization* @@ -515,7 +555,10 @@ ClassTemplate::FindSpecialization(TemplateSpecializationType type) ClassTemplatePartialSpecialization* ClassTemplate::FindPartialSpecialization(void* ptr) { - return 0; + auto foundSpec = FindSpecialization(ptr); + if (foundSpec != nullptr) + return static_cast(foundSpec); + return nullptr; } ClassTemplatePartialSpecialization* diff --git a/src/CppParser/AST.h b/src/CppParser/AST.h index d0eb17da..0b306955 100644 --- a/src/CppParser/AST.h +++ b/src/CppParser/AST.h @@ -380,12 +380,13 @@ struct Function; struct TypedefDecl; struct Namespace; struct Template; +struct ClassTemplate; struct FunctionTemplate; struct Variable; struct CS_API DeclarationContext : public Declaration { - DECLARE_DECL_KIND(DeclarationContext, DeclarationContext) + DeclarationContext(DeclarationKind kind); CS_IGNORE Declaration* FindAnonymous(uint64_t key); @@ -398,6 +399,7 @@ struct CS_API DeclarationContext : public Declaration CS_IGNORE Class* FindClass(const std::string& Name, bool IsComplete, bool Create = false); + CS_IGNORE ClassTemplate* FindClassTemplate(void* OriginalPtr); CS_IGNORE FunctionTemplate* FindFunctionTemplate(void* OriginalPtr); CS_IGNORE FunctionTemplate* FindFunctionTemplate(const std::string& Name, const std::vector& Params); @@ -574,7 +576,6 @@ struct CS_API Variable : public Declaration CppSharp::CppParser::AST::QualifiedType QualifiedType; }; -struct DeclarationContext; struct PreprocessedEntity; struct CS_API BaseClassSpecifier @@ -624,6 +625,7 @@ struct CS_API Class : public DeclarationContext struct CS_API Template : public Declaration { + Template(DeclarationKind kind); DECLARE_DECL_KIND(Template, Template) Declaration* TemplatedDecl; VECTOR(TemplateParameter, Parameters) diff --git a/src/CppParser/Bindings/CLI/AST.cpp b/src/CppParser/Bindings/CLI/AST.cpp index 635b1d41..c5381c34 100644 --- a/src/CppParser/Bindings/CLI/AST.cpp +++ b/src/CppParser/Bindings/CLI/AST.cpp @@ -1236,10 +1236,11 @@ CppSharp::Parser::AST::DeclarationContext::DeclarationContext(System::IntPtr nat auto __native = (::CppSharp::CppParser::AST::DeclarationContext*)native.ToPointer(); } -CppSharp::Parser::AST::DeclarationContext::DeclarationContext() +CppSharp::Parser::AST::DeclarationContext::DeclarationContext(CppSharp::Parser::AST::DeclarationKind kind) : CppSharp::Parser::AST::Declaration((::CppSharp::CppParser::AST::Declaration*)nullptr) { - NativePtr = new ::CppSharp::CppParser::AST::DeclarationContext(); + auto arg0 = (::CppSharp::CppParser::AST::DeclarationKind)kind; + NativePtr = new ::CppSharp::CppParser::AST::DeclarationContext(arg0); } CppSharp::Parser::AST::Namespace^ CppSharp::Parser::AST::DeclarationContext::getNamespaces(unsigned int i) @@ -2222,6 +2223,13 @@ CppSharp::Parser::AST::Template::Template(System::IntPtr native) auto __native = (::CppSharp::CppParser::AST::Template*)native.ToPointer(); } +CppSharp::Parser::AST::Template::Template(CppSharp::Parser::AST::DeclarationKind kind) + : CppSharp::Parser::AST::Declaration((::CppSharp::CppParser::AST::Declaration*)nullptr) +{ + auto arg0 = (::CppSharp::CppParser::AST::DeclarationKind)kind; + NativePtr = new ::CppSharp::CppParser::AST::Template(arg0); +} + CppSharp::Parser::AST::Template::Template() : CppSharp::Parser::AST::Declaration((::CppSharp::CppParser::AST::Declaration*)nullptr) { diff --git a/src/CppParser/Bindings/CLI/AST.h b/src/CppParser/Bindings/CLI/AST.h index b5471ce2..dbea40f0 100644 --- a/src/CppParser/Bindings/CLI/AST.h +++ b/src/CppParser/Bindings/CLI/AST.h @@ -221,6 +221,15 @@ namespace CppSharp UnusedFunctionPointer = 7 }; + public enum struct TemplateSpecializationKind + { + Undeclared = 0, + ImplicitInstantiation = 1, + ExplicitSpecialization = 2, + ExplicitInstantiationDeclaration = 3, + ExplicitInstantiationDefinition = 4 + }; + public enum struct PrimitiveType { Null = 0, @@ -269,15 +278,6 @@ namespace CppSharp FunctionBody = 5 }; - public enum struct TemplateSpecializationKind - { - Undeclared = 0, - ImplicitInstantiation = 1, - ExplicitSpecialization = 2, - ExplicitInstantiationDeclaration = 3, - ExplicitInstantiationDefinition = 4 - }; - public ref class Type : ICppInstance { public: @@ -1008,7 +1008,7 @@ namespace CppSharp DeclarationContext(::CppSharp::CppParser::AST::DeclarationContext* native); DeclarationContext(System::IntPtr native); - DeclarationContext(); + DeclarationContext(CppSharp::Parser::AST::DeclarationKind kind); property unsigned int NamespacesCount { @@ -1554,6 +1554,8 @@ namespace CppSharp Template(::CppSharp::CppParser::AST::Template* native); Template(System::IntPtr native); + Template(CppSharp::Parser::AST::DeclarationKind kind); + Template(); property unsigned int ParametersCount diff --git a/src/CppParser/Bindings/CLI/CppParser.h b/src/CppParser/Bindings/CLI/CppParser.h index ecbb8c36..0c51cc71 100644 --- a/src/CppParser/Bindings/CLI/CppParser.h +++ b/src/CppParser/Bindings/CLI/CppParser.h @@ -11,6 +11,7 @@ namespace CppSharp enum struct ParserResultKind; enum struct SourceLocationKind; ref class ClangParser; + ref class Parser; ref class ParserDiagnostic; ref class ParserOptions; ref class ParserResult; diff --git a/src/CppParser/Bindings/CSharp/AST.cs b/src/CppParser/Bindings/CSharp/AST.cs index 47ec94c4..93da0fe2 100644 --- a/src/CppParser/Bindings/CSharp/AST.cs +++ b/src/CppParser/Bindings/CSharp/AST.cs @@ -150,6 +150,15 @@ namespace CppSharp UnusedFunctionPointer = 7 } + public enum TemplateSpecializationKind + { + Undeclared = 0, + ImplicitInstantiation = 1, + ExplicitSpecialization = 2, + ExplicitInstantiationDeclaration = 3, + ExplicitInstantiationDefinition = 4 + } + public enum PrimitiveType { Null = 0, @@ -198,25 +207,16 @@ namespace CppSharp FunctionBody = 5 } - public enum TemplateSpecializationKind - { - Undeclared = 0, - ImplicitInstantiation = 1, - ExplicitSpecialization = 2, - ExplicitInstantiationDeclaration = 3, - ExplicitInstantiationDefinition = 4 - } - public unsafe partial class Type : IDisposable { [StructLayout(LayoutKind.Explicit, Size = 8)] public struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.TypeKind Kind; + public CppSharp.Parser.AST.TypeKind Kind; [FieldOffset(4)] - internal bool IsDependent; + public bool IsDependent; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -301,13 +301,13 @@ namespace CppSharp public struct Internal { [FieldOffset(0)] - internal bool IsConst; + public bool IsConst; [FieldOffset(1)] - internal bool IsVolatile; + public bool IsVolatile; [FieldOffset(2)] - internal bool IsRestrict; + public bool IsRestrict; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -400,10 +400,10 @@ namespace CppSharp public struct Internal { [FieldOffset(0)] - internal global::System.IntPtr Type; + public global::System.IntPtr Type; [FieldOffset(4)] - internal CppSharp.Parser.AST.TypeQualifiers.Internal Qualifiers; + public CppSharp.Parser.AST.TypeQualifiers.Internal Qualifiers; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -489,13 +489,13 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.TypeKind Kind; + public CppSharp.Parser.AST.TypeKind Kind; [FieldOffset(4)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(8)] - internal global::System.IntPtr Declaration; + public global::System.IntPtr Declaration; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -557,19 +557,19 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.TypeKind Kind; + public CppSharp.Parser.AST.TypeKind Kind; [FieldOffset(4)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(8)] - internal CppSharp.Parser.AST.QualifiedType.Internal QualifiedType; + public CppSharp.Parser.AST.QualifiedType.Internal QualifiedType; [FieldOffset(16)] - internal CppSharp.Parser.AST.ArrayType.ArraySize SizeType; + public CppSharp.Parser.AST.ArrayType.ArraySize SizeType; [FieldOffset(20)] - internal int Size; + public int Size; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -671,19 +671,16 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.TypeKind Kind; + public CppSharp.Parser.AST.TypeKind Kind; [FieldOffset(4)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(8)] - internal CppSharp.Parser.AST.QualifiedType.Internal ReturnType; + public CppSharp.Parser.AST.QualifiedType.Internal ReturnType; [FieldOffset(16)] - internal CppSharp.Parser.AST.CallingConvention CallingConvention; - - [FieldOffset(20)] - internal Std.Vector Parameters; + public CppSharp.Parser.AST.CallingConvention CallingConvention; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -804,16 +801,16 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.TypeKind Kind; + public CppSharp.Parser.AST.TypeKind Kind; [FieldOffset(4)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(8)] - internal CppSharp.Parser.AST.QualifiedType.Internal QualifiedPointee; + public CppSharp.Parser.AST.QualifiedType.Internal QualifiedPointee; [FieldOffset(16)] - internal CppSharp.Parser.AST.PointerType.TypeModifier Modifier; + public CppSharp.Parser.AST.PointerType.TypeModifier Modifier; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -900,13 +897,13 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.TypeKind Kind; + public CppSharp.Parser.AST.TypeKind Kind; [FieldOffset(4)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(8)] - internal CppSharp.Parser.AST.QualifiedType.Internal Pointee; + public CppSharp.Parser.AST.QualifiedType.Internal Pointee; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -970,13 +967,13 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.TypeKind Kind; + public CppSharp.Parser.AST.TypeKind Kind; [FieldOffset(4)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(8)] - internal global::System.IntPtr Declaration; + public global::System.IntPtr Declaration; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -1038,16 +1035,16 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.TypeKind Kind; + public CppSharp.Parser.AST.TypeKind Kind; [FieldOffset(4)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(8)] - internal CppSharp.Parser.AST.QualifiedType.Internal Modified; + public CppSharp.Parser.AST.QualifiedType.Internal Modified; [FieldOffset(16)] - internal CppSharp.Parser.AST.QualifiedType.Internal Equivalent; + public CppSharp.Parser.AST.QualifiedType.Internal Equivalent; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -1128,19 +1125,19 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.TypeKind Kind; + public CppSharp.Parser.AST.TypeKind Kind; [FieldOffset(4)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(8)] - internal CppSharp.Parser.AST.QualifiedType.Internal Decayed; + public CppSharp.Parser.AST.QualifiedType.Internal Decayed; [FieldOffset(16)] - internal CppSharp.Parser.AST.QualifiedType.Internal Original; + public CppSharp.Parser.AST.QualifiedType.Internal Original; [FieldOffset(24)] - internal CppSharp.Parser.AST.QualifiedType.Internal Pointee; + public CppSharp.Parser.AST.QualifiedType.Internal Pointee; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -1238,16 +1235,16 @@ namespace CppSharp public struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.TemplateArgument.ArgumentKind Kind; + public CppSharp.Parser.AST.TemplateArgument.ArgumentKind Kind; [FieldOffset(4)] - internal CppSharp.Parser.AST.QualifiedType.Internal Type; + public CppSharp.Parser.AST.QualifiedType.Internal Type; [FieldOffset(12)] - internal global::System.IntPtr Declaration; + public global::System.IntPtr Declaration; [FieldOffset(16)] - internal int Integral; + public int Integral; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -1375,19 +1372,16 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.TypeKind Kind; + public CppSharp.Parser.AST.TypeKind Kind; [FieldOffset(4)] - internal bool IsDependent; - - [FieldOffset(8)] - internal Std.Vector Arguments; + public bool IsDependent; [FieldOffset(20)] - internal global::System.IntPtr Template; + public global::System.IntPtr Template; [FieldOffset(24)] - internal global::System.IntPtr Desugared; + public global::System.IntPtr Desugared; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -1507,9 +1501,6 @@ namespace CppSharp [StructLayout(LayoutKind.Explicit, Size = 24)] public struct Internal { - [FieldOffset(0)] - internal Std.String Name; - [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, EntryPoint="??0TemplateParameter@AST@CppParser@CppSharp@@QAE@XZ")] @@ -1614,13 +1605,13 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.TypeKind Kind; + public CppSharp.Parser.AST.TypeKind Kind; [FieldOffset(4)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(8)] - internal CppSharp.Parser.AST.TemplateParameter.Internal Parameter; + public CppSharp.Parser.AST.TemplateParameter.Internal Parameter; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -1689,13 +1680,13 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.TypeKind Kind; + public CppSharp.Parser.AST.TypeKind Kind; [FieldOffset(4)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(8)] - internal CppSharp.Parser.AST.QualifiedType.Internal Replacement; + public CppSharp.Parser.AST.QualifiedType.Internal Replacement; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -1759,16 +1750,16 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.TypeKind Kind; + public CppSharp.Parser.AST.TypeKind Kind; [FieldOffset(4)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(8)] - internal CppSharp.Parser.AST.TemplateSpecializationType.Internal TemplateSpecialization; + public CppSharp.Parser.AST.TemplateSpecializationType.Internal TemplateSpecialization; [FieldOffset(36)] - internal global::System.IntPtr Class; + public global::System.IntPtr Class; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -1852,10 +1843,10 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.TypeKind Kind; + public CppSharp.Parser.AST.TypeKind Kind; [FieldOffset(4)] - internal bool IsDependent; + public bool IsDependent; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -1902,10 +1893,10 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.TypeKind Kind; + public CppSharp.Parser.AST.TypeKind Kind; [FieldOffset(4)] - internal bool IsDependent; + public bool IsDependent; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -1952,13 +1943,13 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.TypeKind Kind; + public CppSharp.Parser.AST.TypeKind Kind; [FieldOffset(4)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(8)] - internal CppSharp.Parser.AST.PrimitiveType Type; + public CppSharp.Parser.AST.PrimitiveType Type; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -2020,13 +2011,13 @@ namespace CppSharp public struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.VTableComponentKind Kind; + public CppSharp.Parser.AST.VTableComponentKind Kind; [FieldOffset(4)] - internal uint Offset; + public uint Offset; [FieldOffset(8)] - internal global::System.IntPtr Declaration; + public global::System.IntPtr Declaration; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -2124,9 +2115,6 @@ namespace CppSharp [StructLayout(LayoutKind.Explicit, Size = 12)] public struct Internal { - [FieldOffset(0)] - internal Std.Vector Components; - [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, EntryPoint="??0VTableLayout@AST@CppParser@CppSharp@@QAE@XZ")] @@ -2224,16 +2212,16 @@ namespace CppSharp public struct Internal { [FieldOffset(0)] - internal ulong VBTableIndex; + public ulong VBTableIndex; [FieldOffset(8)] - internal uint VFPtrOffset; + public uint VFPtrOffset; [FieldOffset(12)] - internal uint VFPtrFullOffset; + public uint VFPtrFullOffset; [FieldOffset(16)] - internal CppSharp.Parser.AST.VTableLayout.Internal Layout; + public CppSharp.Parser.AST.VTableLayout.Internal Layout; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -2355,28 +2343,25 @@ namespace CppSharp public struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.CppAbi ABI; - - [FieldOffset(4)] - internal Std.Vector VFTables; + public CppSharp.Parser.AST.CppAbi ABI; [FieldOffset(16)] - internal CppSharp.Parser.AST.VTableLayout.Internal Layout; + public CppSharp.Parser.AST.VTableLayout.Internal Layout; [FieldOffset(28)] - internal bool HasOwnVFPtr; + public bool HasOwnVFPtr; [FieldOffset(32)] - internal int VBPtrOffset; + public int VBPtrOffset; [FieldOffset(36)] - internal int Alignment; + public int Alignment; [FieldOffset(40)] - internal int Size; + public int Size; [FieldOffset(44)] - internal int DataSize; + public int DataSize; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -2582,40 +2567,31 @@ namespace CppSharp public struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.DeclarationKind Kind; + public CppSharp.Parser.AST.DeclarationKind Kind; [FieldOffset(4)] - internal CppSharp.Parser.AST.AccessSpecifier Access; + public CppSharp.Parser.AST.AccessSpecifier Access; [FieldOffset(8)] - internal global::System.IntPtr _Namespace; - - [FieldOffset(12)] - internal Std.String Name; + public global::System.IntPtr _Namespace; [FieldOffset(36)] - internal global::System.IntPtr Comment; - - [FieldOffset(40)] - internal Std.String DebugText; + public global::System.IntPtr Comment; [FieldOffset(64)] - internal bool IsIncomplete; + public bool IsIncomplete; [FieldOffset(65)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(68)] - internal global::System.IntPtr CompleteDeclaration; + public global::System.IntPtr CompleteDeclaration; [FieldOffset(72)] - internal uint DefinitionOrder; - - [FieldOffset(76)] - internal Std.Vector PreprocessedEntities; + public uint DefinitionOrder; [FieldOffset(88)] - internal void* OriginalPtr; + public void* OriginalPtr; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -2902,77 +2878,49 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.DeclarationKind Kind; + public CppSharp.Parser.AST.DeclarationKind Kind; [FieldOffset(4)] - internal CppSharp.Parser.AST.AccessSpecifier Access; + public CppSharp.Parser.AST.AccessSpecifier Access; [FieldOffset(8)] - internal global::System.IntPtr _Namespace; - - [FieldOffset(12)] - internal Std.String Name; + public global::System.IntPtr _Namespace; [FieldOffset(36)] - internal global::System.IntPtr Comment; - - [FieldOffset(40)] - internal Std.String DebugText; + public global::System.IntPtr Comment; [FieldOffset(64)] - internal bool IsIncomplete; + public bool IsIncomplete; [FieldOffset(65)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(68)] - internal global::System.IntPtr CompleteDeclaration; + public global::System.IntPtr CompleteDeclaration; [FieldOffset(72)] - internal uint DefinitionOrder; - - [FieldOffset(76)] - internal Std.Vector PreprocessedEntities; + public uint DefinitionOrder; [FieldOffset(88)] - internal void* OriginalPtr; - - [FieldOffset(92)] - internal Std.Vector Namespaces; - - [FieldOffset(104)] - internal Std.Vector Enums; - - [FieldOffset(116)] - internal Std.Vector Functions; - - [FieldOffset(128)] - internal Std.Vector Classes; - - [FieldOffset(140)] - internal Std.Vector Templates; - - [FieldOffset(152)] - internal Std.Vector Typedefs; - - [FieldOffset(164)] - internal Std.Vector Variables; - - [FieldOffset(176)] - internal Std.Map Anonymous; + public void* OriginalPtr; [FieldOffset(184)] - internal bool IsAnonymous; + public bool IsAnonymous; + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, + EntryPoint="??0DeclarationContext@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="??0DeclarationContext@AST@CppParser@CppSharp@@QAE@XZ")] - internal static extern global::System.IntPtr ctor_0(global::System.IntPtr instance); + internal static extern global::System.IntPtr ctor_1(global::System.IntPtr instance); [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, EntryPoint="??0DeclarationContext@AST@CppParser@CppSharp@@QAE@ABU0123@@Z")] - internal static extern global::System.IntPtr cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); + internal static extern global::System.IntPtr cctor_3(global::System.IntPtr instance, global::System.IntPtr _0); [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -3100,11 +3048,19 @@ namespace CppSharp { } + public DeclarationContext(CppSharp.Parser.AST.DeclarationKind kind) + : this(IntPtr.Zero) + { + __Instance = Marshal.AllocHGlobal(188); + var arg0 = kind; + Internal.ctor_0(__Instance, arg0); + } + public DeclarationContext() : this(IntPtr.Zero) { __Instance = Marshal.AllocHGlobal(188); - Internal.ctor_0(__Instance); + Internal.ctor_1(__Instance); } protected override void Dispose(bool disposing) @@ -3288,43 +3244,34 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.DeclarationKind Kind; + public CppSharp.Parser.AST.DeclarationKind Kind; [FieldOffset(4)] - internal CppSharp.Parser.AST.AccessSpecifier Access; + public CppSharp.Parser.AST.AccessSpecifier Access; [FieldOffset(8)] - internal global::System.IntPtr _Namespace; - - [FieldOffset(12)] - internal Std.String Name; + public global::System.IntPtr _Namespace; [FieldOffset(36)] - internal global::System.IntPtr Comment; - - [FieldOffset(40)] - internal Std.String DebugText; + public global::System.IntPtr Comment; [FieldOffset(64)] - internal bool IsIncomplete; + public bool IsIncomplete; [FieldOffset(65)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(68)] - internal global::System.IntPtr CompleteDeclaration; + public global::System.IntPtr CompleteDeclaration; [FieldOffset(72)] - internal uint DefinitionOrder; - - [FieldOffset(76)] - internal Std.Vector PreprocessedEntities; + public uint DefinitionOrder; [FieldOffset(88)] - internal void* OriginalPtr; + public void* OriginalPtr; [FieldOffset(92)] - internal CppSharp.Parser.AST.QualifiedType.Internal QualifiedType; + public CppSharp.Parser.AST.QualifiedType.Internal QualifiedType; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -3393,52 +3340,43 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.DeclarationKind Kind; + public CppSharp.Parser.AST.DeclarationKind Kind; [FieldOffset(4)] - internal CppSharp.Parser.AST.AccessSpecifier Access; + public CppSharp.Parser.AST.AccessSpecifier Access; [FieldOffset(8)] - internal global::System.IntPtr _Namespace; - - [FieldOffset(12)] - internal Std.String Name; + public global::System.IntPtr _Namespace; [FieldOffset(36)] - internal global::System.IntPtr Comment; - - [FieldOffset(40)] - internal Std.String DebugText; + public global::System.IntPtr Comment; [FieldOffset(64)] - internal bool IsIncomplete; + public bool IsIncomplete; [FieldOffset(65)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(68)] - internal global::System.IntPtr CompleteDeclaration; + public global::System.IntPtr CompleteDeclaration; [FieldOffset(72)] - internal uint DefinitionOrder; - - [FieldOffset(76)] - internal Std.Vector PreprocessedEntities; + public uint DefinitionOrder; [FieldOffset(88)] - internal void* OriginalPtr; + public void* OriginalPtr; [FieldOffset(92)] - internal CppSharp.Parser.AST.QualifiedType.Internal QualifiedType; + public CppSharp.Parser.AST.QualifiedType.Internal QualifiedType; [FieldOffset(100)] - internal bool IsIndirect; + public bool IsIndirect; [FieldOffset(101)] - internal bool HasDefaultValue; + public bool HasDefaultValue; [FieldOffset(104)] - internal uint Index; + public uint Index; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -3552,73 +3490,55 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.DeclarationKind Kind; + public CppSharp.Parser.AST.DeclarationKind Kind; [FieldOffset(4)] - internal CppSharp.Parser.AST.AccessSpecifier Access; + public CppSharp.Parser.AST.AccessSpecifier Access; [FieldOffset(8)] - internal global::System.IntPtr _Namespace; - - [FieldOffset(12)] - internal Std.String Name; + public global::System.IntPtr _Namespace; [FieldOffset(36)] - internal global::System.IntPtr Comment; - - [FieldOffset(40)] - internal Std.String DebugText; + public global::System.IntPtr Comment; [FieldOffset(64)] - internal bool IsIncomplete; + public bool IsIncomplete; [FieldOffset(65)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(68)] - internal global::System.IntPtr CompleteDeclaration; + public global::System.IntPtr CompleteDeclaration; [FieldOffset(72)] - internal uint DefinitionOrder; - - [FieldOffset(76)] - internal Std.Vector PreprocessedEntities; + public uint DefinitionOrder; [FieldOffset(88)] - internal void* OriginalPtr; + public void* OriginalPtr; [FieldOffset(92)] - internal CppSharp.Parser.AST.QualifiedType.Internal ReturnType; + public CppSharp.Parser.AST.QualifiedType.Internal ReturnType; [FieldOffset(100)] - internal bool IsReturnIndirect; + public bool IsReturnIndirect; [FieldOffset(101)] - internal bool IsVariadic; + public bool IsVariadic; [FieldOffset(102)] - internal bool IsInline; + public bool IsInline; [FieldOffset(103)] - internal bool IsPure; + public bool IsPure; [FieldOffset(104)] - internal bool IsDeleted; + public bool IsDeleted; [FieldOffset(108)] - internal CppSharp.Parser.AST.CXXOperatorKind OperatorKind; - - [FieldOffset(112)] - internal Std.String Mangled; - - [FieldOffset(136)] - internal Std.String Signature; + public CppSharp.Parser.AST.CXXOperatorKind OperatorKind; [FieldOffset(160)] - internal CppSharp.Parser.AST.CallingConvention CallingConvention; - - [FieldOffset(164)] - internal Std.Vector Parameters; + public CppSharp.Parser.AST.CallingConvention CallingConvention; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -3883,109 +3803,91 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.DeclarationKind Kind; + public CppSharp.Parser.AST.DeclarationKind Kind; [FieldOffset(4)] - internal CppSharp.Parser.AST.AccessSpecifier Access; + public CppSharp.Parser.AST.AccessSpecifier Access; [FieldOffset(8)] - internal global::System.IntPtr _Namespace; - - [FieldOffset(12)] - internal Std.String Name; + public global::System.IntPtr _Namespace; [FieldOffset(36)] - internal global::System.IntPtr Comment; - - [FieldOffset(40)] - internal Std.String DebugText; + public global::System.IntPtr Comment; [FieldOffset(64)] - internal bool IsIncomplete; + public bool IsIncomplete; [FieldOffset(65)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(68)] - internal global::System.IntPtr CompleteDeclaration; + public global::System.IntPtr CompleteDeclaration; [FieldOffset(72)] - internal uint DefinitionOrder; - - [FieldOffset(76)] - internal Std.Vector PreprocessedEntities; + public uint DefinitionOrder; [FieldOffset(88)] - internal void* OriginalPtr; + public void* OriginalPtr; [FieldOffset(92)] - internal CppSharp.Parser.AST.QualifiedType.Internal ReturnType; + public CppSharp.Parser.AST.QualifiedType.Internal ReturnType; [FieldOffset(100)] - internal bool IsReturnIndirect; + public bool IsReturnIndirect; [FieldOffset(101)] - internal bool IsVariadic; + public bool IsVariadic; [FieldOffset(102)] - internal bool IsInline; + public bool IsInline; [FieldOffset(103)] - internal bool IsPure; + public bool IsPure; [FieldOffset(104)] - internal bool IsDeleted; + public bool IsDeleted; [FieldOffset(108)] - internal CppSharp.Parser.AST.CXXOperatorKind OperatorKind; - - [FieldOffset(112)] - internal Std.String Mangled; - - [FieldOffset(136)] - internal Std.String Signature; + public CppSharp.Parser.AST.CXXOperatorKind OperatorKind; [FieldOffset(160)] - internal CppSharp.Parser.AST.CallingConvention CallingConvention; - - [FieldOffset(164)] - internal Std.Vector Parameters; + public CppSharp.Parser.AST.CallingConvention CallingConvention; [FieldOffset(176)] - internal global::System.IntPtr AccessDecl; + public global::System.IntPtr AccessDecl; [FieldOffset(180)] - internal bool IsVirtual; + public bool IsVirtual; [FieldOffset(181)] - internal bool IsStatic; + public bool IsStatic; [FieldOffset(182)] - internal bool IsConst; + public bool IsConst; [FieldOffset(183)] - internal bool IsImplicit; + public bool IsImplicit; [FieldOffset(184)] - internal bool IsExplicit; + public bool IsExplicit; [FieldOffset(185)] - internal bool IsOverride; + public bool IsOverride; [FieldOffset(188)] - internal CppSharp.Parser.AST.CXXMethodKind MethodKind; + public CppSharp.Parser.AST.CXXMethodKind MethodKind; [FieldOffset(192)] - internal bool IsDefaultConstructor; + public bool IsDefaultConstructor; [FieldOffset(193)] - internal bool IsCopyConstructor; + public bool IsCopyConstructor; [FieldOffset(194)] - internal bool IsMoveConstructor; + public bool IsMoveConstructor; [FieldOffset(196)] - internal CppSharp.Parser.AST.QualifiedType.Internal ConversionType; + public CppSharp.Parser.AST.QualifiedType.Internal ConversionType; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -4219,52 +4121,40 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.DeclarationKind Kind; + public CppSharp.Parser.AST.DeclarationKind Kind; [FieldOffset(4)] - internal CppSharp.Parser.AST.AccessSpecifier Access; + public CppSharp.Parser.AST.AccessSpecifier Access; [FieldOffset(8)] - internal global::System.IntPtr _Namespace; - - [FieldOffset(12)] - internal Std.String Name; + public global::System.IntPtr _Namespace; [FieldOffset(36)] - internal global::System.IntPtr Comment; - - [FieldOffset(40)] - internal Std.String DebugText; + public global::System.IntPtr Comment; [FieldOffset(64)] - internal bool IsIncomplete; + public bool IsIncomplete; [FieldOffset(65)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(68)] - internal global::System.IntPtr CompleteDeclaration; + public global::System.IntPtr CompleteDeclaration; [FieldOffset(72)] - internal uint DefinitionOrder; - - [FieldOffset(76)] - internal Std.Vector PreprocessedEntities; + public uint DefinitionOrder; [FieldOffset(88)] - internal void* OriginalPtr; + public void* OriginalPtr; [FieldOffset(92)] - internal CppSharp.Parser.AST.Enumeration.EnumModifiers Modifiers; + public CppSharp.Parser.AST.Enumeration.EnumModifiers Modifiers; [FieldOffset(96)] - internal global::System.IntPtr Type; + public global::System.IntPtr Type; [FieldOffset(100)] - internal global::System.IntPtr BuiltinType; - - [FieldOffset(104)] - internal Std.Vector Items; + public global::System.IntPtr BuiltinType; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -4311,46 +4201,34 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.DeclarationKind Kind; + public CppSharp.Parser.AST.DeclarationKind Kind; [FieldOffset(4)] - internal CppSharp.Parser.AST.AccessSpecifier Access; + public CppSharp.Parser.AST.AccessSpecifier Access; [FieldOffset(8)] - internal global::System.IntPtr _Namespace; - - [FieldOffset(12)] - internal Std.String Name; + public global::System.IntPtr _Namespace; [FieldOffset(36)] - internal global::System.IntPtr Comment; - - [FieldOffset(40)] - internal Std.String DebugText; + public global::System.IntPtr Comment; [FieldOffset(64)] - internal bool IsIncomplete; + public bool IsIncomplete; [FieldOffset(65)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(68)] - internal global::System.IntPtr CompleteDeclaration; + public global::System.IntPtr CompleteDeclaration; [FieldOffset(72)] - internal uint DefinitionOrder; - - [FieldOffset(76)] - internal Std.Vector PreprocessedEntities; + public uint DefinitionOrder; [FieldOffset(88)] - internal void* OriginalPtr; - - [FieldOffset(92)] - internal Std.String Expression; + public void* OriginalPtr; [FieldOffset(120)] - internal ulong Value; + public ulong Value; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -4541,46 +4419,34 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.DeclarationKind Kind; + public CppSharp.Parser.AST.DeclarationKind Kind; [FieldOffset(4)] - internal CppSharp.Parser.AST.AccessSpecifier Access; + public CppSharp.Parser.AST.AccessSpecifier Access; [FieldOffset(8)] - internal global::System.IntPtr _Namespace; - - [FieldOffset(12)] - internal Std.String Name; + public global::System.IntPtr _Namespace; [FieldOffset(36)] - internal global::System.IntPtr Comment; - - [FieldOffset(40)] - internal Std.String DebugText; + public global::System.IntPtr Comment; [FieldOffset(64)] - internal bool IsIncomplete; + public bool IsIncomplete; [FieldOffset(65)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(68)] - internal global::System.IntPtr CompleteDeclaration; + public global::System.IntPtr CompleteDeclaration; [FieldOffset(72)] - internal uint DefinitionOrder; - - [FieldOffset(76)] - internal Std.Vector PreprocessedEntities; + public uint DefinitionOrder; [FieldOffset(88)] - internal void* OriginalPtr; - - [FieldOffset(92)] - internal Std.String Mangled; + public void* OriginalPtr; [FieldOffset(116)] - internal CppSharp.Parser.AST.QualifiedType.Internal QualifiedType; + public CppSharp.Parser.AST.QualifiedType.Internal QualifiedType; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -4676,13 +4542,13 @@ namespace CppSharp public struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.AccessSpecifier Access; + public CppSharp.Parser.AST.AccessSpecifier Access; [FieldOffset(4)] - internal bool IsVirtual; + public bool IsVirtual; [FieldOffset(8)] - internal global::System.IntPtr Type; + public global::System.IntPtr Type; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -4781,49 +4647,40 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.DeclarationKind Kind; + public CppSharp.Parser.AST.DeclarationKind Kind; [FieldOffset(4)] - internal CppSharp.Parser.AST.AccessSpecifier Access; + public CppSharp.Parser.AST.AccessSpecifier Access; [FieldOffset(8)] - internal global::System.IntPtr _Namespace; - - [FieldOffset(12)] - internal Std.String Name; + public global::System.IntPtr _Namespace; [FieldOffset(36)] - internal global::System.IntPtr Comment; - - [FieldOffset(40)] - internal Std.String DebugText; + public global::System.IntPtr Comment; [FieldOffset(64)] - internal bool IsIncomplete; + public bool IsIncomplete; [FieldOffset(65)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(68)] - internal global::System.IntPtr CompleteDeclaration; + public global::System.IntPtr CompleteDeclaration; [FieldOffset(72)] - internal uint DefinitionOrder; - - [FieldOffset(76)] - internal Std.Vector PreprocessedEntities; + public uint DefinitionOrder; [FieldOffset(88)] - internal void* OriginalPtr; + public void* OriginalPtr; [FieldOffset(92)] - internal CppSharp.Parser.AST.QualifiedType.Internal QualifiedType; + public CppSharp.Parser.AST.QualifiedType.Internal QualifiedType; [FieldOffset(100)] - internal uint Offset; + public uint Offset; [FieldOffset(104)] - internal global::System.IntPtr Class; + public global::System.IntPtr Class; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -4922,40 +4779,31 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.DeclarationKind Kind; + public CppSharp.Parser.AST.DeclarationKind Kind; [FieldOffset(4)] - internal CppSharp.Parser.AST.AccessSpecifier Access; + public CppSharp.Parser.AST.AccessSpecifier Access; [FieldOffset(8)] - internal global::System.IntPtr _Namespace; - - [FieldOffset(12)] - internal Std.String Name; + public global::System.IntPtr _Namespace; [FieldOffset(36)] - internal global::System.IntPtr Comment; - - [FieldOffset(40)] - internal Std.String DebugText; + public global::System.IntPtr Comment; [FieldOffset(64)] - internal bool IsIncomplete; + public bool IsIncomplete; [FieldOffset(65)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(68)] - internal global::System.IntPtr CompleteDeclaration; + public global::System.IntPtr CompleteDeclaration; [FieldOffset(72)] - internal uint DefinitionOrder; - - [FieldOffset(76)] - internal Std.Vector PreprocessedEntities; + public uint DefinitionOrder; [FieldOffset(88)] - internal void* OriginalPtr; + public void* OriginalPtr; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -5007,109 +4855,64 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.DeclarationKind Kind; + public CppSharp.Parser.AST.DeclarationKind Kind; [FieldOffset(4)] - internal CppSharp.Parser.AST.AccessSpecifier Access; + public CppSharp.Parser.AST.AccessSpecifier Access; [FieldOffset(8)] - internal global::System.IntPtr _Namespace; - - [FieldOffset(12)] - internal Std.String Name; + public global::System.IntPtr _Namespace; [FieldOffset(36)] - internal global::System.IntPtr Comment; - - [FieldOffset(40)] - internal Std.String DebugText; + public global::System.IntPtr Comment; [FieldOffset(64)] - internal bool IsIncomplete; + public bool IsIncomplete; [FieldOffset(65)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(68)] - internal global::System.IntPtr CompleteDeclaration; + public global::System.IntPtr CompleteDeclaration; [FieldOffset(72)] - internal uint DefinitionOrder; - - [FieldOffset(76)] - internal Std.Vector PreprocessedEntities; + public uint DefinitionOrder; [FieldOffset(88)] - internal void* OriginalPtr; - - [FieldOffset(92)] - internal Std.Vector Namespaces; - - [FieldOffset(104)] - internal Std.Vector Enums; - - [FieldOffset(116)] - internal Std.Vector Functions; - - [FieldOffset(128)] - internal Std.Vector Classes; - - [FieldOffset(140)] - internal Std.Vector Templates; - - [FieldOffset(152)] - internal Std.Vector Typedefs; - - [FieldOffset(164)] - internal Std.Vector Variables; - - [FieldOffset(176)] - internal Std.Map Anonymous; + public void* OriginalPtr; [FieldOffset(184)] - internal bool IsAnonymous; - - [FieldOffset(188)] - internal Std.Vector Bases; - - [FieldOffset(200)] - internal Std.Vector Fields; - - [FieldOffset(212)] - internal Std.Vector Methods; - - [FieldOffset(224)] - internal Std.Vector Specifiers; + public bool IsAnonymous; [FieldOffset(236)] - internal bool IsPOD; + public bool IsPOD; [FieldOffset(237)] - internal bool IsAbstract; + public bool IsAbstract; [FieldOffset(238)] - internal bool IsUnion; + public bool IsUnion; [FieldOffset(239)] - internal bool IsDynamic; + public bool IsDynamic; [FieldOffset(240)] - internal bool IsPolymorphic; + public bool IsPolymorphic; [FieldOffset(241)] - internal bool HasNonTrivialDefaultConstructor; + public bool HasNonTrivialDefaultConstructor; [FieldOffset(242)] - internal bool HasNonTrivialCopyConstructor; + public bool HasNonTrivialCopyConstructor; [FieldOffset(243)] - internal bool HasNonTrivialDestructor; + public bool HasNonTrivialDestructor; [FieldOffset(244)] - internal bool IsExternCContext; + public bool IsExternCContext; [FieldOffset(248)] - internal global::System.IntPtr Layout; + public global::System.IntPtr Layout; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -5459,56 +5262,49 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.DeclarationKind Kind; + public CppSharp.Parser.AST.DeclarationKind Kind; [FieldOffset(4)] - internal CppSharp.Parser.AST.AccessSpecifier Access; + public CppSharp.Parser.AST.AccessSpecifier Access; [FieldOffset(8)] - internal global::System.IntPtr _Namespace; - - [FieldOffset(12)] - internal Std.String Name; + public global::System.IntPtr _Namespace; [FieldOffset(36)] - internal global::System.IntPtr Comment; - - [FieldOffset(40)] - internal Std.String DebugText; + public global::System.IntPtr Comment; [FieldOffset(64)] - internal bool IsIncomplete; + public bool IsIncomplete; [FieldOffset(65)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(68)] - internal global::System.IntPtr CompleteDeclaration; + public global::System.IntPtr CompleteDeclaration; [FieldOffset(72)] - internal uint DefinitionOrder; - - [FieldOffset(76)] - internal Std.Vector PreprocessedEntities; + public uint DefinitionOrder; [FieldOffset(88)] - internal void* OriginalPtr; + public void* OriginalPtr; [FieldOffset(92)] - internal global::System.IntPtr TemplatedDecl; + public global::System.IntPtr TemplatedDecl; - [FieldOffset(96)] - internal Std.Vector Parameters; + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, + EntryPoint="??0Template@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="??0Template@AST@CppParser@CppSharp@@QAE@XZ")] - internal static extern global::System.IntPtr ctor_0(global::System.IntPtr instance); + internal static extern global::System.IntPtr ctor_1(global::System.IntPtr instance); [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, EntryPoint="??0Template@AST@CppParser@CppSharp@@QAE@ABU0123@@Z")] - internal static extern global::System.IntPtr cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); + internal static extern global::System.IntPtr cctor_3(global::System.IntPtr instance, global::System.IntPtr _0); [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -5546,11 +5342,19 @@ namespace CppSharp { } + public Template(CppSharp.Parser.AST.DeclarationKind kind) + : this(IntPtr.Zero) + { + __Instance = Marshal.AllocHGlobal(108); + var arg0 = kind; + Internal.ctor_0(__Instance, arg0); + } + public Template() : this(IntPtr.Zero) { __Instance = Marshal.AllocHGlobal(108); - Internal.ctor_0(__Instance); + Internal.ctor_1(__Instance); } protected override void Dispose(bool disposing) @@ -5604,49 +5408,34 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.DeclarationKind Kind; + public CppSharp.Parser.AST.DeclarationKind Kind; [FieldOffset(4)] - internal CppSharp.Parser.AST.AccessSpecifier Access; + public CppSharp.Parser.AST.AccessSpecifier Access; [FieldOffset(8)] - internal global::System.IntPtr _Namespace; - - [FieldOffset(12)] - internal Std.String Name; + public global::System.IntPtr _Namespace; [FieldOffset(36)] - internal global::System.IntPtr Comment; - - [FieldOffset(40)] - internal Std.String DebugText; + public global::System.IntPtr Comment; [FieldOffset(64)] - internal bool IsIncomplete; + public bool IsIncomplete; [FieldOffset(65)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(68)] - internal global::System.IntPtr CompleteDeclaration; + public global::System.IntPtr CompleteDeclaration; [FieldOffset(72)] - internal uint DefinitionOrder; - - [FieldOffset(76)] - internal Std.Vector PreprocessedEntities; + public uint DefinitionOrder; [FieldOffset(88)] - internal void* OriginalPtr; + public void* OriginalPtr; [FieldOffset(92)] - internal global::System.IntPtr TemplatedDecl; - - [FieldOffset(96)] - internal Std.Vector Parameters; - - [FieldOffset(108)] - internal Std.Vector Specializations; + public global::System.IntPtr TemplatedDecl; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -5787,118 +5576,70 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.DeclarationKind Kind; + public CppSharp.Parser.AST.DeclarationKind Kind; [FieldOffset(4)] - internal CppSharp.Parser.AST.AccessSpecifier Access; + public CppSharp.Parser.AST.AccessSpecifier Access; [FieldOffset(8)] - internal global::System.IntPtr _Namespace; - - [FieldOffset(12)] - internal Std.String Name; + public global::System.IntPtr _Namespace; [FieldOffset(36)] - internal global::System.IntPtr Comment; - - [FieldOffset(40)] - internal Std.String DebugText; + public global::System.IntPtr Comment; [FieldOffset(64)] - internal bool IsIncomplete; + public bool IsIncomplete; [FieldOffset(65)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(68)] - internal global::System.IntPtr CompleteDeclaration; + public global::System.IntPtr CompleteDeclaration; [FieldOffset(72)] - internal uint DefinitionOrder; - - [FieldOffset(76)] - internal Std.Vector PreprocessedEntities; + public uint DefinitionOrder; [FieldOffset(88)] - internal void* OriginalPtr; - - [FieldOffset(92)] - internal Std.Vector Namespaces; - - [FieldOffset(104)] - internal Std.Vector Enums; - - [FieldOffset(116)] - internal Std.Vector Functions; - - [FieldOffset(128)] - internal Std.Vector Classes; - - [FieldOffset(140)] - internal Std.Vector Templates; - - [FieldOffset(152)] - internal Std.Vector Typedefs; - - [FieldOffset(164)] - internal Std.Vector Variables; - - [FieldOffset(176)] - internal Std.Map Anonymous; + public void* OriginalPtr; [FieldOffset(184)] - internal bool IsAnonymous; - - [FieldOffset(188)] - internal Std.Vector Bases; - - [FieldOffset(200)] - internal Std.Vector Fields; - - [FieldOffset(212)] - internal Std.Vector Methods; - - [FieldOffset(224)] - internal Std.Vector Specifiers; + public bool IsAnonymous; [FieldOffset(236)] - internal bool IsPOD; + public bool IsPOD; [FieldOffset(237)] - internal bool IsAbstract; + public bool IsAbstract; [FieldOffset(238)] - internal bool IsUnion; + public bool IsUnion; [FieldOffset(239)] - internal bool IsDynamic; + public bool IsDynamic; [FieldOffset(240)] - internal bool IsPolymorphic; + public bool IsPolymorphic; [FieldOffset(241)] - internal bool HasNonTrivialDefaultConstructor; + public bool HasNonTrivialDefaultConstructor; [FieldOffset(242)] - internal bool HasNonTrivialCopyConstructor; + public bool HasNonTrivialCopyConstructor; [FieldOffset(243)] - internal bool HasNonTrivialDestructor; + public bool HasNonTrivialDestructor; [FieldOffset(244)] - internal bool IsExternCContext; + public bool IsExternCContext; [FieldOffset(248)] - internal global::System.IntPtr Layout; + public global::System.IntPtr Layout; [FieldOffset(252)] - internal global::System.IntPtr TemplatedDecl; - - [FieldOffset(256)] - internal Std.Vector Arguments; + public global::System.IntPtr TemplatedDecl; [FieldOffset(268)] - internal CppSharp.Parser.AST.TemplateSpecializationKind SpecializationKind; + public CppSharp.Parser.AST.TemplateSpecializationKind SpecializationKind; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -6019,118 +5760,70 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.DeclarationKind Kind; + public CppSharp.Parser.AST.DeclarationKind Kind; [FieldOffset(4)] - internal CppSharp.Parser.AST.AccessSpecifier Access; + public CppSharp.Parser.AST.AccessSpecifier Access; [FieldOffset(8)] - internal global::System.IntPtr _Namespace; - - [FieldOffset(12)] - internal Std.String Name; + public global::System.IntPtr _Namespace; [FieldOffset(36)] - internal global::System.IntPtr Comment; - - [FieldOffset(40)] - internal Std.String DebugText; + public global::System.IntPtr Comment; [FieldOffset(64)] - internal bool IsIncomplete; + public bool IsIncomplete; [FieldOffset(65)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(68)] - internal global::System.IntPtr CompleteDeclaration; + public global::System.IntPtr CompleteDeclaration; [FieldOffset(72)] - internal uint DefinitionOrder; - - [FieldOffset(76)] - internal Std.Vector PreprocessedEntities; + public uint DefinitionOrder; [FieldOffset(88)] - internal void* OriginalPtr; - - [FieldOffset(92)] - internal Std.Vector Namespaces; - - [FieldOffset(104)] - internal Std.Vector Enums; - - [FieldOffset(116)] - internal Std.Vector Functions; - - [FieldOffset(128)] - internal Std.Vector Classes; - - [FieldOffset(140)] - internal Std.Vector Templates; - - [FieldOffset(152)] - internal Std.Vector Typedefs; - - [FieldOffset(164)] - internal Std.Vector Variables; - - [FieldOffset(176)] - internal Std.Map Anonymous; + public void* OriginalPtr; [FieldOffset(184)] - internal bool IsAnonymous; - - [FieldOffset(188)] - internal Std.Vector Bases; - - [FieldOffset(200)] - internal Std.Vector Fields; - - [FieldOffset(212)] - internal Std.Vector Methods; - - [FieldOffset(224)] - internal Std.Vector Specifiers; + public bool IsAnonymous; [FieldOffset(236)] - internal bool IsPOD; + public bool IsPOD; [FieldOffset(237)] - internal bool IsAbstract; + public bool IsAbstract; [FieldOffset(238)] - internal bool IsUnion; + public bool IsUnion; [FieldOffset(239)] - internal bool IsDynamic; + public bool IsDynamic; [FieldOffset(240)] - internal bool IsPolymorphic; + public bool IsPolymorphic; [FieldOffset(241)] - internal bool HasNonTrivialDefaultConstructor; + public bool HasNonTrivialDefaultConstructor; [FieldOffset(242)] - internal bool HasNonTrivialCopyConstructor; + public bool HasNonTrivialCopyConstructor; [FieldOffset(243)] - internal bool HasNonTrivialDestructor; + public bool HasNonTrivialDestructor; [FieldOffset(244)] - internal bool IsExternCContext; + public bool IsExternCContext; [FieldOffset(248)] - internal global::System.IntPtr Layout; + public global::System.IntPtr Layout; [FieldOffset(252)] - internal global::System.IntPtr TemplatedDecl; - - [FieldOffset(256)] - internal Std.Vector Arguments; + public global::System.IntPtr TemplatedDecl; [FieldOffset(268)] - internal CppSharp.Parser.AST.TemplateSpecializationKind SpecializationKind; + public CppSharp.Parser.AST.TemplateSpecializationKind SpecializationKind; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -6182,46 +5875,34 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.DeclarationKind Kind; + public CppSharp.Parser.AST.DeclarationKind Kind; [FieldOffset(4)] - internal CppSharp.Parser.AST.AccessSpecifier Access; + public CppSharp.Parser.AST.AccessSpecifier Access; [FieldOffset(8)] - internal global::System.IntPtr _Namespace; - - [FieldOffset(12)] - internal Std.String Name; + public global::System.IntPtr _Namespace; [FieldOffset(36)] - internal global::System.IntPtr Comment; - - [FieldOffset(40)] - internal Std.String DebugText; + public global::System.IntPtr Comment; [FieldOffset(64)] - internal bool IsIncomplete; + public bool IsIncomplete; [FieldOffset(65)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(68)] - internal global::System.IntPtr CompleteDeclaration; + public global::System.IntPtr CompleteDeclaration; [FieldOffset(72)] - internal uint DefinitionOrder; - - [FieldOffset(76)] - internal Std.Vector PreprocessedEntities; + public uint DefinitionOrder; [FieldOffset(88)] - internal void* OriginalPtr; + public void* OriginalPtr; [FieldOffset(92)] - internal global::System.IntPtr TemplatedDecl; - - [FieldOffset(96)] - internal Std.Vector Parameters; + public global::System.IntPtr TemplatedDecl; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -6273,70 +5954,37 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.DeclarationKind Kind; + public CppSharp.Parser.AST.DeclarationKind Kind; [FieldOffset(4)] - internal CppSharp.Parser.AST.AccessSpecifier Access; + public CppSharp.Parser.AST.AccessSpecifier Access; [FieldOffset(8)] - internal global::System.IntPtr _Namespace; - - [FieldOffset(12)] - internal Std.String Name; + public global::System.IntPtr _Namespace; [FieldOffset(36)] - internal global::System.IntPtr Comment; - - [FieldOffset(40)] - internal Std.String DebugText; + public global::System.IntPtr Comment; [FieldOffset(64)] - internal bool IsIncomplete; + public bool IsIncomplete; [FieldOffset(65)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(68)] - internal global::System.IntPtr CompleteDeclaration; + public global::System.IntPtr CompleteDeclaration; [FieldOffset(72)] - internal uint DefinitionOrder; - - [FieldOffset(76)] - internal Std.Vector PreprocessedEntities; + public uint DefinitionOrder; [FieldOffset(88)] - internal void* OriginalPtr; - - [FieldOffset(92)] - internal Std.Vector Namespaces; - - [FieldOffset(104)] - internal Std.Vector Enums; - - [FieldOffset(116)] - internal Std.Vector Functions; - - [FieldOffset(128)] - internal Std.Vector Classes; - - [FieldOffset(140)] - internal Std.Vector Templates; - - [FieldOffset(152)] - internal Std.Vector Typedefs; - - [FieldOffset(164)] - internal Std.Vector Variables; - - [FieldOffset(176)] - internal Std.Map Anonymous; + public void* OriginalPtr; [FieldOffset(184)] - internal bool IsAnonymous; + public bool IsAnonymous; [FieldOffset(188)] - internal bool IsInline; + public bool IsInline; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -6403,43 +6051,34 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.DeclarationKind Kind; + public CppSharp.Parser.AST.DeclarationKind Kind; [FieldOffset(4)] - internal CppSharp.Parser.AST.AccessSpecifier Access; + public CppSharp.Parser.AST.AccessSpecifier Access; [FieldOffset(8)] - internal global::System.IntPtr _Namespace; - - [FieldOffset(12)] - internal Std.String Name; + public global::System.IntPtr _Namespace; [FieldOffset(36)] - internal global::System.IntPtr Comment; - - [FieldOffset(40)] - internal Std.String DebugText; + public global::System.IntPtr Comment; [FieldOffset(64)] - internal bool IsIncomplete; + public bool IsIncomplete; [FieldOffset(65)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(68)] - internal global::System.IntPtr CompleteDeclaration; + public global::System.IntPtr CompleteDeclaration; [FieldOffset(72)] - internal uint DefinitionOrder; - - [FieldOffset(76)] - internal Std.Vector PreprocessedEntities; + public uint DefinitionOrder; [FieldOffset(88)] - internal void* OriginalPtr; + public void* OriginalPtr; [FieldOffset(92)] - internal CppSharp.Parser.AST.MacroLocation Location; + public CppSharp.Parser.AST.MacroLocation Location; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -6506,46 +6145,34 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.DeclarationKind Kind; + public CppSharp.Parser.AST.DeclarationKind Kind; [FieldOffset(4)] - internal CppSharp.Parser.AST.AccessSpecifier Access; + public CppSharp.Parser.AST.AccessSpecifier Access; [FieldOffset(8)] - internal global::System.IntPtr _Namespace; - - [FieldOffset(12)] - internal Std.String Name; + public global::System.IntPtr _Namespace; [FieldOffset(36)] - internal global::System.IntPtr Comment; - - [FieldOffset(40)] - internal Std.String DebugText; + public global::System.IntPtr Comment; [FieldOffset(64)] - internal bool IsIncomplete; + public bool IsIncomplete; [FieldOffset(65)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(68)] - internal global::System.IntPtr CompleteDeclaration; + public global::System.IntPtr CompleteDeclaration; [FieldOffset(72)] - internal uint DefinitionOrder; - - [FieldOffset(76)] - internal Std.Vector PreprocessedEntities; + public uint DefinitionOrder; [FieldOffset(88)] - internal void* OriginalPtr; + public void* OriginalPtr; [FieldOffset(92)] - internal CppSharp.Parser.AST.MacroLocation Location; - - [FieldOffset(96)] - internal Std.String Expression; + public CppSharp.Parser.AST.MacroLocation Location; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -6624,49 +6251,37 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.DeclarationKind Kind; + public CppSharp.Parser.AST.DeclarationKind Kind; [FieldOffset(4)] - internal CppSharp.Parser.AST.AccessSpecifier Access; + public CppSharp.Parser.AST.AccessSpecifier Access; [FieldOffset(8)] - internal global::System.IntPtr _Namespace; - - [FieldOffset(12)] - internal Std.String Name; + public global::System.IntPtr _Namespace; [FieldOffset(36)] - internal global::System.IntPtr Comment; - - [FieldOffset(40)] - internal Std.String DebugText; + public global::System.IntPtr Comment; [FieldOffset(64)] - internal bool IsIncomplete; + public bool IsIncomplete; [FieldOffset(65)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(68)] - internal global::System.IntPtr CompleteDeclaration; + public global::System.IntPtr CompleteDeclaration; [FieldOffset(72)] - internal uint DefinitionOrder; - - [FieldOffset(76)] - internal Std.Vector PreprocessedEntities; + public uint DefinitionOrder; [FieldOffset(88)] - internal void* OriginalPtr; + public void* OriginalPtr; [FieldOffset(92)] - internal CppSharp.Parser.AST.MacroLocation Location; - - [FieldOffset(96)] - internal Std.String Text; + public CppSharp.Parser.AST.MacroLocation Location; [FieldOffset(120)] - internal global::System.IntPtr Definition; + public global::System.IntPtr Definition; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -6760,79 +6375,40 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.DeclarationKind Kind; + public CppSharp.Parser.AST.DeclarationKind Kind; [FieldOffset(4)] - internal CppSharp.Parser.AST.AccessSpecifier Access; + public CppSharp.Parser.AST.AccessSpecifier Access; [FieldOffset(8)] - internal global::System.IntPtr _Namespace; - - [FieldOffset(12)] - internal Std.String Name; + public global::System.IntPtr _Namespace; [FieldOffset(36)] - internal global::System.IntPtr Comment; - - [FieldOffset(40)] - internal Std.String DebugText; + public global::System.IntPtr Comment; [FieldOffset(64)] - internal bool IsIncomplete; + public bool IsIncomplete; [FieldOffset(65)] - internal bool IsDependent; + public bool IsDependent; [FieldOffset(68)] - internal global::System.IntPtr CompleteDeclaration; + public global::System.IntPtr CompleteDeclaration; [FieldOffset(72)] - internal uint DefinitionOrder; - - [FieldOffset(76)] - internal Std.Vector PreprocessedEntities; + public uint DefinitionOrder; [FieldOffset(88)] - internal void* OriginalPtr; - - [FieldOffset(92)] - internal Std.Vector Namespaces; - - [FieldOffset(104)] - internal Std.Vector Enums; - - [FieldOffset(116)] - internal Std.Vector Functions; - - [FieldOffset(128)] - internal Std.Vector Classes; - - [FieldOffset(140)] - internal Std.Vector Templates; - - [FieldOffset(152)] - internal Std.Vector Typedefs; - - [FieldOffset(164)] - internal Std.Vector Variables; - - [FieldOffset(176)] - internal Std.Map Anonymous; + public void* OriginalPtr; [FieldOffset(184)] - internal bool IsAnonymous; + public bool IsAnonymous; [FieldOffset(188)] - internal bool IsInline; - - [FieldOffset(192)] - internal Std.String FileName; + public bool IsInline; [FieldOffset(216)] - internal bool IsSystemHeader; - - [FieldOffset(220)] - internal Std.Vector Macros; + public bool IsSystemHeader; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -6962,12 +6538,6 @@ namespace CppSharp [StructLayout(LayoutKind.Explicit, Size = 36)] public struct Internal { - [FieldOffset(0)] - internal Std.String FileName; - - [FieldOffset(24)] - internal Std.Vector Symbols; - [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, EntryPoint="??0NativeLibrary@AST@CppParser@CppSharp@@QAE@XZ")] @@ -7090,9 +6660,6 @@ namespace CppSharp [StructLayout(LayoutKind.Explicit, Size = 12)] public struct Internal { - [FieldOffset(0)] - internal Std.Vector TranslationUnits; - [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, EntryPoint="??0ASTContext@AST@CppParser@CppSharp@@QAE@XZ")] @@ -7188,7 +6755,7 @@ namespace CppSharp public struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.CommentKind Kind; + public CppSharp.Parser.AST.CommentKind Kind; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -7258,7 +6825,7 @@ namespace CppSharp public new struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.CommentKind Kind; + public CppSharp.Parser.AST.CommentKind Kind; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -7305,16 +6872,10 @@ namespace CppSharp public struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.AST.RawCommentKind RawCommentKind; - - [FieldOffset(4)] - internal Std.String Text; - - [FieldOffset(28)] - internal Std.String BriefText; + public CppSharp.Parser.AST.RawCommentKind RawCommentKind; [FieldOffset(52)] - internal global::System.IntPtr FullComment; + public global::System.IntPtr FullComment; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, diff --git a/src/CppParser/Bindings/CSharp/CppParser.cs b/src/CppParser/Bindings/CSharp/CppParser.cs index 9064b30b..04af9b01 100644 --- a/src/CppParser/Bindings/CSharp/CppParser.cs +++ b/src/CppParser/Bindings/CSharp/CppParser.cs @@ -40,47 +40,26 @@ namespace CppSharp [StructLayout(LayoutKind.Explicit, Size = 124)] public struct Internal { - [FieldOffset(0)] - internal Std.Vector Arguments; - - [FieldOffset(12)] - internal Std.String FileName; - - [FieldOffset(36)] - internal Std.Vector IncludeDirs; - - [FieldOffset(48)] - internal Std.Vector SystemIncludeDirs; - - [FieldOffset(60)] - internal Std.Vector Defines; - - [FieldOffset(72)] - internal Std.Vector LibraryDirs; - [FieldOffset(84)] - internal global::System.IntPtr ASTContext; + public global::System.IntPtr ASTContext; [FieldOffset(88)] - internal int ToolSetToUse; - - [FieldOffset(92)] - internal Std.String TargetTriple; + public int ToolSetToUse; [FieldOffset(116)] - internal CppSharp.Parser.AST.CppAbi Abi; + public CppSharp.Parser.AST.CppAbi Abi; [FieldOffset(120)] - internal bool NoStandardIncludes; + public bool NoStandardIncludes; [FieldOffset(121)] - internal bool NoBuiltinIncludes; + public bool NoBuiltinIncludes; [FieldOffset(122)] - internal bool MicrosoftMode; + public bool MicrosoftMode; [FieldOffset(123)] - internal bool Verbose; + public bool Verbose; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -488,20 +467,14 @@ namespace CppSharp [StructLayout(LayoutKind.Explicit, Size = 60)] public struct Internal { - [FieldOffset(0)] - internal Std.String FileName; - - [FieldOffset(24)] - internal Std.String Message; - [FieldOffset(48)] - internal CppSharp.Parser.ParserDiagnosticLevel Level; + public CppSharp.Parser.ParserDiagnosticLevel Level; [FieldOffset(52)] - internal int LineNumber; + public int LineNumber; [FieldOffset(56)] - internal int ColumnNumber; + public int ColumnNumber; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -656,20 +629,17 @@ namespace CppSharp public unsafe partial class ParserResult : IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 24)] + [StructLayout(LayoutKind.Explicit, Size = 28)] public struct Internal { [FieldOffset(0)] - internal CppSharp.Parser.ParserResultKind Kind; - - [FieldOffset(4)] - internal Std.Vector Diagnostics; + public CppSharp.Parser.ParserResultKind Kind; [FieldOffset(16)] - internal global::System.IntPtr ASTContext; + public global::System.IntPtr ASTContext; [FieldOffset(20)] - internal global::System.IntPtr Library; + public global::System.IntPtr Library; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -721,7 +691,7 @@ namespace CppSharp public ParserResult() { - __Instance = Marshal.AllocHGlobal(24); + __Instance = Marshal.AllocHGlobal(28); Internal.ctor_0(__Instance); } diff --git a/src/CppParser/Bindings/CSharp/Target.cs b/src/CppParser/Bindings/CSharp/Target.cs index a3e25582..1036308a 100644 --- a/src/CppParser/Bindings/CSharp/Target.cs +++ b/src/CppParser/Bindings/CSharp/Target.cs @@ -30,122 +30,119 @@ namespace CppSharp [StructLayout(LayoutKind.Explicit, Size = 176)] public struct Internal { - [FieldOffset(0)] - internal Std.String ABI; - [FieldOffset(24)] - internal CppSharp.Parser.ParserIntType Char16Type; + public CppSharp.Parser.ParserIntType Char16Type; [FieldOffset(28)] - internal CppSharp.Parser.ParserIntType Char32Type; + public CppSharp.Parser.ParserIntType Char32Type; [FieldOffset(32)] - internal CppSharp.Parser.ParserIntType Int64Type; + public CppSharp.Parser.ParserIntType Int64Type; [FieldOffset(36)] - internal CppSharp.Parser.ParserIntType IntMaxType; + public CppSharp.Parser.ParserIntType IntMaxType; [FieldOffset(40)] - internal CppSharp.Parser.ParserIntType IntPtrType; + public CppSharp.Parser.ParserIntType IntPtrType; [FieldOffset(44)] - internal CppSharp.Parser.ParserIntType SizeType; + public CppSharp.Parser.ParserIntType SizeType; [FieldOffset(48)] - internal CppSharp.Parser.ParserIntType UIntMaxType; + public CppSharp.Parser.ParserIntType UIntMaxType; [FieldOffset(52)] - internal CppSharp.Parser.ParserIntType WCharType; + public CppSharp.Parser.ParserIntType WCharType; [FieldOffset(56)] - internal CppSharp.Parser.ParserIntType WIntType; + public CppSharp.Parser.ParserIntType WIntType; [FieldOffset(60)] - internal uint BoolAlign; + public uint BoolAlign; [FieldOffset(64)] - internal uint BoolWidth; + public uint BoolWidth; [FieldOffset(68)] - internal uint CharAlign; + public uint CharAlign; [FieldOffset(72)] - internal uint CharWidth; + public uint CharWidth; [FieldOffset(76)] - internal uint Char16Align; + public uint Char16Align; [FieldOffset(80)] - internal uint Char16Width; + public uint Char16Width; [FieldOffset(84)] - internal uint Char32Align; + public uint Char32Align; [FieldOffset(88)] - internal uint Char32Width; + public uint Char32Width; [FieldOffset(92)] - internal uint HalfAlign; + public uint HalfAlign; [FieldOffset(96)] - internal uint HalfWidth; + public uint HalfWidth; [FieldOffset(100)] - internal uint FloatAlign; + public uint FloatAlign; [FieldOffset(104)] - internal uint FloatWidth; + public uint FloatWidth; [FieldOffset(108)] - internal uint DoubleAlign; + public uint DoubleAlign; [FieldOffset(112)] - internal uint DoubleWidth; + public uint DoubleWidth; [FieldOffset(116)] - internal uint ShortAlign; + public uint ShortAlign; [FieldOffset(120)] - internal uint ShortWidth; + public uint ShortWidth; [FieldOffset(124)] - internal uint IntAlign; + public uint IntAlign; [FieldOffset(128)] - internal uint IntWidth; + public uint IntWidth; [FieldOffset(132)] - internal uint IntMaxTWidth; + public uint IntMaxTWidth; [FieldOffset(136)] - internal uint LongAlign; + public uint LongAlign; [FieldOffset(140)] - internal uint LongWidth; + public uint LongWidth; [FieldOffset(144)] - internal uint LongDoubleAlign; + public uint LongDoubleAlign; [FieldOffset(148)] - internal uint LongDoubleWidth; + public uint LongDoubleWidth; [FieldOffset(152)] - internal uint LongLongAlign; + public uint LongLongAlign; [FieldOffset(156)] - internal uint LongLongWidth; + public uint LongLongWidth; [FieldOffset(160)] - internal uint PointerAlign; + public uint PointerAlign; [FieldOffset(164)] - internal uint PointerWidth; + public uint PointerWidth; [FieldOffset(168)] - internal uint WCharAlign; + public uint WCharAlign; [FieldOffset(172)] - internal uint WCharWidth; + public uint WCharWidth; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, diff --git a/src/CppParser/Parser.cpp b/src/CppParser/Parser.cpp index bcc2ed67..69e38686 100644 --- a/src/CppParser/Parser.cpp +++ b/src/CppParser/Parser.cpp @@ -791,13 +791,18 @@ ClassTemplate* Parser::WalkClassTemplate(clang::ClassTemplateDecl* TD) auto NS = GetNamespace(TD); assert(NS && "Expected a valid namespace"); - ClassTemplate* CT = new ClassTemplate(); - HandleDeclaration(TD, CT); + auto CT = NS->FindClassTemplate((void*) TD); + if (CT != nullptr) + return CT; - CT->TemplatedDecl = WalkRecordCXX(TD->getTemplatedDecl()); + CT = new ClassTemplate(); + HandleDeclaration(TD, CT); + CT->_Namespace = NS; NS->Templates.push_back(CT); + CT->TemplatedDecl = WalkRecordCXX(TD->getTemplatedDecl()); + auto TPL = TD->getTemplateParameters(); for(auto it = TPL->begin(); it != TPL->end(); ++it) { @@ -1107,10 +1112,15 @@ DeclarationContext* Parser::GetNamespace(clang::Decl* D, continue; } case Decl::ClassTemplateSpecialization: + { + auto CTSpec = cast(Ctx); + DC = WalkClassTemplateSpecialization(CTSpec); + continue; + } case Decl::ClassTemplatePartialSpecialization: { - // FIXME: Ignore ClassTemplateSpecialization namespaces... - // We might be able to translate these to C# nested types. + auto CTPSpec = cast(Ctx); + DC = WalkClassTemplatePartialSpecialization(CTPSpec); continue; } default: @@ -1487,8 +1497,6 @@ Type* Parser::WalkType(clang::QualType QualType, clang::TypeLoc* TL, F->Parameters.push_back(FA); } - return F; - Ty = F; break; } @@ -1684,6 +1692,7 @@ Type* Parser::WalkType(clang::QualType QualType, clang::TypeLoc* TL, { // TODO: stubbed Ty = new PackExpansionType(); + break; } case clang::Type::Decltype: { @@ -1838,7 +1847,6 @@ void Parser::WalkFunction(clang::FunctionDecl* FD, Function* F, auto NS = GetNamespace(FD); assert(NS && "Expected a valid namespace"); - F->OriginalPtr = (void*) FD; F->Name = FD->getNameAsString(); F->_Namespace = NS; F->IsVariadic = FD->isVariadic(); @@ -2320,10 +2328,6 @@ Declaration* Parser::WalkDeclaration(clang::Decl* D, { ClassTemplateDecl* TD = cast(D); auto Template = WalkClassTemplate(TD); - - auto NS = GetNamespace(TD); - Template->_Namespace = NS; - NS->Templates.push_back(Template); Decl = Template; break; @@ -2331,8 +2335,7 @@ Declaration* Parser::WalkDeclaration(clang::Decl* D, case Decl::ClassTemplateSpecialization: { auto TS = cast(D); - auto CT = new ClassTemplateSpecialization(); - HandleDeclaration(TS, CT); + auto CT = WalkClassTemplateSpecialization(TS); Decl = CT; break; @@ -2340,8 +2343,7 @@ Declaration* Parser::WalkDeclaration(clang::Decl* D, case Decl::ClassTemplatePartialSpecialization: { auto TS = cast(D); - auto CT = new ClassTemplatePartialSpecialization(); - HandleDeclaration(TS, CT); + auto CT = WalkClassTemplatePartialSpecialization(TS); Decl = CT; break; @@ -2349,13 +2351,9 @@ Declaration* Parser::WalkDeclaration(clang::Decl* D, case Decl::FunctionTemplate: { FunctionTemplateDecl* TD = cast(D); - auto Template = WalkFunctionTemplate(TD); - - auto NS = GetNamespace(TD); - Template->_Namespace = NS; - NS->Templates.push_back(Template); + auto FT = WalkFunctionTemplate(TD); - Decl = Template; + Decl = FT; break; } case Decl::Enum: @@ -2447,6 +2445,7 @@ Declaration* Parser::WalkDeclaration(clang::Decl* D, case Decl::UnresolvedUsingValue: case Decl::IndirectField: case Decl::StaticAssert: + case Decl::TypeAliasTemplate: break; default: { diff --git a/src/Parser/Parser.cpp b/src/Parser/Parser.cpp index 920d24b8..9d4bb5d2 100644 --- a/src/Parser/Parser.cpp +++ b/src/Parser/Parser.cpp @@ -541,6 +541,10 @@ CppSharp::AST::Class^ Parser::WalkRecordCXX(clang::CXXRecordDecl* Record) if (Record->isInjectedClassName()) return nullptr; + // skip va_list_tag as in clang: lib/Sema/SemaLookup.cpp + if (Record->getDeclName() == C->getSema().VAListTagName) + return nullptr; + auto NS = GetNamespace(Record); assert(NS && "Expected a valid namespace"); @@ -616,6 +620,8 @@ void Parser::WalkRecordCXX(clang::CXXRecordDecl* Record, if (hasLayout) { Layout = &C->getASTContext().getASTRecordLayout(Record); + if (!RC->Layout) + RC->Layout = gcnew CppSharp::AST::ClassLayout(); RC->Layout->Alignment = (int)Layout-> getAlignment().getQuantity(); RC->Layout->Size = (int)Layout->getSize().getQuantity(); RC->Layout->DataSize = (int)Layout->getDataSize().getQuantity(); @@ -681,7 +687,9 @@ void Parser::WalkRecordCXX(clang::CXXRecordDecl* Record, CppSharp::AST::BaseClassSpecifier^ Base = gcnew CppSharp::AST::BaseClassSpecifier(); Base->Access = ConvertToAccess(BS.getAccessSpecifier()); Base->IsVirtual = BS.isVirtual(); - Base->Type = WalkType(BS.getType(), &BS.getTypeSourceInfo()->getTypeLoc()); + + auto BSTL = BS.getTypeSourceInfo()->getTypeLoc(); + Base->Type = WalkType(BS.getType(), &BSTL); RC->Bases->Add(Base); } @@ -1377,9 +1385,12 @@ CppSharp::AST::Type^ Parser::WalkType(clang::QualType QualType, clang::TypeLoc* if (TL && !TL->isNull()) Next = TL->getNextTypeLoc(); auto Type = gcnew CppSharp::AST::DecayedType(); - Type->Decayed = GetQualifiedType(DT->getDecayedType(), WalkType(DT->getDecayedType(), &Next)); - Type->Original = GetQualifiedType(DT->getOriginalType(), WalkType(DT->getOriginalType(), &Next)); - Type->Pointee = GetQualifiedType(DT->getPointeeType(), WalkType(DT->getPointeeType(), &Next)); + Type->Decayed = GetQualifiedType(DT->getDecayedType(), + WalkType(DT->getDecayedType(), &Next)); + Type->Original = GetQualifiedType(DT->getOriginalType(), + WalkType(DT->getOriginalType(), &Next)); + Type->Pointee = GetQualifiedType(DT->getPointeeType(), + WalkType(DT->getPointeeType(), &Next)); Ty = Type; break; @@ -1423,7 +1434,8 @@ CppSharp::AST::Type^ Parser::WalkType(clang::QualType QualType, clang::TypeLoc* if (TL && !TL->isNull()) Next = TL->getNextTypeLoc(); auto A = gcnew CppSharp::AST::ArrayType(); - A->Type = WalkType(AT->getElementType(), &Next); + A->QualifiedType = GetQualifiedType(AT->getElementType(), + WalkType(AT->getElementType(), &Next)); A->SizeType = CppSharp::AST::ArrayType::ArraySize::Constant; A->Size = AST->getConstantArrayElementCount(AT); @@ -1438,7 +1450,8 @@ CppSharp::AST::Type^ Parser::WalkType(clang::QualType QualType, clang::TypeLoc* if (TL && !TL->isNull()) Next = TL->getNextTypeLoc(); auto A = gcnew CppSharp::AST::ArrayType(); - A->Type = WalkType(AT->getElementType(), &Next); + A->QualifiedType = GetQualifiedType(AT->getElementType(), + WalkType(AT->getElementType(), &Next)); A->SizeType = CppSharp::AST::ArrayType::ArraySize::Incomplete; Ty = A; @@ -1452,7 +1465,8 @@ CppSharp::AST::Type^ Parser::WalkType(clang::QualType QualType, clang::TypeLoc* if (TL && !TL->isNull()) Next = TL->getNextTypeLoc(); auto A = gcnew CppSharp::AST::ArrayType(); - A->Type = WalkType(AT->getElementType(), &Next); + A->QualifiedType = GetQualifiedType(AT->getElementType(), + WalkType(AT->getElementType(), &Next)); A->SizeType = CppSharp::AST::ArrayType::ArraySize::Dependent; //A->Size = AT->getSizeExpr(); @@ -1519,11 +1533,13 @@ CppSharp::AST::Type^ Parser::WalkType(clang::QualType QualType, clang::TypeLoc* case Type::MemberPointer: { auto MP = Type->getAs(); + TypeLoc Next; if (TL && !TL->isNull()) Next = TL->getNextTypeLoc(); auto MPT = gcnew CppSharp::AST::MemberPointerType(); - MPT->Pointee = WalkType(MP->getPointeeType(), &Next); + MPT->QualifiedPointee = GetQualifiedType(MP->getPointeeType(), + WalkType(MP->getPointeeType(), &Next)); Ty = MPT; break; @@ -1571,7 +1587,8 @@ CppSharp::AST::Type^ Parser::WalkType(clang::QualType QualType, clang::TypeLoc* Arg.Kind = CppSharp::AST::TemplateArgument::ArgumentKind::Type; TypeLoc ArgTL; ArgTL = ArgLoc.getTypeSourceInfo()->getTypeLoc(); - Arg.Type = GetQualifiedType(TA.getAsType(), WalkType(TA.getAsType(), &ArgTL)); + Arg.Type = GetQualifiedType(TA.getAsType(), + WalkType(TA.getAsType(), &ArgTL)); break; } case TemplateArgument::Declaration: @@ -2159,7 +2176,7 @@ CppSharp::AST::PreprocessedEntity^ Parser::WalkPreprocessedEntity( return nullptr; Entity->OriginalPtr = System::IntPtr(PPEntity); - Entity->Namespace = GetTranslationUnit(PPEntity->getSourceRange().getBegin(), NULL); + Entity->Namespace = GetTranslationUnit(PPEntity->getSourceRange().getBegin()); if (Decl->GetType() == CppSharp::AST::TranslationUnit::typeid) {