Browse Source

Added unary transformations and other fixes to restore the full build with all tests.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/685/head
Dimitar Dobrev 10 years ago
parent
commit
7d67f4b023
  1. 7
      src/AST/ASTVisitor.cs
  2. 27
      src/AST/CppTypePrinter.cs
  3. 38
      src/AST/Type.cs
  4. 4
      src/AST/TypeExtensions.cs
  5. 25
      src/Core/Parser/ASTConverter.cs
  6. 8
      src/CppParser/AST.cpp
  7. 17
      src/CppParser/AST.h
  8. 75
      src/CppParser/Bindings/CLI/AST.cpp
  9. 47
      src/CppParser/Bindings/CLI/AST.h
  10. 175
      src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs
  11. 175
      src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs
  12. 175
      src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs
  13. 175
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs
  14. 175
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs
  15. 175
      src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs
  16. 44
      src/CppParser/Parser.cpp
  17. 4
      src/Generator/Generator.cs
  18. 1
      src/Generator/Generators/CLI/CLIMarshal.cs
  19. 13
      src/Generator/Generators/CLI/CLITypePrinter.cs
  20. 11
      src/Generator/Generators/CSharp/CSharpTypePrinter.cs
  21. 8
      src/Generator/Passes/CheckIgnoredDecls.cs
  22. 5
      src/Generator/Passes/CheckVirtualOverrideReturnCovariance.cs
  23. 5
      src/Generator/Passes/IgnoreSystemDeclarationsPass.cs
  24. 2
      src/Generator/Types/Std/Stdlib.cs
  25. 16
      src/Generator/Types/TypeMap.cs

7
src/AST/ASTVisitor.cs

@ -212,7 +212,7 @@ namespace CppSharp.AST @@ -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 @@ -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;

27
src/AST/CppTypePrinter.cs

@ -18,10 +18,13 @@ namespace CppSharp.AST @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -409,7 +416,7 @@ namespace CppSharp.AST
public string VisitVarTemplateDecl(VarTemplate template)
{
throw new NotImplementedException();
return VisitDeclaration(template);
}
public string VisitVarTemplateSpecializationDecl(VarTemplateSpecialization template)

38
src/AST/Type.cs

@ -646,14 +646,14 @@ namespace CppSharp.AST @@ -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<TemplateArgument> Arguments;
public Template Template;
public Type Desugared;
public QualifiedType Desugared;
public ClassTemplateSpecialization GetClassTemplateSpecialization()
{
@ -662,7 +662,7 @@ namespace CppSharp.AST @@ -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 @@ -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<TemplateArgument> Arguments;
public Type Desugared;
public QualifiedType Desugared;
public override T Visit<T>(ITypeVisitor<T> visitor,
TypeQualifiers quals = new TypeQualifiers())
@ -919,7 +919,7 @@ namespace CppSharp.AST @@ -919,7 +919,7 @@ namespace CppSharp.AST
{
}
public Type Desugared { get; set; }
public QualifiedType Desugared { get; set; }
public override T Visit<T>(ITypeVisitor<T> visitor,
TypeQualifiers quals = new TypeQualifiers())
@ -1002,6 +1002,31 @@ namespace CppSharp.AST @@ -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<T>(ITypeVisitor<T> visitor, TypeQualifiers quals = new TypeQualifiers())
{
return visitor.VisitUnaryTransformType(this, quals);
}
public override object Clone()
{
return new UnaryTransformType(this);
}
}
#region Primitives
/// <summary>
@ -1130,6 +1155,7 @@ namespace CppSharp.AST @@ -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);
}
}

4
src/AST/TypeExtensions.cs

@ -129,7 +129,7 @@ @@ -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 @@ @@ -148,7 +148,7 @@
if (templateTemplateParameter != null)
return (decl = templateTemplateParameter.TemplatedDecl as T) != null;
}
tagType = (TagType) type.Desugared;
tagType = (TagType) type.Desugared.Type;
}
else
{

25
src/Core/Parser/ASTConverter.cs

@ -27,6 +27,7 @@ namespace CppSharp @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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;
}
}

8
src/CppParser/AST.cpp

@ -144,7 +144,7 @@ NonTypeTemplateParameter::~NonTypeTemplateParameter() {} @@ -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() {} @@ -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() @@ -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) {}

17
src/CppParser/AST.h

