Browse Source

Replaced the useless desugared dependent name type with its qualifier.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/822/head
Dimitar Dobrev 8 years ago
parent
commit
974f8fab20
  1. 4
      src/AST/CppTypePrinter.cs
  2. 2
      src/AST/Type.cs
  3. 2
      src/CppParser/AST.h
  4. 8
      src/CppParser/Bindings/CLI/AST.cpp
  5. 2
      src/CppParser/Bindings/CLI/AST.h
  6. 8
      src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs
  7. 8
      src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs
  8. 8
      src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs
  9. 8
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs
  10. 8
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs
  11. 8
      src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs
  12. 11
      src/CppParser/Parser.cpp
  13. 4
      src/Generator/Generators/CLI/CLITypePrinter.cs
  14. 2
      src/Generator/Generators/CSharp/CSharpTypePrinter.cs
  15. 2
      src/Parser/ASTConverter.cs

4
src/AST/CppTypePrinter.cs

@ -197,7 +197,7 @@ namespace CppSharp.AST
public virtual string VisitTemplateParameterType(TemplateParameterType param, TypeQualifiers quals) public virtual string VisitTemplateParameterType(TemplateParameterType param, TypeQualifiers quals)
{ {
if (param.Parameter.Name == null) if (param.Parameter == null || param.Parameter.Name == null)
return string.Empty; return string.Empty;
return param.Parameter.Name; return param.Parameter.Name;
@ -216,7 +216,7 @@ namespace CppSharp.AST
public virtual string VisitDependentNameType(DependentNameType dependent, TypeQualifiers quals) public virtual string VisitDependentNameType(DependentNameType dependent, TypeQualifiers quals)
{ {
return dependent.Desugared.Type != null ? dependent.Desugared.Visit(this) : string.Empty; return dependent.Qualifier.Type != null ? dependent.Qualifier.Visit(this) : string.Empty;
} }
public virtual string VisitPackExpansionType(PackExpansionType packExpansionType, TypeQualifiers quals) public virtual string VisitPackExpansionType(PackExpansionType packExpansionType, TypeQualifiers quals)

2
src/AST/Type.cs

@ -941,7 +941,7 @@ namespace CppSharp.AST
{ {
} }
public QualifiedType Desugared { get; set; } public QualifiedType Qualifier { get; set; }
public override T Visit<T>(ITypeVisitor<T> visitor, public override T Visit<T>(ITypeVisitor<T> visitor,
TypeQualifiers quals = new TypeQualifiers()) TypeQualifiers quals = new TypeQualifiers())

2
src/CppParser/AST.h

@ -258,7 +258,7 @@ class CS_API DependentNameType : public Type
{ {
public: public:
DECLARE_TYPE_KIND(DependentName) DECLARE_TYPE_KIND(DependentName)
QualifiedType desugared; QualifiedType qualifier;
}; };
class CS_API PackExpansionType : public Type class CS_API PackExpansionType : public Type

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

@ -1108,14 +1108,14 @@ CppSharp::Parser::AST::DependentNameType::DependentNameType(CppSharp::Parser::AS
NativePtr = new ::CppSharp::CppParser::AST::DependentNameType(__arg0); NativePtr = new ::CppSharp::CppParser::AST::DependentNameType(__arg0);
} }
CppSharp::Parser::AST::QualifiedType^ CppSharp::Parser::AST::DependentNameType::Desugared::get() CppSharp::Parser::AST::QualifiedType^ CppSharp::Parser::AST::DependentNameType::Qualifier::get()
{ {
return (&((::CppSharp::CppParser::AST::DependentNameType*)NativePtr)->desugared == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::QualifiedType((::CppSharp::CppParser::AST::QualifiedType*)&((::CppSharp::CppParser::AST::DependentNameType*)NativePtr)->desugared); return (&((::CppSharp::CppParser::AST::DependentNameType*)NativePtr)->qualifier == nullptr) ? nullptr : gcnew CppSharp::Parser::AST::QualifiedType((::CppSharp::CppParser::AST::QualifiedType*)&((::CppSharp::CppParser::AST::DependentNameType*)NativePtr)->qualifier);
} }
void CppSharp::Parser::AST::DependentNameType::Desugared::set(CppSharp::Parser::AST::QualifiedType^ value) void CppSharp::Parser::AST::DependentNameType::Qualifier::set(CppSharp::Parser::AST::QualifiedType^ value)
{ {
((::CppSharp::CppParser::AST::DependentNameType*)NativePtr)->desugared = *(::CppSharp::CppParser::AST::QualifiedType*)value->NativePtr; ((::CppSharp::CppParser::AST::DependentNameType*)NativePtr)->qualifier = *(::CppSharp::CppParser::AST::QualifiedType*)value->NativePtr;
} }
CppSharp::Parser::AST::PackExpansionType::PackExpansionType(::CppSharp::CppParser::AST::PackExpansionType* native) CppSharp::Parser::AST::PackExpansionType::PackExpansionType(::CppSharp::CppParser::AST::PackExpansionType* native)

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

@ -978,7 +978,7 @@ namespace CppSharp
~DependentNameType(); ~DependentNameType();
property CppSharp::Parser::AST::QualifiedType^ Desugared property CppSharp::Parser::AST::QualifiedType^ Qualifier
{ {
CppSharp::Parser::AST::QualifiedType^ get(); CppSharp::Parser::AST::QualifiedType^ get();
void set(CppSharp::Parser::AST::QualifiedType^); void set(CppSharp::Parser::AST::QualifiedType^);

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

@ -2562,7 +2562,7 @@ namespace CppSharp
public byte isDependent; public byte isDependent;
[FieldOffset(8)] [FieldOffset(8)]
public global::CppSharp.Parser.AST.QualifiedType.__Internal desugared; public global::CppSharp.Parser.AST.QualifiedType.__Internal qualifier;
[SuppressUnmanagedCodeSecurity] [SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, [DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
@ -2629,16 +2629,16 @@ namespace CppSharp
__Internal.cctor_2((__Instance + __PointerAdjustment), __arg0); __Internal.cctor_2((__Instance + __PointerAdjustment), __arg0);
} }
public global::CppSharp.Parser.AST.QualifiedType Desugared public global::CppSharp.Parser.AST.QualifiedType Qualifier
{ {
get get
{ {
return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((global::CppSharp.Parser.AST.DependentNameType.__Internal*) __Instance)->desugared); return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((global::CppSharp.Parser.AST.DependentNameType.__Internal*) __Instance)->qualifier);
} }
set set
{ {
((global::CppSharp.Parser.AST.DependentNameType.__Internal*) __Instance)->desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.__Internal() : *(global::CppSharp.Parser.AST.QualifiedType.__Internal*) value.__Instance; ((global::CppSharp.Parser.AST.DependentNameType.__Internal*) __Instance)->qualifier = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.__Internal() : *(global::CppSharp.Parser.AST.QualifiedType.__Internal*) value.__Instance;
} }
} }
} }

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

