diff --git a/src/AST/ASTVisitor.cs b/src/AST/ASTVisitor.cs index 00f502bb..8b4dca5b 100644 --- a/src/AST/ASTVisitor.cs +++ b/src/AST/ASTVisitor.cs @@ -212,7 +212,7 @@ namespace CppSharp.AST } } - if (template.Desugared != null) + if (template.Desugared.Type != null) return template.Desugared.Visit(this); return false; @@ -256,6 +256,11 @@ namespace CppSharp.AST return true; } + public bool VisitUnaryTransformType(UnaryTransformType unaryTransformType, TypeQualifiers quals) + { + return true; + } + public virtual bool VisitPrimitiveType(PrimitiveType type, TypeQualifiers quals) { return true; diff --git a/src/AST/CppTypePrinter.cs b/src/AST/CppTypePrinter.cs index a5e6811f..96613998 100644 --- a/src/AST/CppTypePrinter.cs +++ b/src/AST/CppTypePrinter.cs @@ -18,10 +18,13 @@ namespace CppSharp.AST public bool PrintLogicalNames; public bool PrintTypeQualifiers; - public CppTypePrinter(bool printTypeQualifiers = true) + public bool PrintTypeModifiers { get; set; } + + public CppTypePrinter(bool printTypeQualifiers = true, bool printTypeModifiers = true) { PrintScopeKind = CppTypePrintScopeKind.GlobalQualified; PrintTypeQualifiers = printTypeQualifiers; + PrintTypeModifiers = printTypeModifiers; } public bool ResolveTypedefs { get; set; } @@ -78,13 +81,10 @@ namespace CppSharp.AST return string.Format("{0} (*)({1})", returnType.Visit(this), args); } + var qual = PrintTypeQualifiers && quals.IsConst ? "const " : string.Empty; var pointeeType = pointer.Pointee.Visit(this, quals); - var mod = ConvertModifierToString(pointer.Modifier); - - var s = PrintTypeQualifiers && quals.IsConst ? "const " : string.Empty; - s += string.Format("{0}{1}", pointeeType, mod); - - return s; + var mod = PrintTypeModifiers ? ConvertModifierToString(pointer.Modifier) : string.Empty; + return string.Format("{0}{1}{2}", qual, pointeeType, mod); } public string VisitMemberPointerType(MemberPointerType member, TypeQualifiers quals) @@ -164,7 +164,7 @@ namespace CppSharp.AST public string VisitDependentTemplateSpecializationType( DependentTemplateSpecializationType template, TypeQualifiers quals) { - if (template.Desugared != null) + if (template.Desugared.Type != null) return template.Desugared.Visit(this); return string.Empty; } @@ -190,7 +190,7 @@ namespace CppSharp.AST public string VisitDependentNameType(DependentNameType dependent, TypeQualifiers quals) { - return dependent.Desugared != null ? dependent.Desugared.Visit(this) : string.Empty; + return dependent.Desugared.Type != null ? dependent.Desugared.Visit(this) : string.Empty; } public string VisitPackExpansionType(PackExpansionType packExpansionType, TypeQualifiers quals) @@ -198,6 +198,13 @@ namespace CppSharp.AST return string.Empty; } + public string VisitUnaryTransformType(UnaryTransformType unaryTransformType, TypeQualifiers quals) + { + if (unaryTransformType.Desugared.Type != null) + return unaryTransformType.Desugared.Visit(this); + return unaryTransformType.BaseType.Visit(this); + } + public string VisitCILType(CILType type, TypeQualifiers quals) { return string.Empty; @@ -409,7 +416,7 @@ namespace CppSharp.AST public string VisitVarTemplateDecl(VarTemplate template) { - throw new NotImplementedException(); + return VisitDeclaration(template); } public string VisitVarTemplateSpecializationDecl(VarTemplateSpecialization template) diff --git a/src/AST/Type.cs b/src/AST/Type.cs index 4024365d..f8b76f96 100644 --- a/src/AST/Type.cs +++ b/src/AST/Type.cs @@ -646,14 +646,14 @@ namespace CppSharp.AST Type = new QualifiedType((Type) t.Type.Type.Clone(), t.Type.Qualifiers) }).ToList(); Template = type.Template; - Desugared = (Type) type.Desugared.Clone(); + Desugared = new QualifiedType((Type) type.Desugared.Type.Clone(), type.Desugared.Qualifiers); } public List Arguments; public Template Template; - public Type Desugared; + public QualifiedType Desugared; public ClassTemplateSpecialization GetClassTemplateSpecialization() { @@ -662,7 +662,7 @@ namespace CppSharp.AST private Declaration GetDeclaration() { - var finalType = Desugared.GetFinalPointee() ?? Desugared; + var finalType = Desugared.Type.GetFinalPointee() ?? Desugared.Type; var tagType = finalType as TagType; if (tagType != null) @@ -725,12 +725,12 @@ namespace CppSharp.AST Kind = t.Kind, Type = new QualifiedType((Type) t.Type.Type.Clone(), t.Type.Qualifiers) }).ToList(); - Desugared = (Type) type.Desugared.Clone(); + Desugared = new QualifiedType((Type) type.Desugared.Type.Clone(), type.Desugared.Qualifiers); } public List Arguments; - public Type Desugared; + public QualifiedType Desugared; public override T Visit(ITypeVisitor visitor, TypeQualifiers quals = new TypeQualifiers()) @@ -919,7 +919,7 @@ namespace CppSharp.AST { } - public Type Desugared { get; set; } + public QualifiedType Desugared { get; set; } public override T Visit(ITypeVisitor visitor, TypeQualifiers quals = new TypeQualifiers()) @@ -1002,6 +1002,31 @@ namespace CppSharp.AST } } + public class UnaryTransformType : Type + { + public UnaryTransformType() + { + } + + public UnaryTransformType(UnaryTransformType type) + : base(type) + { + } + + public QualifiedType Desugared { get; set; } + public QualifiedType BaseType { get; set; } + + public override T Visit(ITypeVisitor visitor, TypeQualifiers quals = new TypeQualifiers()) + { + return visitor.VisitUnaryTransformType(this, quals); + } + + public override object Clone() + { + return new UnaryTransformType(this); + } + } + #region Primitives /// @@ -1130,6 +1155,7 @@ namespace CppSharp.AST T VisitDependentNameType(DependentNameType dependent, TypeQualifiers quals); T VisitPackExpansionType(PackExpansionType packExpansionType, TypeQualifiers quals); + T VisitUnaryTransformType(UnaryTransformType unaryTransformType, TypeQualifiers quals); T VisitCILType(CILType type, TypeQualifiers quals); } } diff --git a/src/AST/TypeExtensions.cs b/src/AST/TypeExtensions.cs index 5a0ad6e4..20da8c05 100644 --- a/src/AST/TypeExtensions.cs +++ b/src/AST/TypeExtensions.cs @@ -129,7 +129,7 @@ if (type.Template is TypeAliasTemplate) { Class @class; - type.Desugared.TryGetClass(out @class); + type.Desugared.Type.TryGetClass(out @class); decl = @class as T; return decl != null; } @@ -148,7 +148,7 @@ if (templateTemplateParameter != null) return (decl = templateTemplateParameter.TemplatedDecl as T) != null; } - tagType = (TagType) type.Desugared; + tagType = (TagType) type.Desugared.Type; } else { diff --git a/src/Core/Parser/ASTConverter.cs b/src/Core/Parser/ASTConverter.cs index c9f21cf2..3835ba53 100644 --- a/src/Core/Parser/ASTConverter.cs +++ b/src/Core/Parser/ASTConverter.cs @@ -27,6 +27,7 @@ namespace CppSharp public abstract TRet VisitDependentName(DependentNameType type); public abstract TRet VisitBuiltin(BuiltinType type); public abstract TRet VisitPackExpansion(PackExpansionType type); + public abstract TRet VisitUnaryTransform(UnaryTransformType type); public TRet Visit(Parser.AST.Type type) { @@ -115,6 +116,11 @@ namespace CppSharp var _type = PackExpansionType.__CreateInstance(type.__Instance); return VisitPackExpansion(_type); } + case TypeKind.UnaryTransform: + { + var _type = UnaryTransformType.__CreateInstance(type.__Instance); + return VisitUnaryTransform(_type); + } } throw new ArgumentOutOfRangeException(); @@ -600,7 +606,7 @@ namespace CppSharp } _type.Template = declConverter.Visit(type.Template) as AST.Template; - _type.Desugared = Visit(type.Desugared); + _type.Desugared = VisitQualified(type.Desugared); VisitType(type, _type); @@ -619,7 +625,7 @@ namespace CppSharp _type.Arguments.Add(_arg); } - _type.Desugared = Visit(type.Desugared); + _type.Desugared = VisitQualified(type.Desugared); VisitType(type, _type); @@ -659,8 +665,7 @@ namespace CppSharp { var _type = new AST.DependentNameType(); VisitType(type, _type); - if (type.Desugared != null) - _type.Desugared = Visit(type.Desugared); + _type.Desugared = VisitQualified(type.Desugared); return _type; } @@ -731,9 +736,17 @@ namespace CppSharp public override AST.Type VisitPackExpansion(PackExpansionType type) { - var _type = new CppSharp.AST.PackExpansionType(); - _type.IsDependent = type.IsDependent; + var _type = new AST.PackExpansionType(); + VisitType(type, _type); + return _type; + } + + public override AST.Type VisitUnaryTransform(UnaryTransformType type) + { + var _type = new AST.UnaryTransformType(); VisitType(type, _type); + _type.Desugared = VisitQualified(type.Desugared); + _type.BaseType = VisitQualified(type.BaseType); return _type; } } diff --git a/src/CppParser/AST.cpp b/src/CppParser/AST.cpp index af911a54..95a62e1f 100644 --- a/src/CppParser/AST.cpp +++ b/src/CppParser/AST.cpp @@ -144,7 +144,7 @@ NonTypeTemplateParameter::~NonTypeTemplateParameter() {} TemplateArgument::TemplateArgument() : Declaration(0), Integral(0) {} TemplateSpecializationType::TemplateSpecializationType() - : Type(TypeKind::TemplateSpecialization), Template(0), Desugared(0) {} + : Type(TypeKind::TemplateSpecialization), Template(0) {} TemplateSpecializationType::TemplateSpecializationType( const TemplateSpecializationType& rhs) : Type(rhs), @@ -155,7 +155,7 @@ TemplateSpecializationType::~TemplateSpecializationType() {} DEF_VECTOR(TemplateSpecializationType, TemplateArgument, Arguments) DependentTemplateSpecializationType::DependentTemplateSpecializationType() - : Type(TypeKind::DependentTemplateSpecialization), Desugared(0) {} + : Type(TypeKind::DependentTemplateSpecialization) {} DependentTemplateSpecializationType::DependentTemplateSpecializationType( const DependentTemplateSpecializationType& rhs) : Type(rhs), @@ -178,10 +178,12 @@ InjectedClassNameType::InjectedClassNameType() { } -DependentNameType::DependentNameType() : Type(TypeKind::DependentName), Desugared(0) {} +DependentNameType::DependentNameType() : Type(TypeKind::DependentName) {} PackExpansionType::PackExpansionType() : Type(TypeKind::PackExpansion) {} +UnaryTransformType::UnaryTransformType() : Type(TypeKind::UnaryTransform) {} + BuiltinType::BuiltinType() : CppSharp::CppParser::AST::Type(TypeKind::Builtin) {} VTableComponent::VTableComponent() : Offset(0), Declaration(0) {} diff --git a/src/CppParser/AST.h b/src/CppParser/AST.h index f2a91741..66a36601 100644 --- a/src/CppParser/AST.h +++ b/src/CppParser/AST.h @@ -32,7 +32,8 @@ enum class TypeKind InjectedClassName, DependentName, PackExpansion, - Builtin + Builtin, + UnaryTransform }; #define DECLARE_TYPE_KIND(kind) \ @@ -193,7 +194,7 @@ public: VECTOR(TemplateArgument, Arguments) CppSharp::CppParser::AST::Template* Template; - Type* Desugared; + QualifiedType Desugared; }; class CS_API DependentTemplateSpecializationType : public Type @@ -204,7 +205,7 @@ public: ~DependentTemplateSpecializationType(); VECTOR(TemplateArgument, Arguments) - Type* Desugared; + QualifiedType Desugared; }; class TypeTemplateParameter; @@ -241,7 +242,7 @@ class CS_API DependentNameType : public Type { public: DECLARE_TYPE_KIND(DependentName) - Type* Desugared; + QualifiedType Desugared; }; class CS_API PackExpansionType : public Type @@ -250,6 +251,14 @@ public: DECLARE_TYPE_KIND(PackExpansion) }; +class CS_API UnaryTransformType : public Type +{ +public: + DECLARE_TYPE_KIND(UnaryTransform) + QualifiedType Desugared; + QualifiedType BaseType; +}; + enum class PrimitiveType { Null, diff --git a/src/CppParser/Bindings/CLI/AST.cpp b/src/CppParser/Bindings/CLI/AST.cpp index 43ef9bb8..a4a2f08c 100644 --- a/src/CppParser/Bindings/CLI/AST.cpp +++ b/src/CppParser/Bindings/CLI/AST.cpp @@ -791,14 +791,14 @@ void CppSharp::Parser::AST::TemplateSpecializationType::Template::set(CppSharp:: ((::CppSharp::CppParser::AST::TemplateSpecializationType*)NativePtr)->Template = (::CppSharp::CppParser::AST::Template*)value->NativePtr; } -CppSharp::Parser::AST::Type^ CppSharp::Parser::AST::TemplateSpecializationType::Desugared::get() +CppSharp::Parser::AST::QualifiedType^ CppSharp::Parser::AST::TemplateSpecializationType::Desugared::get() { - return (((::CppSharp::CppParser::AST::TemplateSpecializationType*)NativePtr)->Desugared == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::Type((::CppSharp::CppParser::AST::Type*)((::CppSharp::CppParser::AST::TemplateSpecializationType*)NativePtr)->Desugared); + return (&((::CppSharp::CppParser::AST::TemplateSpecializationType*)NativePtr)->Desugared == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::QualifiedType((::CppSharp::CppParser::AST::QualifiedType*)&((::CppSharp::CppParser::AST::TemplateSpecializationType*)NativePtr)->Desugared); } -void CppSharp::Parser::AST::TemplateSpecializationType::Desugared::set(CppSharp::Parser::AST::Type^ value) +void CppSharp::Parser::AST::TemplateSpecializationType::Desugared::set(CppSharp::Parser::AST::QualifiedType^ value) { - ((::CppSharp::CppParser::AST::TemplateSpecializationType*)NativePtr)->Desugared = (::CppSharp::CppParser::AST::Type*)value->NativePtr; + ((::CppSharp::CppParser::AST::TemplateSpecializationType*)NativePtr)->Desugared = *(::CppSharp::CppParser::AST::QualifiedType*)value->NativePtr; } CppSharp::Parser::AST::DependentTemplateSpecializationType::DependentTemplateSpecializationType(::CppSharp::CppParser::AST::DependentTemplateSpecializationType* native) @@ -864,14 +864,14 @@ unsigned int CppSharp::Parser::AST::DependentTemplateSpecializationType::Argumen return __ret; } -CppSharp::Parser::AST::Type^ CppSharp::Parser::AST::DependentTemplateSpecializationType::Desugared::get() +CppSharp::Parser::AST::QualifiedType^ CppSharp::Parser::AST::DependentTemplateSpecializationType::Desugared::get() { - return (((::CppSharp::CppParser::AST::DependentTemplateSpecializationType*)NativePtr)->Desugared == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::Type((::CppSharp::CppParser::AST::Type*)((::CppSharp::CppParser::AST::DependentTemplateSpecializationType*)NativePtr)->Desugared); + return (&((::CppSharp::CppParser::AST::DependentTemplateSpecializationType*)NativePtr)->Desugared == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::QualifiedType((::CppSharp::CppParser::AST::QualifiedType*)&((::CppSharp::CppParser::AST::DependentTemplateSpecializationType*)NativePtr)->Desugared); } -void CppSharp::Parser::AST::DependentTemplateSpecializationType::Desugared::set(CppSharp::Parser::AST::Type^ value) +void CppSharp::Parser::AST::DependentTemplateSpecializationType::Desugared::set(CppSharp::Parser::AST::QualifiedType^ value) { - ((::CppSharp::CppParser::AST::DependentTemplateSpecializationType*)NativePtr)->Desugared = (::CppSharp::CppParser::AST::Type*)value->NativePtr; + ((::CppSharp::CppParser::AST::DependentTemplateSpecializationType*)NativePtr)->Desugared = *(::CppSharp::CppParser::AST::QualifiedType*)value->NativePtr; } CppSharp::Parser::AST::TemplateParameterType::TemplateParameterType(::CppSharp::CppParser::AST::TemplateParameterType* native) @@ -1074,14 +1074,14 @@ CppSharp::Parser::AST::DependentNameType::DependentNameType(CppSharp::Parser::AS NativePtr = new ::CppSharp::CppParser::AST::DependentNameType(__arg0); } -CppSharp::Parser::AST::Type^ CppSharp::Parser::AST::DependentNameType::Desugared::get() +CppSharp::Parser::AST::QualifiedType^ CppSharp::Parser::AST::DependentNameType::Desugared::get() { - return (((::CppSharp::CppParser::AST::DependentNameType*)NativePtr)->Desugared == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::Type((::CppSharp::CppParser::AST::Type*)((::CppSharp::CppParser::AST::DependentNameType*)NativePtr)->Desugared); + return (&((::CppSharp::CppParser::AST::DependentNameType*)NativePtr)->Desugared == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::QualifiedType((::CppSharp::CppParser::AST::QualifiedType*)&((::CppSharp::CppParser::AST::DependentNameType*)NativePtr)->Desugared); } -void CppSharp::Parser::AST::DependentNameType::Desugared::set(CppSharp::Parser::AST::Type^ value) +void CppSharp::Parser::AST::DependentNameType::Desugared::set(CppSharp::Parser::AST::QualifiedType^ value) { - ((::CppSharp::CppParser::AST::DependentNameType*)NativePtr)->Desugared = (::CppSharp::CppParser::AST::Type*)value->NativePtr; + ((::CppSharp::CppParser::AST::DependentNameType*)NativePtr)->Desugared = *(::CppSharp::CppParser::AST::QualifiedType*)value->NativePtr; } CppSharp::Parser::AST::PackExpansionType::PackExpansionType(::CppSharp::CppParser::AST::PackExpansionType* native) @@ -1115,6 +1115,57 @@ CppSharp::Parser::AST::PackExpansionType::PackExpansionType(CppSharp::Parser::AS NativePtr = new ::CppSharp::CppParser::AST::PackExpansionType(__arg0); } +CppSharp::Parser::AST::UnaryTransformType::UnaryTransformType(::CppSharp::CppParser::AST::UnaryTransformType* native) + : CppSharp::Parser::AST::Type((::CppSharp::CppParser::AST::Type*)native) +{ +} + +CppSharp::Parser::AST::UnaryTransformType^ CppSharp::Parser::AST::UnaryTransformType::__CreateInstance(::System::IntPtr native) +{ + return gcnew ::CppSharp::Parser::AST::UnaryTransformType((::CppSharp::CppParser::AST::UnaryTransformType*) native.ToPointer()); +} + +CppSharp::Parser::AST::UnaryTransformType::~UnaryTransformType() +{ +} + +CppSharp::Parser::AST::UnaryTransformType::UnaryTransformType() + : CppSharp::Parser::AST::Type((::CppSharp::CppParser::AST::Type*)nullptr) +{ + __ownsNativeInstance = true; + NativePtr = new ::CppSharp::CppParser::AST::UnaryTransformType(); +} + +CppSharp::Parser::AST::UnaryTransformType::UnaryTransformType(CppSharp::Parser::AST::UnaryTransformType^ _0) + : CppSharp::Parser::AST::Type((::CppSharp::CppParser::AST::Type*)nullptr) +{ + __ownsNativeInstance = true; + if (ReferenceEquals(_0, nullptr)) + throw gcnew ::System::ArgumentNullException("_0", "Cannot be null because it is a C++ reference (&)."); + auto &__arg0 = *(::CppSharp::CppParser::AST::UnaryTransformType*)_0->NativePtr; + NativePtr = new ::CppSharp::CppParser::AST::UnaryTransformType(__arg0); +} + +CppSharp::Parser::AST::QualifiedType^ CppSharp::Parser::AST::UnaryTransformType::Desugared::get() +{ + return (&((::CppSharp::CppParser::AST::UnaryTransformType*)NativePtr)->Desugared == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::QualifiedType((::CppSharp::CppParser::AST::QualifiedType*)&((::CppSharp::CppParser::AST::UnaryTransformType*)NativePtr)->Desugared); +} + +void CppSharp::Parser::AST::UnaryTransformType::Desugared::set(CppSharp::Parser::AST::QualifiedType^ value) +{ + ((::CppSharp::CppParser::AST::UnaryTransformType*)NativePtr)->Desugared = *(::CppSharp::CppParser::AST::QualifiedType*)value->NativePtr; +} + +CppSharp::Parser::AST::QualifiedType^ CppSharp::Parser::AST::UnaryTransformType::BaseType::get() +{ + return (&((::CppSharp::CppParser::AST::UnaryTransformType*)NativePtr)->BaseType == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::QualifiedType((::CppSharp::CppParser::AST::QualifiedType*)&((::CppSharp::CppParser::AST::UnaryTransformType*)NativePtr)->BaseType); +} + +void CppSharp::Parser::AST::UnaryTransformType::BaseType::set(CppSharp::Parser::AST::QualifiedType^ value) +{ + ((::CppSharp::CppParser::AST::UnaryTransformType*)NativePtr)->BaseType = *(::CppSharp::CppParser::AST::QualifiedType*)value->NativePtr; +} + CppSharp::Parser::AST::BuiltinType::BuiltinType(::CppSharp::CppParser::AST::BuiltinType* native) : CppSharp::Parser::AST::Type((::CppSharp::CppParser::AST::Type*)native) { diff --git a/src/CppParser/Bindings/CLI/AST.h b/src/CppParser/Bindings/CLI/AST.h index 3f063110..89fa7ba4 100644 --- a/src/CppParser/Bindings/CLI/AST.h +++ b/src/CppParser/Bindings/CLI/AST.h @@ -99,6 +99,7 @@ namespace CppSharp ref class TypedefDecl; ref class TypedefNameDecl; ref class TypedefType; + ref class UnaryTransformType; ref class VFTableInfo; ref class VTableComponent; ref class VTableLayout; @@ -136,7 +137,8 @@ namespace CppSharp InjectedClassName = 12, DependentName = 13, PackExpansion = 14, - Builtin = 15 + Builtin = 15, + UnaryTransform = 16 }; public enum struct DeclarationKind @@ -787,10 +789,10 @@ namespace CppSharp void set(CppSharp::Parser::AST::Template^); } - property CppSharp::Parser::AST::Type^ Desugared + property CppSharp::Parser::AST::QualifiedType^ Desugared { - CppSharp::Parser::AST::Type^ get(); - void set(CppSharp::Parser::AST::Type^); + CppSharp::Parser::AST::QualifiedType^ get(); + void set(CppSharp::Parser::AST::QualifiedType^); } CppSharp::Parser::AST::TemplateArgument^ getArguments(unsigned int i); @@ -817,10 +819,10 @@ namespace CppSharp unsigned int get(); } - property CppSharp::Parser::AST::Type^ Desugared + property CppSharp::Parser::AST::QualifiedType^ Desugared { - CppSharp::Parser::AST::Type^ get(); - void set(CppSharp::Parser::AST::Type^); + CppSharp::Parser::AST::QualifiedType^ get(); + void set(CppSharp::Parser::AST::QualifiedType^); } CppSharp::Parser::AST::TemplateArgument^ getArguments(unsigned int i); @@ -923,10 +925,10 @@ namespace CppSharp ~DependentNameType(); - property CppSharp::Parser::AST::Type^ Desugared + property CppSharp::Parser::AST::QualifiedType^ Desugared { - CppSharp::Parser::AST::Type^ get(); - void set(CppSharp::Parser::AST::Type^); + CppSharp::Parser::AST::QualifiedType^ get(); + void set(CppSharp::Parser::AST::QualifiedType^); } }; @@ -943,6 +945,31 @@ namespace CppSharp ~PackExpansionType(); }; + public ref class UnaryTransformType : CppSharp::Parser::AST::Type + { + public: + + UnaryTransformType(::CppSharp::CppParser::AST::UnaryTransformType* native); + static UnaryTransformType^ __CreateInstance(::System::IntPtr native); + UnaryTransformType(); + + UnaryTransformType(CppSharp::Parser::AST::UnaryTransformType^ _0); + + ~UnaryTransformType(); + + property CppSharp::Parser::AST::QualifiedType^ Desugared + { + CppSharp::Parser::AST::QualifiedType^ get(); + void set(CppSharp::Parser::AST::QualifiedType^); + } + + property CppSharp::Parser::AST::QualifiedType^ BaseType + { + CppSharp::Parser::AST::QualifiedType^ get(); + void set(CppSharp::Parser::AST::QualifiedType^); + } + }; + public ref class BuiltinType : CppSharp::Parser::AST::Type { public: diff --git a/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs index c4fc95fe..62c34fd8 100644 --- a/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs @@ -31,7 +31,8 @@ namespace CppSharp InjectedClassName = 12, DependentName = 13, PackExpansion = 14, - Builtin = 15 + Builtin = 15, + UnaryTransform = 16 } public enum DeclarationKind @@ -1765,7 +1766,7 @@ namespace CppSharp public unsafe partial class TemplateSpecializationType : global::CppSharp.Parser.AST.Type, IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 28)] + [StructLayout(LayoutKind.Explicit, Size = 32)] public new partial struct Internal { [FieldOffset(0)] @@ -1778,7 +1779,7 @@ namespace CppSharp public global::System.IntPtr Template; [FieldOffset(24)] - public global::System.IntPtr Desugared; + public global::CppSharp.Parser.AST.QualifiedType.Internal Desugared; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, @@ -1828,7 +1829,7 @@ namespace CppSharp private static void* __CopyValue(TemplateSpecializationType.Internal native) { - var ret = Marshal.AllocHGlobal(28); + var ret = Marshal.AllocHGlobal(32); global::CppSharp.Parser.AST.TemplateSpecializationType.Internal.cctor_1(ret, new global::System.IntPtr(&native)); return ret.ToPointer(); } @@ -1852,7 +1853,7 @@ namespace CppSharp public TemplateSpecializationType() : this((void*) null) { - __Instance = Marshal.AllocHGlobal(28); + __Instance = Marshal.AllocHGlobal(32); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; Internal.ctor_0((__Instance + __PointerAdjustment)); @@ -1861,7 +1862,7 @@ namespace CppSharp public TemplateSpecializationType(global::CppSharp.Parser.AST.TemplateSpecializationType _0) : this((void*) null) { - __Instance = Marshal.AllocHGlobal(28); + __Instance = Marshal.AllocHGlobal(32); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; if (ReferenceEquals(_0, null)) @@ -1926,28 +1927,23 @@ namespace CppSharp } } - public global::CppSharp.Parser.AST.Type Desugared + public global::CppSharp.Parser.AST.QualifiedType Desugared { get { - global::CppSharp.Parser.AST.Type __result0; - if (((Internal*) __Instance)->Desugared == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.AST.Type.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Desugared)) - __result0 = (global::CppSharp.Parser.AST.Type) global::CppSharp.Parser.AST.Type.NativeToManagedMap[((Internal*) __Instance)->Desugared]; - else __result0 = global::CppSharp.Parser.AST.Type.__CreateInstance(((Internal*) __Instance)->Desugared); - return __result0; + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->Desugared); } set { - ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); } } } public unsafe partial class DependentTemplateSpecializationType : global::CppSharp.Parser.AST.Type, IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 24)] + [StructLayout(LayoutKind.Explicit, Size = 28)] public new partial struct Internal { [FieldOffset(0)] @@ -1957,7 +1953,7 @@ namespace CppSharp public byte IsDependent; [FieldOffset(20)] - public global::System.IntPtr Desugared; + public global::CppSharp.Parser.AST.QualifiedType.Internal Desugared; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, @@ -2007,7 +2003,7 @@ namespace CppSharp private static void* __CopyValue(DependentTemplateSpecializationType.Internal native) { - var ret = Marshal.AllocHGlobal(24); + var ret = Marshal.AllocHGlobal(28); global::CppSharp.Parser.AST.DependentTemplateSpecializationType.Internal.cctor_1(ret, new global::System.IntPtr(&native)); return ret.ToPointer(); } @@ -2031,7 +2027,7 @@ namespace CppSharp public DependentTemplateSpecializationType() : this((void*) null) { - __Instance = Marshal.AllocHGlobal(24); + __Instance = Marshal.AllocHGlobal(28); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; Internal.ctor_0((__Instance + __PointerAdjustment)); @@ -2040,7 +2036,7 @@ namespace CppSharp public DependentTemplateSpecializationType(global::CppSharp.Parser.AST.DependentTemplateSpecializationType _0) : this((void*) null) { - __Instance = Marshal.AllocHGlobal(24); + __Instance = Marshal.AllocHGlobal(28); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; if (ReferenceEquals(_0, null)) @@ -2087,21 +2083,16 @@ namespace CppSharp } } - public global::CppSharp.Parser.AST.Type Desugared + public global::CppSharp.Parser.AST.QualifiedType Desugared { get { - global::CppSharp.Parser.AST.Type __result0; - if (((Internal*) __Instance)->Desugared == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.AST.Type.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Desugared)) - __result0 = (global::CppSharp.Parser.AST.Type) global::CppSharp.Parser.AST.Type.NativeToManagedMap[((Internal*) __Instance)->Desugared]; - else __result0 = global::CppSharp.Parser.AST.Type.__CreateInstance(((Internal*) __Instance)->Desugared); - return __result0; + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->Desugared); } set { - ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); } } } @@ -2475,7 +2466,7 @@ namespace CppSharp public unsafe partial class DependentNameType : global::CppSharp.Parser.AST.Type, IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 12)] + [StructLayout(LayoutKind.Explicit, Size = 16)] public new partial struct Internal { [FieldOffset(0)] @@ -2485,7 +2476,7 @@ namespace CppSharp public byte IsDependent; [FieldOffset(8)] - public global::System.IntPtr Desugared; + public global::CppSharp.Parser.AST.QualifiedType.Internal Desugared; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, @@ -2510,7 +2501,7 @@ namespace CppSharp private static void* __CopyValue(DependentNameType.Internal native) { - var ret = Marshal.AllocHGlobal(12); + var ret = Marshal.AllocHGlobal(16); global::CppSharp.Parser.AST.DependentNameType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); return ret.ToPointer(); } @@ -2534,7 +2525,7 @@ namespace CppSharp public DependentNameType() : this((void*) null) { - __Instance = Marshal.AllocHGlobal(12); + __Instance = Marshal.AllocHGlobal(16); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; Internal.ctor_0((__Instance + __PointerAdjustment)); @@ -2543,7 +2534,7 @@ namespace CppSharp public DependentNameType(global::CppSharp.Parser.AST.DependentNameType _0) : this((void*) null) { - __Instance = Marshal.AllocHGlobal(12); + __Instance = Marshal.AllocHGlobal(16); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; if (ReferenceEquals(_0, null)) @@ -2552,21 +2543,16 @@ namespace CppSharp Internal.cctor_2((__Instance + __PointerAdjustment), __arg0); } - public global::CppSharp.Parser.AST.Type Desugared + public global::CppSharp.Parser.AST.QualifiedType Desugared { get { - global::CppSharp.Parser.AST.Type __result0; - if (((Internal*) __Instance)->Desugared == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.AST.Type.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Desugared)) - __result0 = (global::CppSharp.Parser.AST.Type) global::CppSharp.Parser.AST.Type.NativeToManagedMap[((Internal*) __Instance)->Desugared]; - else __result0 = global::CppSharp.Parser.AST.Type.__CreateInstance(((Internal*) __Instance)->Desugared); - return __result0; + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->Desugared); } set { - ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); } } } @@ -2648,6 +2634,115 @@ namespace CppSharp } } + public unsafe partial class UnaryTransformType : global::CppSharp.Parser.AST.Type, IDisposable + { + [StructLayout(LayoutKind.Explicit, Size = 24)] + public new partial struct Internal + { + [FieldOffset(0)] + public global::CppSharp.Parser.AST.TypeKind Kind; + + [FieldOffset(4)] + public byte IsDependent; + + [FieldOffset(8)] + public global::CppSharp.Parser.AST.QualifiedType.Internal Desugared; + + [FieldOffset(16)] + public global::CppSharp.Parser.AST.QualifiedType.Internal BaseType; + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser3AST18UnaryTransformTypeC2Ev")] + internal static extern void ctor_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser3AST18UnaryTransformTypeC2ERKS2_")] + internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); + } + + public static new UnaryTransformType __CreateInstance(global::System.IntPtr native, bool skipVTables = false) + { + return new UnaryTransformType(native.ToPointer(), skipVTables); + } + + public static UnaryTransformType __CreateInstance(UnaryTransformType.Internal native, bool skipVTables = false) + { + return new UnaryTransformType(native, skipVTables); + } + + private static void* __CopyValue(UnaryTransformType.Internal native) + { + var ret = Marshal.AllocHGlobal(24); + global::CppSharp.Parser.AST.UnaryTransformType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); + return ret.ToPointer(); + } + + private UnaryTransformType(UnaryTransformType.Internal native, bool skipVTables = false) + : this(__CopyValue(native), skipVTables) + { + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + } + + protected UnaryTransformType(void* native, bool skipVTables = false) + : base((void*) null) + { + __PointerAdjustment = 0; + if (native == null) + return; + __Instance = new global::System.IntPtr(native); + } + + public UnaryTransformType() + : this((void*) null) + { + __Instance = Marshal.AllocHGlobal(24); + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + Internal.ctor_0((__Instance + __PointerAdjustment)); + } + + public UnaryTransformType(global::CppSharp.Parser.AST.UnaryTransformType _0) + : this((void*) null) + { + __Instance = Marshal.AllocHGlobal(24); + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + if (ReferenceEquals(_0, null)) + throw new global::System.ArgumentNullException("_0", "Cannot be null because it is a C++ reference (&)."); + var __arg0 = _0.__Instance; + Internal.cctor_2((__Instance + __PointerAdjustment), __arg0); + } + + public global::CppSharp.Parser.AST.QualifiedType Desugared + { + get + { + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->Desugared); + } + + set + { + ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); + } + } + + public global::CppSharp.Parser.AST.QualifiedType BaseType + { + get + { + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->BaseType); + } + + set + { + ((Internal*) __Instance)->BaseType = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); + } + } + } + public unsafe partial class BuiltinType : global::CppSharp.Parser.AST.Type, IDisposable { [StructLayout(LayoutKind.Explicit, Size = 12)] diff --git a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs index 8dee95f6..0db3b631 100644 --- a/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs @@ -31,7 +31,8 @@ namespace CppSharp InjectedClassName = 12, DependentName = 13, PackExpansion = 14, - Builtin = 15 + Builtin = 15, + UnaryTransform = 16 } public enum DeclarationKind @@ -1765,7 +1766,7 @@ namespace CppSharp public unsafe partial class TemplateSpecializationType : global::CppSharp.Parser.AST.Type, IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 28)] + [StructLayout(LayoutKind.Explicit, Size = 32)] public new partial struct Internal { [FieldOffset(0)] @@ -1778,7 +1779,7 @@ namespace CppSharp public global::System.IntPtr Template; [FieldOffset(24)] - public global::System.IntPtr Desugared; + public global::CppSharp.Parser.AST.QualifiedType.Internal Desugared; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -1828,7 +1829,7 @@ namespace CppSharp private static void* __CopyValue(TemplateSpecializationType.Internal native) { - var ret = Marshal.AllocHGlobal(28); + var ret = Marshal.AllocHGlobal(32); global::CppSharp.Parser.AST.TemplateSpecializationType.Internal.cctor_1(ret, new global::System.IntPtr(&native)); return ret.ToPointer(); } @@ -1852,7 +1853,7 @@ namespace CppSharp public TemplateSpecializationType() : this((void*) null) { - __Instance = Marshal.AllocHGlobal(28); + __Instance = Marshal.AllocHGlobal(32); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; Internal.ctor_0((__Instance + __PointerAdjustment)); @@ -1861,7 +1862,7 @@ namespace CppSharp public TemplateSpecializationType(global::CppSharp.Parser.AST.TemplateSpecializationType _0) : this((void*) null) { - __Instance = Marshal.AllocHGlobal(28); + __Instance = Marshal.AllocHGlobal(32); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; if (ReferenceEquals(_0, null)) @@ -1926,28 +1927,23 @@ namespace CppSharp } } - public global::CppSharp.Parser.AST.Type Desugared + public global::CppSharp.Parser.AST.QualifiedType Desugared { get { - global::CppSharp.Parser.AST.Type __result0; - if (((Internal*) __Instance)->Desugared == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.AST.Type.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Desugared)) - __result0 = (global::CppSharp.Parser.AST.Type) global::CppSharp.Parser.AST.Type.NativeToManagedMap[((Internal*) __Instance)->Desugared]; - else __result0 = global::CppSharp.Parser.AST.Type.__CreateInstance(((Internal*) __Instance)->Desugared); - return __result0; + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->Desugared); } set { - ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); } } } public unsafe partial class DependentTemplateSpecializationType : global::CppSharp.Parser.AST.Type, IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 24)] + [StructLayout(LayoutKind.Explicit, Size = 28)] public new partial struct Internal { [FieldOffset(0)] @@ -1957,7 +1953,7 @@ namespace CppSharp public byte IsDependent; [FieldOffset(20)] - public global::System.IntPtr Desugared; + public global::CppSharp.Parser.AST.QualifiedType.Internal Desugared; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -2007,7 +2003,7 @@ namespace CppSharp private static void* __CopyValue(DependentTemplateSpecializationType.Internal native) { - var ret = Marshal.AllocHGlobal(24); + var ret = Marshal.AllocHGlobal(28); global::CppSharp.Parser.AST.DependentTemplateSpecializationType.Internal.cctor_1(ret, new global::System.IntPtr(&native)); return ret.ToPointer(); } @@ -2031,7 +2027,7 @@ namespace CppSharp public DependentTemplateSpecializationType() : this((void*) null) { - __Instance = Marshal.AllocHGlobal(24); + __Instance = Marshal.AllocHGlobal(28); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; Internal.ctor_0((__Instance + __PointerAdjustment)); @@ -2040,7 +2036,7 @@ namespace CppSharp public DependentTemplateSpecializationType(global::CppSharp.Parser.AST.DependentTemplateSpecializationType _0) : this((void*) null) { - __Instance = Marshal.AllocHGlobal(24); + __Instance = Marshal.AllocHGlobal(28); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; if (ReferenceEquals(_0, null)) @@ -2087,21 +2083,16 @@ namespace CppSharp } } - public global::CppSharp.Parser.AST.Type Desugared + public global::CppSharp.Parser.AST.QualifiedType Desugared { get { - global::CppSharp.Parser.AST.Type __result0; - if (((Internal*) __Instance)->Desugared == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.AST.Type.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Desugared)) - __result0 = (global::CppSharp.Parser.AST.Type) global::CppSharp.Parser.AST.Type.NativeToManagedMap[((Internal*) __Instance)->Desugared]; - else __result0 = global::CppSharp.Parser.AST.Type.__CreateInstance(((Internal*) __Instance)->Desugared); - return __result0; + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->Desugared); } set { - ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); } } } @@ -2475,7 +2466,7 @@ namespace CppSharp public unsafe partial class DependentNameType : global::CppSharp.Parser.AST.Type, IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 12)] + [StructLayout(LayoutKind.Explicit, Size = 16)] public new partial struct Internal { [FieldOffset(0)] @@ -2485,7 +2476,7 @@ namespace CppSharp public byte IsDependent; [FieldOffset(8)] - public global::System.IntPtr Desugared; + public global::CppSharp.Parser.AST.QualifiedType.Internal Desugared; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, @@ -2510,7 +2501,7 @@ namespace CppSharp private static void* __CopyValue(DependentNameType.Internal native) { - var ret = Marshal.AllocHGlobal(12); + var ret = Marshal.AllocHGlobal(16); global::CppSharp.Parser.AST.DependentNameType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); return ret.ToPointer(); } @@ -2534,7 +2525,7 @@ namespace CppSharp public DependentNameType() : this((void*) null) { - __Instance = Marshal.AllocHGlobal(12); + __Instance = Marshal.AllocHGlobal(16); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; Internal.ctor_0((__Instance + __PointerAdjustment)); @@ -2543,7 +2534,7 @@ namespace CppSharp public DependentNameType(global::CppSharp.Parser.AST.DependentNameType _0) : this((void*) null) { - __Instance = Marshal.AllocHGlobal(12); + __Instance = Marshal.AllocHGlobal(16); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; if (ReferenceEquals(_0, null)) @@ -2552,21 +2543,16 @@ namespace CppSharp Internal.cctor_2((__Instance + __PointerAdjustment), __arg0); } - public global::CppSharp.Parser.AST.Type Desugared + public global::CppSharp.Parser.AST.QualifiedType Desugared { get { - global::CppSharp.Parser.AST.Type __result0; - if (((Internal*) __Instance)->Desugared == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.AST.Type.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Desugared)) - __result0 = (global::CppSharp.Parser.AST.Type) global::CppSharp.Parser.AST.Type.NativeToManagedMap[((Internal*) __Instance)->Desugared]; - else __result0 = global::CppSharp.Parser.AST.Type.__CreateInstance(((Internal*) __Instance)->Desugared); - return __result0; + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->Desugared); } set { - ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); } } } @@ -2648,6 +2634,115 @@ namespace CppSharp } } + public unsafe partial class UnaryTransformType : global::CppSharp.Parser.AST.Type, IDisposable + { + [StructLayout(LayoutKind.Explicit, Size = 24)] + public new partial struct Internal + { + [FieldOffset(0)] + public global::CppSharp.Parser.AST.TypeKind Kind; + + [FieldOffset(4)] + public byte IsDependent; + + [FieldOffset(8)] + public global::CppSharp.Parser.AST.QualifiedType.Internal Desugared; + + [FieldOffset(16)] + public global::CppSharp.Parser.AST.QualifiedType.Internal BaseType; + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, + EntryPoint="??0UnaryTransformType@AST@CppParser@CppSharp@@QAE@XZ")] + internal static extern global::System.IntPtr ctor_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, + EntryPoint="??0UnaryTransformType@AST@CppParser@CppSharp@@QAE@ABV0123@@Z")] + internal static extern global::System.IntPtr cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); + } + + public static new UnaryTransformType __CreateInstance(global::System.IntPtr native, bool skipVTables = false) + { + return new UnaryTransformType(native.ToPointer(), skipVTables); + } + + public static UnaryTransformType __CreateInstance(UnaryTransformType.Internal native, bool skipVTables = false) + { + return new UnaryTransformType(native, skipVTables); + } + + private static void* __CopyValue(UnaryTransformType.Internal native) + { + var ret = Marshal.AllocHGlobal(24); + global::CppSharp.Parser.AST.UnaryTransformType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); + return ret.ToPointer(); + } + + private UnaryTransformType(UnaryTransformType.Internal native, bool skipVTables = false) + : this(__CopyValue(native), skipVTables) + { + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + } + + protected UnaryTransformType(void* native, bool skipVTables = false) + : base((void*) null) + { + __PointerAdjustment = 0; + if (native == null) + return; + __Instance = new global::System.IntPtr(native); + } + + public UnaryTransformType() + : this((void*) null) + { + __Instance = Marshal.AllocHGlobal(24); + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + Internal.ctor_0((__Instance + __PointerAdjustment)); + } + + public UnaryTransformType(global::CppSharp.Parser.AST.UnaryTransformType _0) + : this((void*) null) + { + __Instance = Marshal.AllocHGlobal(24); + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + if (ReferenceEquals(_0, null)) + throw new global::System.ArgumentNullException("_0", "Cannot be null because it is a C++ reference (&)."); + var __arg0 = _0.__Instance; + Internal.cctor_2((__Instance + __PointerAdjustment), __arg0); + } + + public global::CppSharp.Parser.AST.QualifiedType Desugared + { + get + { + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->Desugared); + } + + set + { + ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); + } + } + + public global::CppSharp.Parser.AST.QualifiedType BaseType + { + get + { + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->BaseType); + } + + set + { + ((Internal*) __Instance)->BaseType = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); + } + } + } + public unsafe partial class BuiltinType : global::CppSharp.Parser.AST.Type, IDisposable { [StructLayout(LayoutKind.Explicit, Size = 12)] diff --git a/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs index 0a868392..8dec67e0 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs @@ -31,7 +31,8 @@ namespace CppSharp InjectedClassName = 12, DependentName = 13, PackExpansion = 14, - Builtin = 15 + Builtin = 15, + UnaryTransform = 16 } public enum DeclarationKind @@ -1765,7 +1766,7 @@ namespace CppSharp public unsafe partial class TemplateSpecializationType : global::CppSharp.Parser.AST.Type, IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 48)] + [StructLayout(LayoutKind.Explicit, Size = 56)] public new partial struct Internal { [FieldOffset(0)] @@ -1778,7 +1779,7 @@ namespace CppSharp public global::System.IntPtr Template; [FieldOffset(40)] - public global::System.IntPtr Desugared; + public global::CppSharp.Parser.AST.QualifiedType.Internal Desugared; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, @@ -1828,7 +1829,7 @@ namespace CppSharp private static void* __CopyValue(TemplateSpecializationType.Internal native) { - var ret = Marshal.AllocHGlobal(48); + var ret = Marshal.AllocHGlobal(56); global::CppSharp.Parser.AST.TemplateSpecializationType.Internal.cctor_1(ret, new global::System.IntPtr(&native)); return ret.ToPointer(); } @@ -1852,7 +1853,7 @@ namespace CppSharp public TemplateSpecializationType() : this((void*) null) { - __Instance = Marshal.AllocHGlobal(48); + __Instance = Marshal.AllocHGlobal(56); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; Internal.ctor_0((__Instance + __PointerAdjustment)); @@ -1861,7 +1862,7 @@ namespace CppSharp public TemplateSpecializationType(global::CppSharp.Parser.AST.TemplateSpecializationType _0) : this((void*) null) { - __Instance = Marshal.AllocHGlobal(48); + __Instance = Marshal.AllocHGlobal(56); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; if (ReferenceEquals(_0, null)) @@ -1926,28 +1927,23 @@ namespace CppSharp } } - public global::CppSharp.Parser.AST.Type Desugared + public global::CppSharp.Parser.AST.QualifiedType Desugared { get { - global::CppSharp.Parser.AST.Type __result0; - if (((Internal*) __Instance)->Desugared == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.AST.Type.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Desugared)) - __result0 = (global::CppSharp.Parser.AST.Type) global::CppSharp.Parser.AST.Type.NativeToManagedMap[((Internal*) __Instance)->Desugared]; - else __result0 = global::CppSharp.Parser.AST.Type.__CreateInstance(((Internal*) __Instance)->Desugared); - return __result0; + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->Desugared); } set { - ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); } } } public unsafe partial class DependentTemplateSpecializationType : global::CppSharp.Parser.AST.Type, IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 40)] + [StructLayout(LayoutKind.Explicit, Size = 48)] public new partial struct Internal { [FieldOffset(0)] @@ -1957,7 +1953,7 @@ namespace CppSharp public byte IsDependent; [FieldOffset(32)] - public global::System.IntPtr Desugared; + public global::CppSharp.Parser.AST.QualifiedType.Internal Desugared; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, @@ -2007,7 +2003,7 @@ namespace CppSharp private static void* __CopyValue(DependentTemplateSpecializationType.Internal native) { - var ret = Marshal.AllocHGlobal(40); + var ret = Marshal.AllocHGlobal(48); global::CppSharp.Parser.AST.DependentTemplateSpecializationType.Internal.cctor_1(ret, new global::System.IntPtr(&native)); return ret.ToPointer(); } @@ -2031,7 +2027,7 @@ namespace CppSharp public DependentTemplateSpecializationType() : this((void*) null) { - __Instance = Marshal.AllocHGlobal(40); + __Instance = Marshal.AllocHGlobal(48); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; Internal.ctor_0((__Instance + __PointerAdjustment)); @@ -2040,7 +2036,7 @@ namespace CppSharp public DependentTemplateSpecializationType(global::CppSharp.Parser.AST.DependentTemplateSpecializationType _0) : this((void*) null) { - __Instance = Marshal.AllocHGlobal(40); + __Instance = Marshal.AllocHGlobal(48); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; if (ReferenceEquals(_0, null)) @@ -2087,21 +2083,16 @@ namespace CppSharp } } - public global::CppSharp.Parser.AST.Type Desugared + public global::CppSharp.Parser.AST.QualifiedType Desugared { get { - global::CppSharp.Parser.AST.Type __result0; - if (((Internal*) __Instance)->Desugared == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.AST.Type.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Desugared)) - __result0 = (global::CppSharp.Parser.AST.Type) global::CppSharp.Parser.AST.Type.NativeToManagedMap[((Internal*) __Instance)->Desugared]; - else __result0 = global::CppSharp.Parser.AST.Type.__CreateInstance(((Internal*) __Instance)->Desugared); - return __result0; + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->Desugared); } set { - ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); } } } @@ -2475,7 +2466,7 @@ namespace CppSharp public unsafe partial class DependentNameType : global::CppSharp.Parser.AST.Type, IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 16)] + [StructLayout(LayoutKind.Explicit, Size = 24)] public new partial struct Internal { [FieldOffset(0)] @@ -2485,7 +2476,7 @@ namespace CppSharp public byte IsDependent; [FieldOffset(8)] - public global::System.IntPtr Desugared; + public global::CppSharp.Parser.AST.QualifiedType.Internal Desugared; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, @@ -2510,7 +2501,7 @@ namespace CppSharp private static void* __CopyValue(DependentNameType.Internal native) { - var ret = Marshal.AllocHGlobal(16); + var ret = Marshal.AllocHGlobal(24); global::CppSharp.Parser.AST.DependentNameType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); return ret.ToPointer(); } @@ -2534,7 +2525,7 @@ namespace CppSharp public DependentNameType() : this((void*) null) { - __Instance = Marshal.AllocHGlobal(16); + __Instance = Marshal.AllocHGlobal(24); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; Internal.ctor_0((__Instance + __PointerAdjustment)); @@ -2543,7 +2534,7 @@ namespace CppSharp public DependentNameType(global::CppSharp.Parser.AST.DependentNameType _0) : this((void*) null) { - __Instance = Marshal.AllocHGlobal(16); + __Instance = Marshal.AllocHGlobal(24); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; if (ReferenceEquals(_0, null)) @@ -2552,21 +2543,16 @@ namespace CppSharp Internal.cctor_2((__Instance + __PointerAdjustment), __arg0); } - public global::CppSharp.Parser.AST.Type Desugared + public global::CppSharp.Parser.AST.QualifiedType Desugared { get { - global::CppSharp.Parser.AST.Type __result0; - if (((Internal*) __Instance)->Desugared == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.AST.Type.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Desugared)) - __result0 = (global::CppSharp.Parser.AST.Type) global::CppSharp.Parser.AST.Type.NativeToManagedMap[((Internal*) __Instance)->Desugared]; - else __result0 = global::CppSharp.Parser.AST.Type.__CreateInstance(((Internal*) __Instance)->Desugared); - return __result0; + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->Desugared); } set { - ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); } } } @@ -2648,6 +2634,115 @@ namespace CppSharp } } + public unsafe partial class UnaryTransformType : global::CppSharp.Parser.AST.Type, IDisposable + { + [StructLayout(LayoutKind.Explicit, Size = 40)] + public new partial struct Internal + { + [FieldOffset(0)] + public global::CppSharp.Parser.AST.TypeKind Kind; + + [FieldOffset(4)] + public byte IsDependent; + + [FieldOffset(8)] + public global::CppSharp.Parser.AST.QualifiedType.Internal Desugared; + + [FieldOffset(24)] + public global::CppSharp.Parser.AST.QualifiedType.Internal BaseType; + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser3AST18UnaryTransformTypeC2Ev")] + internal static extern void ctor_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser3AST18UnaryTransformTypeC2ERKS2_")] + internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); + } + + public static new UnaryTransformType __CreateInstance(global::System.IntPtr native, bool skipVTables = false) + { + return new UnaryTransformType(native.ToPointer(), skipVTables); + } + + public static UnaryTransformType __CreateInstance(UnaryTransformType.Internal native, bool skipVTables = false) + { + return new UnaryTransformType(native, skipVTables); + } + + private static void* __CopyValue(UnaryTransformType.Internal native) + { + var ret = Marshal.AllocHGlobal(40); + global::CppSharp.Parser.AST.UnaryTransformType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); + return ret.ToPointer(); + } + + private UnaryTransformType(UnaryTransformType.Internal native, bool skipVTables = false) + : this(__CopyValue(native), skipVTables) + { + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + } + + protected UnaryTransformType(void* native, bool skipVTables = false) + : base((void*) null) + { + __PointerAdjustment = 0; + if (native == null) + return; + __Instance = new global::System.IntPtr(native); + } + + public UnaryTransformType() + : this((void*) null) + { + __Instance = Marshal.AllocHGlobal(40); + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + Internal.ctor_0((__Instance + __PointerAdjustment)); + } + + public UnaryTransformType(global::CppSharp.Parser.AST.UnaryTransformType _0) + : this((void*) null) + { + __Instance = Marshal.AllocHGlobal(40); + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + if (ReferenceEquals(_0, null)) + throw new global::System.ArgumentNullException("_0", "Cannot be null because it is a C++ reference (&)."); + var __arg0 = _0.__Instance; + Internal.cctor_2((__Instance + __PointerAdjustment), __arg0); + } + + public global::CppSharp.Parser.AST.QualifiedType Desugared + { + get + { + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->Desugared); + } + + set + { + ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); + } + } + + public global::CppSharp.Parser.AST.QualifiedType BaseType + { + get + { + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->BaseType); + } + + set + { + ((Internal*) __Instance)->BaseType = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); + } + } + } + public unsafe partial class BuiltinType : global::CppSharp.Parser.AST.Type, IDisposable { [StructLayout(LayoutKind.Explicit, Size = 12)] diff --git a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs index 75258dab..cf1bbc56 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs @@ -31,7 +31,8 @@ namespace CppSharp InjectedClassName = 12, DependentName = 13, PackExpansion = 14, - Builtin = 15 + Builtin = 15, + UnaryTransform = 16 } public enum DeclarationKind @@ -1765,7 +1766,7 @@ namespace CppSharp public unsafe partial class TemplateSpecializationType : global::CppSharp.Parser.AST.Type, IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 48)] + [StructLayout(LayoutKind.Explicit, Size = 56)] public new partial struct Internal { [FieldOffset(0)] @@ -1778,7 +1779,7 @@ namespace CppSharp public global::System.IntPtr Template; [FieldOffset(40)] - public global::System.IntPtr Desugared; + public global::CppSharp.Parser.AST.QualifiedType.Internal Desugared; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, @@ -1828,7 +1829,7 @@ namespace CppSharp private static void* __CopyValue(TemplateSpecializationType.Internal native) { - var ret = Marshal.AllocHGlobal(48); + var ret = Marshal.AllocHGlobal(56); global::CppSharp.Parser.AST.TemplateSpecializationType.Internal.cctor_1(ret, new global::System.IntPtr(&native)); return ret.ToPointer(); } @@ -1852,7 +1853,7 @@ namespace CppSharp public TemplateSpecializationType() : this((void*) null) { - __Instance = Marshal.AllocHGlobal(48); + __Instance = Marshal.AllocHGlobal(56); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; Internal.ctor_0((__Instance + __PointerAdjustment)); @@ -1861,7 +1862,7 @@ namespace CppSharp public TemplateSpecializationType(global::CppSharp.Parser.AST.TemplateSpecializationType _0) : this((void*) null) { - __Instance = Marshal.AllocHGlobal(48); + __Instance = Marshal.AllocHGlobal(56); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; if (ReferenceEquals(_0, null)) @@ -1926,28 +1927,23 @@ namespace CppSharp } } - public global::CppSharp.Parser.AST.Type Desugared + public global::CppSharp.Parser.AST.QualifiedType Desugared { get { - global::CppSharp.Parser.AST.Type __result0; - if (((Internal*) __Instance)->Desugared == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.AST.Type.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Desugared)) - __result0 = (global::CppSharp.Parser.AST.Type) global::CppSharp.Parser.AST.Type.NativeToManagedMap[((Internal*) __Instance)->Desugared]; - else __result0 = global::CppSharp.Parser.AST.Type.__CreateInstance(((Internal*) __Instance)->Desugared); - return __result0; + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->Desugared); } set { - ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); } } } public unsafe partial class DependentTemplateSpecializationType : global::CppSharp.Parser.AST.Type, IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 40)] + [StructLayout(LayoutKind.Explicit, Size = 48)] public new partial struct Internal { [FieldOffset(0)] @@ -1957,7 +1953,7 @@ namespace CppSharp public byte IsDependent; [FieldOffset(32)] - public global::System.IntPtr Desugared; + public global::CppSharp.Parser.AST.QualifiedType.Internal Desugared; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, @@ -2007,7 +2003,7 @@ namespace CppSharp private static void* __CopyValue(DependentTemplateSpecializationType.Internal native) { - var ret = Marshal.AllocHGlobal(40); + var ret = Marshal.AllocHGlobal(48); global::CppSharp.Parser.AST.DependentTemplateSpecializationType.Internal.cctor_1(ret, new global::System.IntPtr(&native)); return ret.ToPointer(); } @@ -2031,7 +2027,7 @@ namespace CppSharp public DependentTemplateSpecializationType() : this((void*) null) { - __Instance = Marshal.AllocHGlobal(40); + __Instance = Marshal.AllocHGlobal(48); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; Internal.ctor_0((__Instance + __PointerAdjustment)); @@ -2040,7 +2036,7 @@ namespace CppSharp public DependentTemplateSpecializationType(global::CppSharp.Parser.AST.DependentTemplateSpecializationType _0) : this((void*) null) { - __Instance = Marshal.AllocHGlobal(40); + __Instance = Marshal.AllocHGlobal(48); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; if (ReferenceEquals(_0, null)) @@ -2087,21 +2083,16 @@ namespace CppSharp } } - public global::CppSharp.Parser.AST.Type Desugared + public global::CppSharp.Parser.AST.QualifiedType Desugared { get { - global::CppSharp.Parser.AST.Type __result0; - if (((Internal*) __Instance)->Desugared == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.AST.Type.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Desugared)) - __result0 = (global::CppSharp.Parser.AST.Type) global::CppSharp.Parser.AST.Type.NativeToManagedMap[((Internal*) __Instance)->Desugared]; - else __result0 = global::CppSharp.Parser.AST.Type.__CreateInstance(((Internal*) __Instance)->Desugared); - return __result0; + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->Desugared); } set { - ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); } } } @@ -2475,7 +2466,7 @@ namespace CppSharp public unsafe partial class DependentNameType : global::CppSharp.Parser.AST.Type, IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 16)] + [StructLayout(LayoutKind.Explicit, Size = 24)] public new partial struct Internal { [FieldOffset(0)] @@ -2485,7 +2476,7 @@ namespace CppSharp public byte IsDependent; [FieldOffset(8)] - public global::System.IntPtr Desugared; + public global::CppSharp.Parser.AST.QualifiedType.Internal Desugared; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, @@ -2510,7 +2501,7 @@ namespace CppSharp private static void* __CopyValue(DependentNameType.Internal native) { - var ret = Marshal.AllocHGlobal(16); + var ret = Marshal.AllocHGlobal(24); global::CppSharp.Parser.AST.DependentNameType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); return ret.ToPointer(); } @@ -2534,7 +2525,7 @@ namespace CppSharp public DependentNameType() : this((void*) null) { - __Instance = Marshal.AllocHGlobal(16); + __Instance = Marshal.AllocHGlobal(24); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; Internal.ctor_0((__Instance + __PointerAdjustment)); @@ -2543,7 +2534,7 @@ namespace CppSharp public DependentNameType(global::CppSharp.Parser.AST.DependentNameType _0) : this((void*) null) { - __Instance = Marshal.AllocHGlobal(16); + __Instance = Marshal.AllocHGlobal(24); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; if (ReferenceEquals(_0, null)) @@ -2552,21 +2543,16 @@ namespace CppSharp Internal.cctor_2((__Instance + __PointerAdjustment), __arg0); } - public global::CppSharp.Parser.AST.Type Desugared + public global::CppSharp.Parser.AST.QualifiedType Desugared { get { - global::CppSharp.Parser.AST.Type __result0; - if (((Internal*) __Instance)->Desugared == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.AST.Type.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Desugared)) - __result0 = (global::CppSharp.Parser.AST.Type) global::CppSharp.Parser.AST.Type.NativeToManagedMap[((Internal*) __Instance)->Desugared]; - else __result0 = global::CppSharp.Parser.AST.Type.__CreateInstance(((Internal*) __Instance)->Desugared); - return __result0; + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->Desugared); } set { - ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); } } } @@ -2648,6 +2634,115 @@ namespace CppSharp } } + public unsafe partial class UnaryTransformType : global::CppSharp.Parser.AST.Type, IDisposable + { + [StructLayout(LayoutKind.Explicit, Size = 40)] + public new partial struct Internal + { + [FieldOffset(0)] + public global::CppSharp.Parser.AST.TypeKind Kind; + + [FieldOffset(4)] + public byte IsDependent; + + [FieldOffset(8)] + public global::CppSharp.Parser.AST.QualifiedType.Internal Desugared; + + [FieldOffset(24)] + public global::CppSharp.Parser.AST.QualifiedType.Internal BaseType; + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser3AST18UnaryTransformTypeC2Ev")] + internal static extern void ctor_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser3AST18UnaryTransformTypeC2ERKS2_")] + internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); + } + + public static new UnaryTransformType __CreateInstance(global::System.IntPtr native, bool skipVTables = false) + { + return new UnaryTransformType(native.ToPointer(), skipVTables); + } + + public static UnaryTransformType __CreateInstance(UnaryTransformType.Internal native, bool skipVTables = false) + { + return new UnaryTransformType(native, skipVTables); + } + + private static void* __CopyValue(UnaryTransformType.Internal native) + { + var ret = Marshal.AllocHGlobal(40); + global::CppSharp.Parser.AST.UnaryTransformType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); + return ret.ToPointer(); + } + + private UnaryTransformType(UnaryTransformType.Internal native, bool skipVTables = false) + : this(__CopyValue(native), skipVTables) + { + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + } + + protected UnaryTransformType(void* native, bool skipVTables = false) + : base((void*) null) + { + __PointerAdjustment = 0; + if (native == null) + return; + __Instance = new global::System.IntPtr(native); + } + + public UnaryTransformType() + : this((void*) null) + { + __Instance = Marshal.AllocHGlobal(40); + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + Internal.ctor_0((__Instance + __PointerAdjustment)); + } + + public UnaryTransformType(global::CppSharp.Parser.AST.UnaryTransformType _0) + : this((void*) null) + { + __Instance = Marshal.AllocHGlobal(40); + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + if (ReferenceEquals(_0, null)) + throw new global::System.ArgumentNullException("_0", "Cannot be null because it is a C++ reference (&)."); + var __arg0 = _0.__Instance; + Internal.cctor_2((__Instance + __PointerAdjustment), __arg0); + } + + public global::CppSharp.Parser.AST.QualifiedType Desugared + { + get + { + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->Desugared); + } + + set + { + ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); + } + } + + public global::CppSharp.Parser.AST.QualifiedType BaseType + { + get + { + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->BaseType); + } + + set + { + ((Internal*) __Instance)->BaseType = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); + } + } + } + public unsafe partial class BuiltinType : global::CppSharp.Parser.AST.Type, IDisposable { [StructLayout(LayoutKind.Explicit, Size = 12)] diff --git a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs index 625b69ae..489a628c 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs @@ -31,7 +31,8 @@ namespace CppSharp InjectedClassName = 12, DependentName = 13, PackExpansion = 14, - Builtin = 15 + Builtin = 15, + UnaryTransform = 16 } public enum DeclarationKind @@ -1765,7 +1766,7 @@ namespace CppSharp public unsafe partial class TemplateSpecializationType : global::CppSharp.Parser.AST.Type, IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 48)] + [StructLayout(LayoutKind.Explicit, Size = 56)] public new partial struct Internal { [FieldOffset(0)] @@ -1778,7 +1779,7 @@ namespace CppSharp public global::System.IntPtr Template; [FieldOffset(40)] - public global::System.IntPtr Desugared; + public global::CppSharp.Parser.AST.QualifiedType.Internal Desugared; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, @@ -1828,7 +1829,7 @@ namespace CppSharp private static void* __CopyValue(TemplateSpecializationType.Internal native) { - var ret = Marshal.AllocHGlobal(48); + var ret = Marshal.AllocHGlobal(56); global::CppSharp.Parser.AST.TemplateSpecializationType.Internal.cctor_1(ret, new global::System.IntPtr(&native)); return ret.ToPointer(); } @@ -1852,7 +1853,7 @@ namespace CppSharp public TemplateSpecializationType() : this((void*) null) { - __Instance = Marshal.AllocHGlobal(48); + __Instance = Marshal.AllocHGlobal(56); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; Internal.ctor_0((__Instance + __PointerAdjustment)); @@ -1861,7 +1862,7 @@ namespace CppSharp public TemplateSpecializationType(global::CppSharp.Parser.AST.TemplateSpecializationType _0) : this((void*) null) { - __Instance = Marshal.AllocHGlobal(48); + __Instance = Marshal.AllocHGlobal(56); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; if (ReferenceEquals(_0, null)) @@ -1926,28 +1927,23 @@ namespace CppSharp } } - public global::CppSharp.Parser.AST.Type Desugared + public global::CppSharp.Parser.AST.QualifiedType Desugared { get { - global::CppSharp.Parser.AST.Type __result0; - if (((Internal*) __Instance)->Desugared == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.AST.Type.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Desugared)) - __result0 = (global::CppSharp.Parser.AST.Type) global::CppSharp.Parser.AST.Type.NativeToManagedMap[((Internal*) __Instance)->Desugared]; - else __result0 = global::CppSharp.Parser.AST.Type.__CreateInstance(((Internal*) __Instance)->Desugared); - return __result0; + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->Desugared); } set { - ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); } } } public unsafe partial class DependentTemplateSpecializationType : global::CppSharp.Parser.AST.Type, IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 40)] + [StructLayout(LayoutKind.Explicit, Size = 48)] public new partial struct Internal { [FieldOffset(0)] @@ -1957,7 +1953,7 @@ namespace CppSharp public byte IsDependent; [FieldOffset(32)] - public global::System.IntPtr Desugared; + public global::CppSharp.Parser.AST.QualifiedType.Internal Desugared; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, @@ -2007,7 +2003,7 @@ namespace CppSharp private static void* __CopyValue(DependentTemplateSpecializationType.Internal native) { - var ret = Marshal.AllocHGlobal(40); + var ret = Marshal.AllocHGlobal(48); global::CppSharp.Parser.AST.DependentTemplateSpecializationType.Internal.cctor_1(ret, new global::System.IntPtr(&native)); return ret.ToPointer(); } @@ -2031,7 +2027,7 @@ namespace CppSharp public DependentTemplateSpecializationType() : this((void*) null) { - __Instance = Marshal.AllocHGlobal(40); + __Instance = Marshal.AllocHGlobal(48); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; Internal.ctor_0((__Instance + __PointerAdjustment)); @@ -2040,7 +2036,7 @@ namespace CppSharp public DependentTemplateSpecializationType(global::CppSharp.Parser.AST.DependentTemplateSpecializationType _0) : this((void*) null) { - __Instance = Marshal.AllocHGlobal(40); + __Instance = Marshal.AllocHGlobal(48); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; if (ReferenceEquals(_0, null)) @@ -2087,21 +2083,16 @@ namespace CppSharp } } - public global::CppSharp.Parser.AST.Type Desugared + public global::CppSharp.Parser.AST.QualifiedType Desugared { get { - global::CppSharp.Parser.AST.Type __result0; - if (((Internal*) __Instance)->Desugared == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.AST.Type.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Desugared)) - __result0 = (global::CppSharp.Parser.AST.Type) global::CppSharp.Parser.AST.Type.NativeToManagedMap[((Internal*) __Instance)->Desugared]; - else __result0 = global::CppSharp.Parser.AST.Type.__CreateInstance(((Internal*) __Instance)->Desugared); - return __result0; + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->Desugared); } set { - ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); } } } @@ -2475,7 +2466,7 @@ namespace CppSharp public unsafe partial class DependentNameType : global::CppSharp.Parser.AST.Type, IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 16)] + [StructLayout(LayoutKind.Explicit, Size = 24)] public new partial struct Internal { [FieldOffset(0)] @@ -2485,7 +2476,7 @@ namespace CppSharp public byte IsDependent; [FieldOffset(8)] - public global::System.IntPtr Desugared; + public global::CppSharp.Parser.AST.QualifiedType.Internal Desugared; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, @@ -2510,7 +2501,7 @@ namespace CppSharp private static void* __CopyValue(DependentNameType.Internal native) { - var ret = Marshal.AllocHGlobal(16); + var ret = Marshal.AllocHGlobal(24); global::CppSharp.Parser.AST.DependentNameType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); return ret.ToPointer(); } @@ -2534,7 +2525,7 @@ namespace CppSharp public DependentNameType() : this((void*) null) { - __Instance = Marshal.AllocHGlobal(16); + __Instance = Marshal.AllocHGlobal(24); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; Internal.ctor_0((__Instance + __PointerAdjustment)); @@ -2543,7 +2534,7 @@ namespace CppSharp public DependentNameType(global::CppSharp.Parser.AST.DependentNameType _0) : this((void*) null) { - __Instance = Marshal.AllocHGlobal(16); + __Instance = Marshal.AllocHGlobal(24); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; if (ReferenceEquals(_0, null)) @@ -2552,21 +2543,16 @@ namespace CppSharp Internal.cctor_2((__Instance + __PointerAdjustment), __arg0); } - public global::CppSharp.Parser.AST.Type Desugared + public global::CppSharp.Parser.AST.QualifiedType Desugared { get { - global::CppSharp.Parser.AST.Type __result0; - if (((Internal*) __Instance)->Desugared == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.AST.Type.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Desugared)) - __result0 = (global::CppSharp.Parser.AST.Type) global::CppSharp.Parser.AST.Type.NativeToManagedMap[((Internal*) __Instance)->Desugared]; - else __result0 = global::CppSharp.Parser.AST.Type.__CreateInstance(((Internal*) __Instance)->Desugared); - return __result0; + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->Desugared); } set { - ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); } } } @@ -2648,6 +2634,115 @@ namespace CppSharp } } + public unsafe partial class UnaryTransformType : global::CppSharp.Parser.AST.Type, IDisposable + { + [StructLayout(LayoutKind.Explicit, Size = 40)] + public new partial struct Internal + { + [FieldOffset(0)] + public global::CppSharp.Parser.AST.TypeKind Kind; + + [FieldOffset(4)] + public byte IsDependent; + + [FieldOffset(8)] + public global::CppSharp.Parser.AST.QualifiedType.Internal Desugared; + + [FieldOffset(24)] + public global::CppSharp.Parser.AST.QualifiedType.Internal BaseType; + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser3AST18UnaryTransformTypeC2Ev")] + internal static extern void ctor_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="_ZN8CppSharp9CppParser3AST18UnaryTransformTypeC2ERKS2_")] + internal static extern void cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); + } + + public static new UnaryTransformType __CreateInstance(global::System.IntPtr native, bool skipVTables = false) + { + return new UnaryTransformType(native.ToPointer(), skipVTables); + } + + public static UnaryTransformType __CreateInstance(UnaryTransformType.Internal native, bool skipVTables = false) + { + return new UnaryTransformType(native, skipVTables); + } + + private static void* __CopyValue(UnaryTransformType.Internal native) + { + var ret = Marshal.AllocHGlobal(40); + global::CppSharp.Parser.AST.UnaryTransformType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); + return ret.ToPointer(); + } + + private UnaryTransformType(UnaryTransformType.Internal native, bool skipVTables = false) + : this(__CopyValue(native), skipVTables) + { + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + } + + protected UnaryTransformType(void* native, bool skipVTables = false) + : base((void*) null) + { + __PointerAdjustment = 0; + if (native == null) + return; + __Instance = new global::System.IntPtr(native); + } + + public UnaryTransformType() + : this((void*) null) + { + __Instance = Marshal.AllocHGlobal(40); + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + Internal.ctor_0((__Instance + __PointerAdjustment)); + } + + public UnaryTransformType(global::CppSharp.Parser.AST.UnaryTransformType _0) + : this((void*) null) + { + __Instance = Marshal.AllocHGlobal(40); + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + if (ReferenceEquals(_0, null)) + throw new global::System.ArgumentNullException("_0", "Cannot be null because it is a C++ reference (&)."); + var __arg0 = _0.__Instance; + Internal.cctor_2((__Instance + __PointerAdjustment), __arg0); + } + + public global::CppSharp.Parser.AST.QualifiedType Desugared + { + get + { + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->Desugared); + } + + set + { + ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); + } + } + + public global::CppSharp.Parser.AST.QualifiedType BaseType + { + get + { + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->BaseType); + } + + set + { + ((Internal*) __Instance)->BaseType = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); + } + } + } + public unsafe partial class BuiltinType : global::CppSharp.Parser.AST.Type, IDisposable { [StructLayout(LayoutKind.Explicit, Size = 12)] diff --git a/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs b/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs index 8465c1cc..91d0b045 100644 --- a/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs +++ b/src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs @@ -31,7 +31,8 @@ namespace CppSharp InjectedClassName = 12, DependentName = 13, PackExpansion = 14, - Builtin = 15 + Builtin = 15, + UnaryTransform = 16 } public enum DeclarationKind @@ -1765,7 +1766,7 @@ namespace CppSharp public unsafe partial class TemplateSpecializationType : global::CppSharp.Parser.AST.Type, IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 48)] + [StructLayout(LayoutKind.Explicit, Size = 56)] public new partial struct Internal { [FieldOffset(0)] @@ -1778,7 +1779,7 @@ namespace CppSharp public global::System.IntPtr Template; [FieldOffset(40)] - public global::System.IntPtr Desugared; + public global::CppSharp.Parser.AST.QualifiedType.Internal Desugared; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, @@ -1828,7 +1829,7 @@ namespace CppSharp private static void* __CopyValue(TemplateSpecializationType.Internal native) { - var ret = Marshal.AllocHGlobal(48); + var ret = Marshal.AllocHGlobal(56); global::CppSharp.Parser.AST.TemplateSpecializationType.Internal.cctor_1(ret, new global::System.IntPtr(&native)); return ret.ToPointer(); } @@ -1852,7 +1853,7 @@ namespace CppSharp public TemplateSpecializationType() : this((void*) null) { - __Instance = Marshal.AllocHGlobal(48); + __Instance = Marshal.AllocHGlobal(56); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; Internal.ctor_0((__Instance + __PointerAdjustment)); @@ -1861,7 +1862,7 @@ namespace CppSharp public TemplateSpecializationType(global::CppSharp.Parser.AST.TemplateSpecializationType _0) : this((void*) null) { - __Instance = Marshal.AllocHGlobal(48); + __Instance = Marshal.AllocHGlobal(56); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; if (ReferenceEquals(_0, null)) @@ -1926,28 +1927,23 @@ namespace CppSharp } } - public global::CppSharp.Parser.AST.Type Desugared + public global::CppSharp.Parser.AST.QualifiedType Desugared { get { - global::CppSharp.Parser.AST.Type __result0; - if (((Internal*) __Instance)->Desugared == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.AST.Type.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Desugared)) - __result0 = (global::CppSharp.Parser.AST.Type) global::CppSharp.Parser.AST.Type.NativeToManagedMap[((Internal*) __Instance)->Desugared]; - else __result0 = global::CppSharp.Parser.AST.Type.__CreateInstance(((Internal*) __Instance)->Desugared); - return __result0; + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->Desugared); } set { - ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); } } } public unsafe partial class DependentTemplateSpecializationType : global::CppSharp.Parser.AST.Type, IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 40)] + [StructLayout(LayoutKind.Explicit, Size = 48)] public new partial struct Internal { [FieldOffset(0)] @@ -1957,7 +1953,7 @@ namespace CppSharp public byte IsDependent; [FieldOffset(32)] - public global::System.IntPtr Desugared; + public global::CppSharp.Parser.AST.QualifiedType.Internal Desugared; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, @@ -2007,7 +2003,7 @@ namespace CppSharp private static void* __CopyValue(DependentTemplateSpecializationType.Internal native) { - var ret = Marshal.AllocHGlobal(40); + var ret = Marshal.AllocHGlobal(48); global::CppSharp.Parser.AST.DependentTemplateSpecializationType.Internal.cctor_1(ret, new global::System.IntPtr(&native)); return ret.ToPointer(); } @@ -2031,7 +2027,7 @@ namespace CppSharp public DependentTemplateSpecializationType() : this((void*) null) { - __Instance = Marshal.AllocHGlobal(40); + __Instance = Marshal.AllocHGlobal(48); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; Internal.ctor_0((__Instance + __PointerAdjustment)); @@ -2040,7 +2036,7 @@ namespace CppSharp public DependentTemplateSpecializationType(global::CppSharp.Parser.AST.DependentTemplateSpecializationType _0) : this((void*) null) { - __Instance = Marshal.AllocHGlobal(40); + __Instance = Marshal.AllocHGlobal(48); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; if (ReferenceEquals(_0, null)) @@ -2087,21 +2083,16 @@ namespace CppSharp } } - public global::CppSharp.Parser.AST.Type Desugared + public global::CppSharp.Parser.AST.QualifiedType Desugared { get { - global::CppSharp.Parser.AST.Type __result0; - if (((Internal*) __Instance)->Desugared == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.AST.Type.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Desugared)) - __result0 = (global::CppSharp.Parser.AST.Type) global::CppSharp.Parser.AST.Type.NativeToManagedMap[((Internal*) __Instance)->Desugared]; - else __result0 = global::CppSharp.Parser.AST.Type.__CreateInstance(((Internal*) __Instance)->Desugared); - return __result0; + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->Desugared); } set { - ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); } } } @@ -2475,7 +2466,7 @@ namespace CppSharp public unsafe partial class DependentNameType : global::CppSharp.Parser.AST.Type, IDisposable { - [StructLayout(LayoutKind.Explicit, Size = 16)] + [StructLayout(LayoutKind.Explicit, Size = 24)] public new partial struct Internal { [FieldOffset(0)] @@ -2485,7 +2476,7 @@ namespace CppSharp public byte IsDependent; [FieldOffset(8)] - public global::System.IntPtr Desugared; + public global::CppSharp.Parser.AST.QualifiedType.Internal Desugared; [SuppressUnmanagedCodeSecurity] [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, @@ -2510,7 +2501,7 @@ namespace CppSharp private static void* __CopyValue(DependentNameType.Internal native) { - var ret = Marshal.AllocHGlobal(16); + var ret = Marshal.AllocHGlobal(24); global::CppSharp.Parser.AST.DependentNameType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); return ret.ToPointer(); } @@ -2534,7 +2525,7 @@ namespace CppSharp public DependentNameType() : this((void*) null) { - __Instance = Marshal.AllocHGlobal(16); + __Instance = Marshal.AllocHGlobal(24); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; Internal.ctor_0((__Instance + __PointerAdjustment)); @@ -2543,7 +2534,7 @@ namespace CppSharp public DependentNameType(global::CppSharp.Parser.AST.DependentNameType _0) : this((void*) null) { - __Instance = Marshal.AllocHGlobal(16); + __Instance = Marshal.AllocHGlobal(24); __ownsNativeInstance = true; NativeToManagedMap[__Instance] = this; if (ReferenceEquals(_0, null)) @@ -2552,21 +2543,16 @@ namespace CppSharp Internal.cctor_2((__Instance + __PointerAdjustment), __arg0); } - public global::CppSharp.Parser.AST.Type Desugared + public global::CppSharp.Parser.AST.QualifiedType Desugared { get { - global::CppSharp.Parser.AST.Type __result0; - if (((Internal*) __Instance)->Desugared == IntPtr.Zero) __result0 = null; - else if (global::CppSharp.Parser.AST.Type.NativeToManagedMap.ContainsKey(((Internal*) __Instance)->Desugared)) - __result0 = (global::CppSharp.Parser.AST.Type) global::CppSharp.Parser.AST.Type.NativeToManagedMap[((Internal*) __Instance)->Desugared]; - else __result0 = global::CppSharp.Parser.AST.Type.__CreateInstance(((Internal*) __Instance)->Desugared); - return __result0; + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->Desugared); } set { - ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? global::System.IntPtr.Zero : value.__Instance; + ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); } } } @@ -2648,6 +2634,115 @@ namespace CppSharp } } + public unsafe partial class UnaryTransformType : global::CppSharp.Parser.AST.Type, IDisposable + { + [StructLayout(LayoutKind.Explicit, Size = 40)] + public new partial struct Internal + { + [FieldOffset(0)] + public global::CppSharp.Parser.AST.TypeKind Kind; + + [FieldOffset(4)] + public byte IsDependent; + + [FieldOffset(8)] + public global::CppSharp.Parser.AST.QualifiedType.Internal Desugared; + + [FieldOffset(24)] + public global::CppSharp.Parser.AST.QualifiedType.Internal BaseType; + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="??0UnaryTransformType@AST@CppParser@CppSharp@@QEAA@XZ")] + internal static extern global::System.IntPtr ctor_0(global::System.IntPtr instance); + + [SuppressUnmanagedCodeSecurity] + [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, + EntryPoint="??0UnaryTransformType@AST@CppParser@CppSharp@@QEAA@AEBV0123@@Z")] + internal static extern global::System.IntPtr cctor_2(global::System.IntPtr instance, global::System.IntPtr _0); + } + + public static new UnaryTransformType __CreateInstance(global::System.IntPtr native, bool skipVTables = false) + { + return new UnaryTransformType(native.ToPointer(), skipVTables); + } + + public static UnaryTransformType __CreateInstance(UnaryTransformType.Internal native, bool skipVTables = false) + { + return new UnaryTransformType(native, skipVTables); + } + + private static void* __CopyValue(UnaryTransformType.Internal native) + { + var ret = Marshal.AllocHGlobal(40); + global::CppSharp.Parser.AST.UnaryTransformType.Internal.cctor_2(ret, new global::System.IntPtr(&native)); + return ret.ToPointer(); + } + + private UnaryTransformType(UnaryTransformType.Internal native, bool skipVTables = false) + : this(__CopyValue(native), skipVTables) + { + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + } + + protected UnaryTransformType(void* native, bool skipVTables = false) + : base((void*) null) + { + __PointerAdjustment = 0; + if (native == null) + return; + __Instance = new global::System.IntPtr(native); + } + + public UnaryTransformType() + : this((void*) null) + { + __Instance = Marshal.AllocHGlobal(40); + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + Internal.ctor_0((__Instance + __PointerAdjustment)); + } + + public UnaryTransformType(global::CppSharp.Parser.AST.UnaryTransformType _0) + : this((void*) null) + { + __Instance = Marshal.AllocHGlobal(40); + __ownsNativeInstance = true; + NativeToManagedMap[__Instance] = this; + if (ReferenceEquals(_0, null)) + throw new global::System.ArgumentNullException("_0", "Cannot be null because it is a C++ reference (&)."); + var __arg0 = _0.__Instance; + Internal.cctor_2((__Instance + __PointerAdjustment), __arg0); + } + + public global::CppSharp.Parser.AST.QualifiedType Desugared + { + get + { + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->Desugared); + } + + set + { + ((Internal*) __Instance)->Desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); + } + } + + public global::CppSharp.Parser.AST.QualifiedType BaseType + { + get + { + return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((Internal*) __Instance)->BaseType); + } + + set + { + ((Internal*) __Instance)->BaseType = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.Internal() : *(global::CppSharp.Parser.AST.QualifiedType.Internal*) (value.__Instance); + } + } + } + public unsafe partial class BuiltinType : global::CppSharp.Parser.AST.Type, IDisposable { [StructLayout(LayoutKind.Explicit, Size = 12)] diff --git a/src/CppParser/Parser.cpp b/src/CppParser/Parser.cpp index 2c526e60..8cb45080 100644 --- a/src/CppParser/Parser.cpp +++ b/src/CppParser/Parser.cpp @@ -2364,7 +2364,7 @@ Type* Parser::WalkType(clang::QualType QualType, clang::TypeLoc* TL, TST->Template = static_cast(WalkDeclaration( Name.getAsTemplateDecl(), 0)); if (TS->isSugared()) - TST->Desugared = WalkType(TS->desugar(), TL); + TST->Desugared = GetQualifiedType(TS->desugar(), TL); TypeLoc UTL, ETL, ITL; @@ -2407,7 +2407,7 @@ Type* Parser::WalkType(clang::QualType QualType, clang::TypeLoc* TL, auto TST = new DependentTemplateSpecializationType(); if (TS->isSugared()) - TST->Desugared = WalkType(TS->desugar(), TL); + TST->Desugared = GetQualifiedType(TS->desugar(), TL); TypeLoc UTL, ETL, ITL; @@ -2519,7 +2519,7 @@ Type* Parser::WalkType(clang::QualType QualType, clang::TypeLoc* TL, auto DN = Type->getAs(); auto DNT = new DependentNameType(); if (DN->isSugared()) - DNT->Desugared = WalkType(DN->desugar(), TL); + DNT->Desugared = GetQualifiedType(DN->desugar(), TL); Ty = DNT; break; @@ -2556,6 +2556,26 @@ Type* Parser::WalkType(clang::QualType QualType, clang::TypeLoc* TL, Ty = P; break; } + case clang::Type::UnaryTransform: + { + auto UT = Type->getAs(); + + auto UTT = new UnaryTransformType(); + auto Loc = TL->getAs().getUnderlyingTInfo()->getTypeLoc(); + if (UT->isSugared()) + { + UTT->Desugared = GetQualifiedType(UT->desugar(), &Loc); + UTT->BaseType = GetQualifiedType(UT->getBaseType(), &Loc); + } + else + { + UTT->Desugared = GetQualifiedType(UT->getBaseType(), &Loc); + UTT->BaseType = GetQualifiedType(UT->getBaseType(), &Loc); + } + + Ty = UTT; + break; + } case clang::Type::Vector: { // GCC-specific / __attribute__((vector_size(n)) @@ -2742,7 +2762,23 @@ void Parser::WalkFunction(const clang::FunctionDecl* FD, Function* F, TypeLoc RTL; if (auto TSI = FD->getTypeSourceInfo()) { - FunctionTypeLoc FTL = TSI->getTypeLoc().getAs(); + auto Loc = TSI->getTypeLoc(); + switch (Loc.getTypeLocClass()) + { + case TypeLoc::TypeLocClass::Attributed: + { + auto ATL = Loc.getAs(); + Loc = ATL.getModifiedLoc(); + break; + } + case TypeLoc::TypeLocClass::Paren: + { + auto PTL = Loc.getAs(); + Loc = PTL.getInnerLoc(); + break; + } + } + auto FTL = Loc.getAs(); if (FTL) { RTL = FTL.getReturnLoc(); diff --git a/src/Generator/Generator.cs b/src/Generator/Generator.cs index 84b1bab9..830ec517 100644 --- a/src/Generator/Generator.cs +++ b/src/Generator/Generator.cs @@ -75,11 +75,11 @@ namespace CppSharp.Generators if (Driver.Options.IsCSharpGenerator) GenerateSingleTemplate(outputs); else - GenerateTemplates(outputs, units); + GenerateTemplates(outputs, units.Where(u => !u.IsSystemHeader)); return outputs; } - private void GenerateTemplates(List outputs, List units) + private void GenerateTemplates(List outputs, IEnumerable units) { foreach (var unit in units) { diff --git a/src/Generator/Generators/CLI/CLIMarshal.cs b/src/Generator/Generators/CLI/CLIMarshal.cs index b3ce39ac..8e95a8fa 100644 --- a/src/Generator/Generators/CLI/CLIMarshal.cs +++ b/src/Generator/Generators/CLI/CLIMarshal.cs @@ -211,6 +211,7 @@ namespace CppSharp.Generators.CLI return true; case PrimitiveType.Bool: case PrimitiveType.Char: + case PrimitiveType.WideChar: case PrimitiveType.UChar: case PrimitiveType.Short: case PrimitiveType.UShort: diff --git a/src/Generator/Generators/CLI/CLITypePrinter.cs b/src/Generator/Generators/CLI/CLITypePrinter.cs index f08e0aee..34eb01c3 100644 --- a/src/Generator/Generators/CLI/CLITypePrinter.cs +++ b/src/Generator/Generators/CLI/CLITypePrinter.cs @@ -265,6 +265,8 @@ namespace CppSharp.Generators.CLI TypeQualifiers quals) { var decl = template.Template.TemplatedDecl; + if (decl == null) + return string.Empty; TypeMap typeMap = null; if (TypeMapDatabase.FindTypeMap(template, out typeMap)) @@ -281,7 +283,7 @@ namespace CppSharp.Generators.CLI public string VisitDependentTemplateSpecializationType( DependentTemplateSpecializationType template, TypeQualifiers quals) { - if (template.Desugared != null) + if (template.Desugared.Type != null) return template.Desugared.Visit(this); return string.Empty; } @@ -305,7 +307,7 @@ namespace CppSharp.Generators.CLI public string VisitDependentNameType(DependentNameType dependent, TypeQualifiers quals) { - return dependent.Desugared != null ? dependent.Desugared.Visit(this) : string.Empty; + return dependent.Desugared.Type != null ? dependent.Desugared.Visit(this) : string.Empty; } public string VisitPackExpansionType(PackExpansionType packExpansionType, TypeQualifiers quals) @@ -313,6 +315,13 @@ namespace CppSharp.Generators.CLI return string.Empty; } + public string VisitUnaryTransformType(UnaryTransformType unaryTransformType, TypeQualifiers quals) + { + if (unaryTransformType.Desugared.Type != null) + return unaryTransformType.Desugared.Visit(this); + return unaryTransformType.BaseType.Visit(this); + } + public string VisitCILType(CILType type, TypeQualifiers quals) { var result = type.Type.FullName.Replace(".", "::"); diff --git a/src/Generator/Generators/CSharp/CSharpTypePrinter.cs b/src/Generator/Generators/CSharp/CSharpTypePrinter.cs index 50c03371..84efe48d 100644 --- a/src/Generator/Generators/CSharp/CSharpTypePrinter.cs +++ b/src/Generator/Generators/CSharp/CSharpTypePrinter.cs @@ -427,7 +427,7 @@ namespace CppSharp.Generators.CSharp public CSharpTypePrinterResult VisitDependentTemplateSpecializationType( DependentTemplateSpecializationType template, TypeQualifiers quals) { - if (template.Desugared != null) + if (template.Desugared.Type != null) return template.Desugared.Visit(this); return string.Empty; } @@ -461,7 +461,7 @@ namespace CppSharp.Generators.CSharp public CSharpTypePrinterResult VisitDependentNameType(DependentNameType dependent, TypeQualifiers quals) { - return dependent.Desugared != null ? dependent.Desugared.Visit(this) : string.Empty; + return dependent.Desugared.Type != null ? dependent.Desugared.Visit(this) : string.Empty; } public CSharpTypePrinterResult VisitPackExpansionType(PackExpansionType type, @@ -792,6 +792,13 @@ namespace CppSharp.Generators.CSharp throw new NotImplementedException(); } + public CSharpTypePrinterResult VisitUnaryTransformType(UnaryTransformType unaryTransformType, TypeQualifiers quals) + { + if (unaryTransformType.Desugared.Type != null) + return unaryTransformType.Desugared.Visit(this); + return unaryTransformType.BaseType.Visit(this); + } + public CSharpTypePrinterResult VisitFunctionTemplateSpecializationDecl(FunctionTemplateSpecialization specialization) { throw new NotImplementedException(); diff --git a/src/Generator/Passes/CheckIgnoredDecls.cs b/src/Generator/Passes/CheckIgnoredDecls.cs index 94cfd0fb..9b39177a 100644 --- a/src/Generator/Passes/CheckIgnoredDecls.cs +++ b/src/Generator/Passes/CheckIgnoredDecls.cs @@ -375,14 +375,18 @@ namespace CppSharp.Passes return false; } - private static bool IsTypeComplete(Type type) + private bool IsTypeComplete(Type type) { + TypeMap typeMap; + if (Driver.TypeDatabase.FindTypeMap(type, out typeMap) && !typeMap.IsIgnored) + return true; + var desugared = type.Desugar(); var finalType = (desugared.GetFinalPointee() ?? desugared).Desugar(); var templateSpecializationType = finalType as TemplateSpecializationType; if (templateSpecializationType != null) - finalType = templateSpecializationType.Desugared; + finalType = templateSpecializationType.Desugared.Type; Declaration decl; if (!finalType.TryGetDeclaration(out decl)) return true; diff --git a/src/Generator/Passes/CheckVirtualOverrideReturnCovariance.cs b/src/Generator/Passes/CheckVirtualOverrideReturnCovariance.cs index fbf3cd7c..d3bc958e 100644 --- a/src/Generator/Passes/CheckVirtualOverrideReturnCovariance.cs +++ b/src/Generator/Passes/CheckVirtualOverrideReturnCovariance.cs @@ -168,6 +168,11 @@ namespace CppSharp.Passes return true; } + public bool VisitUnaryTransformType(UnaryTransformType unaryTransformType, TypeQualifiers quals) + { + return false; + } + public bool VisitCILType(CILType type, TypeQualifiers quals) { return false; diff --git a/src/Generator/Passes/IgnoreSystemDeclarationsPass.cs b/src/Generator/Passes/IgnoreSystemDeclarationsPass.cs index d88918b4..d445a749 100644 --- a/src/Generator/Passes/IgnoreSystemDeclarationsPass.cs +++ b/src/Generator/Passes/IgnoreSystemDeclarationsPass.cs @@ -27,7 +27,7 @@ namespace CppSharp.Passes if (!unit.IsValid) return false; - if (unit.IsSystemHeader) + if (!Driver.Options.IsCLIGenerator && unit.IsSystemHeader) unit.ExplicitlyIgnore(); if (ClearVisitedDeclarations) @@ -40,7 +40,8 @@ namespace CppSharp.Passes public override bool VisitDeclaration(Declaration decl) { - if (decl.Namespace != null && decl.TranslationUnit.IsSystemHeader) + if (!Driver.Options.IsCLIGenerator && + decl.Namespace != null && decl.TranslationUnit.IsSystemHeader) decl.ExplicitlyIgnore(); return base.VisitDeclaration(decl); } diff --git a/src/Generator/Types/Std/Stdlib.cs b/src/Generator/Types/Std/Stdlib.cs index 9a36601f..776055c0 100644 --- a/src/Generator/Types/Std/Stdlib.cs +++ b/src/Generator/Types/Std/Stdlib.cs @@ -406,7 +406,7 @@ namespace CppSharp.Types.Std } } - [TypeMap("FILE")] + [TypeMap("FILE", GeneratorKind = GeneratorKind.CSharp)] public class FILE : TypeMap { public override string CSharpSignature(CSharpTypePrinterContext ctx) diff --git a/src/Generator/Types/TypeMap.cs b/src/Generator/Types/TypeMap.cs index 496f0e35..8012aa56 100644 --- a/src/Generator/Types/TypeMap.cs +++ b/src/Generator/Types/TypeMap.cs @@ -196,15 +196,12 @@ namespace CppSharp.Types } var typedef = decl as TypedefDecl; - if (typedef != null) - return FindTypeMap(typedef.Type, out typeMap); - - return false; + return typedef != null && FindTypeMap(typedef.Type, out typeMap); } public bool FindTypeMap(Type type, out TypeMap typeMap) { - var typePrinter = new CppTypePrinter { PrintLogicalNames = true }; + var typePrinter = new CppTypePrinter(false, false) { PrintLogicalNames = true }; var template = type as TemplateSpecializationType; if (template != null) @@ -223,6 +220,12 @@ namespace CppSharp.Types return true; } + if (FindTypeMap(type.Visit(typePrinter), out typeMap)) + { + typeMap.Type = type; + return true; + } + typePrinter.PrintScopeKind = CppTypePrintScopeKind.Qualified; if (FindTypeMap(type.Visit(typePrinter), out typeMap)) { @@ -230,7 +233,8 @@ namespace CppSharp.Types return true; } - return false; + var typedef = type as TypedefType; + return typedef != null && FindTypeMap(typedef.Declaration, type, out typeMap); } public bool FindTypeMap(Declaration decl, out TypeMap typeMap)