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 @@ -197,7 +197,7 @@ namespace CppSharp.AST
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 param.Parameter.Name;
@ -216,7 +216,7 @@ namespace CppSharp.AST @@ -216,7 +216,7 @@ namespace CppSharp.AST
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)

2
src/AST/Type.cs

@ -941,7 +941,7 @@ namespace CppSharp.AST @@ -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,
TypeQualifiers quals = new TypeQualifiers())

2
src/CppParser/AST.h

@ -258,7 +258,7 @@ class CS_API DependentNameType : public Type @@ -258,7 +258,7 @@ class CS_API DependentNameType : public Type
{
public:
DECLARE_TYPE_KIND(DependentName)
QualifiedType desugared;
QualifiedType qualifier;
};
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 @@ -1108,14 +1108,14 @@ CppSharp::Parser::AST::DependentNameType::DependentNameType(CppSharp::Parser::AS
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)

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

@ -978,7 +978,7 @@ namespace CppSharp @@ -978,7 +978,7 @@ namespace CppSharp
~DependentNameType();
property CppSharp::Parser::AST::QualifiedType^ Desugared
property CppSharp::Parser::AST::QualifiedType^ Qualifier
{
CppSharp::Parser::AST::QualifiedType^ get();
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 @@ -2562,7 +2562,7 @@ namespace CppSharp
public byte isDependent;
[FieldOffset(8)]
public global::CppSharp.Parser.AST.QualifiedType.__Internal desugared;
public global::CppSharp.Parser.AST.QualifiedType.__Internal qualifier;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
@ -2629,16 +2629,16 @@ namespace CppSharp @@ -2629,16 +2629,16 @@ namespace CppSharp
__Internal.cctor_2((__Instance + __PointerAdjustment), __arg0);
}
public global::CppSharp.Parser.AST.QualifiedType Desugared
public global::CppSharp.Parser.AST.QualifiedType Qualifier
{
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
{
((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 @@ -2562,7 +2562,7 @@ namespace CppSharp
public byte isDependent;
[FieldOffset(8)]
public global::CppSharp.Parser.AST.QualifiedType.__Internal desugared;
public global::CppSharp.Parser.AST.QualifiedType.__Internal qualifier;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.ThisCall,
@ -2629,16 +2629,16 @@ namespace CppSharp @@ -2629,16 +2629,16 @@ namespace CppSharp
__Internal.cctor_1((__Instance + __PointerAdjustment), __arg0);
}
public global::CppSharp.Parser.AST.QualifiedType Desugared
public global::CppSharp.Parser.AST.QualifiedType Qualifier
{
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
{
((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 @@ -2562,7 +2562,7 @@ namespace CppSharp
public byte isDependent;
[FieldOffset(8)]
public global::CppSharp.Parser.AST.QualifiedType.__Internal desugared;
public global::CppSharp.Parser.AST.QualifiedType.__Internal qualifier;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
@ -2629,16 +2629,16 @@ namespace CppSharp @@ -2629,16 +2629,16 @@ namespace CppSharp
__Internal.cctor_2((__Instance + __PointerAdjustment), __arg0);
}
public global::CppSharp.Parser.AST.QualifiedType Desugared
public global::CppSharp.Parser.AST.QualifiedType Qualifier
{
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
{
((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 @@ -2562,7 +2562,7 @@ namespace CppSharp
public byte isDependent;
[FieldOffset(8)]
public global::CppSharp.Parser.AST.QualifiedType.__Internal desugared;
public global::CppSharp.Parser.AST.QualifiedType.__Internal qualifier;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
@ -2629,16 +2629,16 @@ namespace CppSharp @@ -2629,16 +2629,16 @@ namespace CppSharp
__Internal.cctor_2((__Instance + __PointerAdjustment), __arg0);
}
public global::CppSharp.Parser.AST.QualifiedType Desugared
public global::CppSharp.Parser.AST.QualifiedType Qualifier
{
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
{
((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 @@ -2562,7 +2562,7 @@ namespace CppSharp
public byte isDependent;
[FieldOffset(8)]
public global::CppSharp.Parser.AST.QualifiedType.__Internal desugared;
public global::CppSharp.Parser.AST.QualifiedType.__Internal qualifier;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
@ -2629,16 +2629,16 @@ namespace CppSharp @@ -2629,16 +2629,16 @@ namespace CppSharp
__Internal.cctor_2((__Instance + __PointerAdjustment), __arg0);
}
public global::CppSharp.Parser.AST.QualifiedType Desugared
public global::CppSharp.Parser.AST.QualifiedType Qualifier
{
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
{
((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 @@ -2562,7 +2562,7 @@ namespace CppSharp
public byte isDependent;
[FieldOffset(8)]
public global::CppSharp.Parser.AST.QualifiedType.__Internal desugared;
public global::CppSharp.Parser.AST.QualifiedType.__Internal qualifier;
[SuppressUnmanagedCodeSecurity]
[DllImport("CppSharp.CppParser.dll", CallingConvention = global::System.Runtime.InteropServices.CallingConvention.Cdecl,
@ -2629,16 +2629,16 @@ namespace CppSharp @@ -2629,16 +2629,16 @@ namespace CppSharp
__Internal.cctor_1((__Instance + __PointerAdjustment), __arg0);
}
public global::CppSharp.Parser.AST.QualifiedType Desugared
public global::CppSharp.Parser.AST.QualifiedType Qualifier
{
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
{
((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, @@ -2543,6 +2543,8 @@ Type* Parser::WalkType(clang::QualType QualType, clang::TypeLoc* TL,
TPT->parameter = WalkTypeTemplateParameter(TTTL.getDecl());
}
else if (TP->getDecl())
TPT->parameter = WalkTypeTemplateParameter(TP->getDecl());
TPT->depth = TP->getDepth();
TPT->index = TP->getIndex();
TPT->isParameterPack = TP->isParameterPack();
@ -2584,8 +2586,13 @@ Type* Parser::WalkType(clang::QualType QualType, clang::TypeLoc* TL, @@ -2584,8 +2586,13 @@ Type* Parser::WalkType(clang::QualType QualType, clang::TypeLoc* TL,
{
auto DN = Type->getAs<clang::DependentNameType>();
auto DNT = new DependentNameType();
if (DN->isSugared())
DNT->desugared = GetQualifiedType(DN->desugar(), TL);
switch (DN->getQualifier()->getKind())
{
case clang::NestedNameSpecifier::SpecifierKind::TypeSpec:
case clang::NestedNameSpecifier::SpecifierKind::TypeSpecWithTemplate:
DNT->qualifier = GetQualifiedType(clang::QualType(DN->getQualifier()->getAsType(), 0));
break;
}
Ty = DNT;
break;

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

@ -321,8 +321,8 @@ namespace CppSharp.Generators.CLI @@ -321,8 +321,8 @@ namespace CppSharp.Generators.CLI
public override TypePrinterResult 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 override TypePrinterResult VisitPackExpansionType(

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

@ -442,7 +442,7 @@ namespace CppSharp.Generators.CSharp @@ -442,7 +442,7 @@ namespace CppSharp.Generators.CSharp
public override TypePrinterResult 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 override TypePrinterResult VisitPackExpansionType(PackExpansionType type,

2
src/Parser/ASTConverter.cs

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

Loading…
Cancel
Save