@ -2562,7 +2562,7 @@ namespace CppSharp
public byte isDependent; public byte isDependent;
[FieldOffset(8)] [FieldOffset(8)]
public global::CppSharp.Parser.AST.QualifiedType.__Internal desugared; public global::CppSharp.Parser.AST.QualifiedType.__Internal qualifier;
[SuppressUnmanagedCodeSecurity] [SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall, [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
@ -2629,16 +2629,16 @@ namespace CppSharp
__Internal.cctor_1((__Instance + __PointerAdjustment), __arg0); __Internal.cctor_1((__Instance + __PointerAdjustment), __arg0);
} }
public global::CppSharp.Parser.AST.QualifiedType Desugared public global::CppSharp.Parser.AST.QualifiedType Qualifier
{ {
get get
{ {
return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((global::CppSharp.Parser.AST.DependentNameType.__Internal*) __Instance)->desugared); return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((global::CppSharp.Parser.AST.DependentNameType.__Internal*) __Instance)->qualifier);
} }
set set
{ {
((global::CppSharp.Parser.AST.DependentNameType.__Internal*) __Instance)->desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.__Internal() : *(global::CppSharp.Parser.AST.QualifiedType.__Internal*) value.__Instance; ((global::CppSharp.Parser.AST.DependentNameType.__Internal*) __Instance)->qualifier = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.__Internal() : *(global::CppSharp.Parser.AST.QualifiedType.__Internal*) value.__Instance;
} }
} }
} }

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