@ -32,7 +32,8 @@ enum class TypeKind @@ -32,7 +32,8 @@ enum class TypeKind
InjectedClassName,
DependentName,
PackExpansion,
Builtin
Builtin,
UnaryTransform
};
#define DECLARE_TYPE_KIND(kind) \
@ -193,7 +194,7 @@ public: @@ -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: @@ -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 @@ -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: @@ -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,

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

@ -791,14 +791,14 @@ void CppSharp::Parser::AST::TemplateSpecializationType::Template::set(CppSharp:: @@ -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 @@ -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 @@ -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 @@ -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)
{

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

@ -99,6 +99,7 @@ namespace CppSharp @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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:

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

@ -31,7 +31,8 @@ namespace CppSharp @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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)]

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

@ -31,7 +31,8 @@ namespace CppSharp @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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)]

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

@ -31,7 +31,8 @@ namespace CppSharp @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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)]

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

@ -31,7 +31,8 @@ namespace CppSharp @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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)]

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

@ -31,7 +31,8 @@ namespace CppSharp @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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)]

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

@ -31,7 +31,8 @@ namespace CppSharp @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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)]

44
src/CppParser/Parser.cpp

@ -2364,7 +2364,7 @@ Type* Parser::WalkType(clang::QualType QualType, clang::TypeLoc* TL, @@ -2364,7 +2364,7 @@ Type* Parser::WalkType(clang::QualType QualType, clang::TypeLoc* TL,
TST->Template = static_cast<Template*>(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, @@ -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, @@ -2519,7 +2519,7 @@ Type* Parser::WalkType(clang::QualType QualType, clang::TypeLoc* TL,
auto DN = Type->getAs<clang::DependentNameType>();
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, @@ -2556,6 +2556,26 @@ Type* Parser::WalkType(clang::QualType QualType, clang::TypeLoc* TL,
Ty = P;
break;
}
case clang::Type::UnaryTransform:
{
auto UT = Type->getAs<clang::UnaryTransformType>();
auto UTT = new UnaryTransformType();
auto Loc = TL->getAs<UnaryTransformTypeLoc>().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, @@ -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<FunctionTypeLoc>();
auto Loc = TSI->getTypeLoc();
switch (Loc.getTypeLocClass())
{
case TypeLoc::TypeLocClass::Attributed:
{
auto ATL = Loc.getAs<AttributedTypeLoc>();
Loc = ATL.getModifiedLoc();
break;
}
case TypeLoc::TypeLocClass::Paren:
{
auto PTL = Loc.getAs<ParenTypeLoc>();
Loc = PTL.getInnerLoc();
break;
}
}
auto FTL = Loc.getAs<FunctionTypeLoc>();
if (FTL)
{
RTL = FTL.getReturnLoc();

4
src/Generator/Generator.cs

@ -75,11 +75,11 @@ namespace CppSharp.Generators @@ -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<GeneratorOutput> outputs, List<TranslationUnit> units)
private void GenerateTemplates(List<GeneratorOutput> outputs, IEnumerable<TranslationUnit> units)
{
foreach (var unit in units)
{

1
src/Generator/Generators/CLI/CLIMarshal.cs

@ -211,6 +211,7 @@ namespace CppSharp.Generators.CLI @@ -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:

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

@ -265,6 +265,8 @@ namespace CppSharp.Generators.CLI @@ -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 @@ -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 @@ -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 @@ -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(".", "::");

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

@ -427,7 +427,7 @@ namespace CppSharp.Generators.CSharp @@ -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 @@ -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 @@ -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();

8
src/Generator/Passes/CheckIgnoredDecls.cs

@ -375,14 +375,18 @@ namespace CppSharp.Passes @@ -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;

5
src/Generator/Passes/CheckVirtualOverrideReturnCovariance.cs

@ -168,6 +168,11 @@ namespace CppSharp.Passes @@ -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;

5
src/Generator/Passes/IgnoreSystemDeclarationsPass.cs

@ -27,7 +27,7 @@ namespace CppSharp.Passes @@ -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 @@ -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);
}

2
src/Generator/Types/Std/Stdlib.cs

@ -406,7 +406,7 @@ namespace CppSharp.Types.Std @@ -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)

16
src/Generator/Types/TypeMap.cs

@ -196,15 +196,12 @@ namespace CppSharp.Types @@ -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 @@ -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 @@ -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)

Loading…
Cancel
Save