@ -2562,7 +2562,7 @@ namespace CppSharp
public byte isDependent; public byte isDependent;
[FieldOffset(8)] [FieldOffset(8)]
public global::CppSharp.Parser.AST.QualifiedType.__Internal desugared; public global::CppSharp.Parser.AST.QualifiedType.__Internal qualifier;
[SuppressUnmanagedCodeSecurity] [SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, [DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
@ -2629,16 +2629,16 @@ namespace CppSharp
__Internal.cctor_2((__Instance + __PointerAdjustment), __arg0); __Internal.cctor_2((__Instance + __PointerAdjustment), __arg0);
} }
public global::CppSharp.Parser.AST.QualifiedType Desugared public global::CppSharp.Parser.AST.QualifiedType Qualifier
{ {
get get
{ {
return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((global::CppSharp.Parser.AST.DependentNameType.__Internal*) __Instance)->desugared); return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((global::CppSharp.Parser.AST.DependentNameType.__Internal*) __Instance)->qualifier);
} }
set set
{ {
((global::CppSharp.Parser.AST.DependentNameType.__Internal*) __Instance)->desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.__Internal() : *(global::CppSharp.Parser.AST.QualifiedType.__Internal*) value.__Instance; ((global::CppSharp.Parser.AST.DependentNameType.__Internal*) __Instance)->qualifier = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.__Internal() : *(global::CppSharp.Parser.AST.QualifiedType.__Internal*) value.__Instance;
} }
} }
} }

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

@ -2562,7 +2562,7 @@ namespace CppSharp
public byte isDependent; public byte isDependent;
[FieldOffset(8)] [FieldOffset(8)]
public global::CppSharp.Parser.AST.QualifiedType.__Internal desugared; public global::CppSharp.Parser.AST.QualifiedType.__Internal qualifier;
[SuppressUnmanagedCodeSecurity] [SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, [DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
@ -2629,16 +2629,16 @@ namespace CppSharp
__Internal.cctor_2((__Instance + __PointerAdjustment), __arg0); __Internal.cctor_2((__Instance + __PointerAdjustment), __arg0);
} }
public global::CppSharp.Parser.AST.QualifiedType Desugared public global::CppSharp.Parser.AST.QualifiedType Qualifier
{ {
get get
{ {
return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((global::CppSharp.Parser.AST.DependentNameType.__Internal*) __Instance)->desugared); return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((global::CppSharp.Parser.AST.DependentNameType.__Internal*) __Instance)->qualifier);
} }
set set
{ {
((global::CppSharp.Parser.AST.DependentNameType.__Internal*) __Instance)->desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.__Internal() : *(global::CppSharp.Parser.AST.QualifiedType.__Internal*) value.__Instance; ((global::CppSharp.Parser.AST.DependentNameType.__Internal*) __Instance)->qualifier = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.__Internal() : *(global::CppSharp.Parser.AST.QualifiedType.__Internal*) value.__Instance;
} }
} }
} }

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

@ -2562,7 +2562,7 @@ namespace CppSharp
public byte isDependent; public byte isDependent;
[FieldOffset(8)] [FieldOffset(8)]
public global::CppSharp.Parser.AST.QualifiedType.__Internal desugared; public global::CppSharp.Parser.AST.QualifiedType.__Internal qualifier;
[SuppressUnmanagedCodeSecurity] [SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, [DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
@ -2629,16 +2629,16 @@ namespace CppSharp
__Internal.cctor_2((__Instance + __PointerAdjustment), __arg0); __Internal.cctor_2((__Instance + __PointerAdjustment), __arg0);
} }
public global::CppSharp.Parser.AST.QualifiedType Desugared public global::CppSharp.Parser.AST.QualifiedType Qualifier
{ {
get get
{ {
return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((global::CppSharp.Parser.AST.DependentNameType.__Internal*) __Instance)->desugared); return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((global::CppSharp.Parser.AST.DependentNameType.__Internal*) __Instance)->qualifier);
} }
set set
{ {
((global::CppSharp.Parser.AST.DependentNameType.__Internal*) __Instance)->desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.__Internal() : *(global::CppSharp.Parser.AST.QualifiedType.__Internal*) value.__Instance; ((global::CppSharp.Parser.AST.DependentNameType.__Internal*) __Instance)->qualifier = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.__Internal() : *(global::CppSharp.Parser.AST.QualifiedType.__Internal*) value.__Instance;
} }
} }
} }

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

@ -2562,7 +2562,7 @@ namespace CppSharp
public byte isDependent; public byte isDependent;
[FieldOffset(8)] [FieldOffset(8)]
public global::CppSharp.Parser.AST.QualifiedType.__Internal desugared; public global::CppSharp.Parser.AST.QualifiedType.__Internal qualifier;
[SuppressUnmanagedCodeSecurity] [SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl, [DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
@ -2629,16 +2629,16 @@ namespace CppSharp
__Internal.cctor_1((__Instance + __PointerAdjustment), __arg0); __Internal.cctor_1((__Instance + __PointerAdjustment), __arg0);
} }
public global::CppSharp.Parser.AST.QualifiedType Desugared public global::CppSharp.Parser.AST.QualifiedType Qualifier
{ {
get get
{ {
return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((global::CppSharp.Parser.AST.DependentNameType.__Internal*) __Instance)->desugared); return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(((global::CppSharp.Parser.AST.DependentNameType.__Internal*) __Instance)->qualifier);
} }
set set
{ {
((global::CppSharp.Parser.AST.DependentNameType.__Internal*) __Instance)->desugared = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.__Internal() : *(global::CppSharp.Parser.AST.QualifiedType.__Internal*) value.__Instance; ((global::CppSharp.Parser.AST.DependentNameType.__Internal*) __Instance)->qualifier = ReferenceEquals(value, null) ? new global::CppSharp.Parser.AST.QualifiedType.__Internal() : *(global::CppSharp.Parser.AST.QualifiedType.__Internal*) value.__Instance;
} }
} }
} }

11
src/CppParser/Parser.cpp

@ -2543,6 +2543,8 @@ Type* Parser::WalkType(clang::QualType QualType, clang::TypeLoc* TL,
TPT->parameter = WalkTypeTemplateParameter(TTTL.getDecl()); TPT->parameter = WalkTypeTemplateParameter(TTTL.getDecl());
} }
else if (TP->getDecl())
TPT->parameter = WalkTypeTemplateParameter(TP->getDecl());
TPT->depth = TP->getDepth(); TPT->depth = TP->getDepth();
TPT->index = TP->getIndex(); TPT->index = TP->getIndex();
TPT->isParameterPack = TP->isParameterPack(); TPT->isParameterPack = TP->isParameterPack();
@ -2584,8 +2586,13 @@ Type* Parser::WalkType(clang::QualType QualType, clang::TypeLoc* TL,
{ {
auto DN = Type->getAs<clang::DependentNameType>(); auto DN = Type->getAs<clang::DependentNameType>();
auto DNT = new DependentNameType(); auto DNT = new DependentNameType();
if (DN->isSugared()) switch (DN->getQualifier()->getKind())
DNT->desugared = GetQualifiedType(DN->desugar(), TL); {
case clang::NestedNameSpecifier::SpecifierKind::TypeSpec:
case clang::NestedNameSpecifier::SpecifierKind::TypeSpecWithTemplate:
DNT->qualifier = GetQualifiedType(clang::QualType(DN->getQualifier()->getAsType(), 0));
break;
}
Ty = DNT; Ty = DNT;
break; break;

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

@ -321,8 +321,8 @@ namespace CppSharp.Generators.CLI
public override TypePrinterResult VisitDependentNameType( public override TypePrinterResult VisitDependentNameType(
DependentNameType dependent, TypeQualifiers quals) DependentNameType dependent, TypeQualifiers quals)
{ {
return dependent.Desugared.Type != null return dependent.Qualifier.Type != null ?
? dependent.Desugared.Visit(this) : string.Empty; dependent.Qualifier.Visit(this) : string.Empty;
} }
public override TypePrinterResult VisitPackExpansionType( public override TypePrinterResult VisitPackExpansionType(

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

@ -442,7 +442,7 @@ namespace CppSharp.Generators.CSharp
public override TypePrinterResult VisitDependentNameType(DependentNameType dependent, public override TypePrinterResult VisitDependentNameType(DependentNameType dependent,
TypeQualifiers quals) TypeQualifiers quals)
{ {
return dependent.Desugared.Type != null ? dependent.Desugared.Visit(this) : string.Empty; return dependent.Qualifier.Type != null ? dependent.Qualifier.Visit(this) : string.Empty;
} }
public override TypePrinterResult VisitPackExpansionType(PackExpansionType type, public override TypePrinterResult VisitPackExpansionType(PackExpansionType type,

2
src/Parser/ASTConverter.cs

@ -702,7 +702,7 @@ namespace CppSharp
{ {
var _type = new AST.DependentNameType(); var _type = new AST.DependentNameType();
VisitType(type, _type); VisitType(type, _type);
_type.Desugared = VisitQualified(type.Desugared); _type.Qualifier = VisitQualified(type.Qualifier);
return _type; return _type;
} }

Loading…
Cancel
Save