clang 22.0.0git
clang::TypeName Namespace Reference

Functions

std::string getFullyQualifiedName (QualType QT, const ASTContext &Ctx, const PrintingPolicy &Policy, bool WithGlobalNsPrefix=false)
 Get the fully qualified name for a type.
QualType getFullyQualifiedType (QualType QT, const ASTContext &Ctx, bool WithGlobalNsPrefix=false)
 Generates a QualType that can be used to name the same type if used at the end of the current translation unit.
NestedNameSpecifier getFullyQualifiedDeclaredContext (const ASTContext &Ctx, const Decl *Decl, bool WithGlobalNsPrefix=false)
 Get the fully qualified name for the declared context of a declaration.
static NestedNameSpecifier createNestedNameSpecifier (const ASTContext &Ctx, const NamespaceDecl *Namesp, bool WithGlobalNsPrefix)
 Create a NestedNameSpecifier for Namesp and its enclosing scopes.
static NestedNameSpecifier createNestedNameSpecifier (const ASTContext &Ctx, const TypeDecl *TD, bool FullyQualify, bool WithGlobalNsPrefix)
 Create a NestedNameSpecifier for TagDecl and its enclosing scopes.
static NestedNameSpecifier createNestedNameSpecifierForScopeOf (const ASTContext &Ctx, const Decl *Decl, bool FullyQualified, bool WithGlobalNsPrefix)
 Create a nested name specifier for the declaring context of the type.
static NestedNameSpecifier getFullyQualifiedNestedNameSpecifier (const ASTContext &Ctx, NestedNameSpecifier Scope, bool WithGlobalNsPrefix)
 Return a fully qualified version of this name specifier.
static bool getFullyQualifiedTemplateName (const ASTContext &Ctx, TemplateName &TName, bool WithGlobalNsPrefix)
static bool getFullyQualifiedTemplateArgument (const ASTContext &Ctx, TemplateArgument &Arg, bool WithGlobalNsPrefix)
static const TypegetFullyQualifiedTemplateType (const ASTContext &Ctx, const TagType *TSTRecord, ElaboratedTypeKeyword Keyword, NestedNameSpecifier Qualifier, bool WithGlobalNsPrefix)
static const TypegetFullyQualifiedTemplateType (const ASTContext &Ctx, const TemplateSpecializationType *TST, bool WithGlobalNsPrefix)
static NestedNameSpecifier createOuterNNS (const ASTContext &Ctx, const Decl *D, bool FullyQualify, bool WithGlobalNsPrefix)
static NestedNameSpecifier createNestedNameSpecifierForScopeOf (const ASTContext &Ctx, const Type *TypePtr, bool FullyQualified, bool WithGlobalNsPrefix)
 Create a nested name specifier for the declaring context of the type.

Function Documentation

◆ createNestedNameSpecifier() [1/2]

NestedNameSpecifier clang::TypeName::createNestedNameSpecifier ( const ASTContext & Ctx,
const NamespaceDecl * Namesp,
bool WithGlobalNsPrefix )
static

Create a NestedNameSpecifier for Namesp and its enclosing scopes.

Parameters
[in]Ctx- the AST Context to be used.
[in]Namesp- the NamespaceDecl for which a NestedNameSpecifier is requested.
[in]WithGlobalNsPrefix- Indicate whether the global namespace specifier "::" should be prepended or not.

Definition at line 334 of file QualTypeNames.cpp.

References createOuterNNS().

Referenced by createNestedNameSpecifierForScopeOf(), createOuterNNS(), and getFullyQualifiedNestedNameSpecifier().

◆ createNestedNameSpecifier() [2/2]

NestedNameSpecifier clang::TypeName::createNestedNameSpecifier ( const ASTContext & Ctx,
const TypeDecl * TD,
bool FullyQualify,
bool WithGlobalNsPrefix )
static

Create a NestedNameSpecifier for TagDecl and its enclosing scopes.

Parameters
[in]Ctx- the AST Context to be used.
[in]TD- the TagDecl for which a NestedNameSpecifier is requested.
[in]FullyQualify- Convert all template arguments into fully qualified names.
[in]WithGlobalNsPrefix- Indicate whether the global namespace specifier "::" should be prepended or not.

Definition at line 349 of file QualTypeNames.cpp.

References createOuterNNS(), getFullyQualifiedTemplateType(), clang::ASTContext::getTypeDeclType(), clang::QualType::getTypePtr(), and clang::None.

◆ createNestedNameSpecifierForScopeOf() [1/2]

NestedNameSpecifier clang::TypeName::createNestedNameSpecifierForScopeOf ( const ASTContext & Ctx,
const Decl * decl,
bool FullyQualified,
bool WithGlobalNsPrefix )
static

◆ createNestedNameSpecifierForScopeOf() [2/2]

NestedNameSpecifier clang::TypeName::createNestedNameSpecifierForScopeOf ( const ASTContext & Ctx,
const Type * TypePtr,
bool FullyQualified,
bool WithGlobalNsPrefix )
static

Create a nested name specifier for the declaring context of the type.

Definition at line 308 of file QualTypeNames.cpp.

References createNestedNameSpecifierForScopeOf(), and clang::Type::getAsCXXRecordDecl().

◆ createOuterNNS()

NestedNameSpecifier clang::TypeName::createOuterNNS ( const ASTContext & Ctx,
const Decl * D,
bool FullyQualify,
bool WithGlobalNsPrefix )
static

◆ getFullyQualifiedDeclaredContext()

NestedNameSpecifier clang::TypeName::getFullyQualifiedDeclaredContext ( const ASTContext & Ctx,
const Decl * Decl,
bool WithGlobalNsPrefix = false )

Get the fully qualified name for the declared context of a declaration.

Parameters
[in]Ctx- the ASTContext to be used.
[in]Decl- the declaration for which to get the fully qualified name.
[in]WithGlobalNsPrefix- If true, then the global namespace specifier "::" will be prepended to the fully qualified name.

Definition at line 497 of file QualTypeNames.cpp.

References createNestedNameSpecifierForScopeOf().

◆ getFullyQualifiedName()

std::string clang::TypeName::getFullyQualifiedName ( QualType QT,
const ASTContext & Ctx,
const PrintingPolicy & Policy,
bool WithGlobalNsPrefix = false )

Get the fully qualified name for a type.

This includes full qualification of all template parameters etc.

Parameters
[in]QT- the type for which the fully qualified name will be returned.
[in]Ctx- the ASTContext to be used.
[in]WithGlobalNsPrefix- If true, then the global namespace specifier "::" will be prepended to the fully qualified name.

Definition at line 489 of file QualTypeNames.cpp.

References clang::QualType::getAsString(), and getFullyQualifiedType().

◆ getFullyQualifiedNestedNameSpecifier()

NestedNameSpecifier clang::TypeName::getFullyQualifiedNestedNameSpecifier ( const ASTContext & Ctx,
NestedNameSpecifier NNS,
bool WithGlobalNsPrefix )
static

◆ getFullyQualifiedTemplateArgument()

◆ getFullyQualifiedTemplateName()

◆ getFullyQualifiedTemplateType() [1/2]

◆ getFullyQualifiedTemplateType() [2/2]

const Type * clang::TypeName::getFullyQualifiedTemplateType ( const ASTContext & Ctx,
const TemplateSpecializationType * TST,
bool WithGlobalNsPrefix )
static

◆ getFullyQualifiedType()

QualType clang::TypeName::getFullyQualifiedType ( QualType QT,
const ASTContext & Ctx,
bool WithGlobalNsPrefix = false )

Generates a QualType that can be used to name the same type if used at the end of the current translation unit.

Return the fully qualified type, including fully-qualified versions of any template parameters.

This ignores issues such as type shadowing.

Parameters
[in]QT- the type for which the fully qualified type will be returned.
[in]Ctx- the ASTContext to be used.
[in]WithGlobalNsPrefix- Indicate whether the global namespace specifier "::" should be prepended or not.

Definition at line 370 of file QualTypeNames.cpp.

References clang::cast(), createNestedNameSpecifierForScopeOf(), clang::Type::getAs(), clang::ASTContext::getAttributedType(), getFullyQualifiedNestedNameSpecifier(), getFullyQualifiedTemplateType(), getFullyQualifiedType(), clang::QualType::getLocalQualifiers(), clang::ASTContext::getLValueReferenceType(), clang::ASTContext::getMemberPointerType(), clang::Type::getPointeeType(), clang::ASTContext::getPointerType(), clang::ASTContext::getQualifiedType(), clang::QualType::getQualifiers(), clang::ASTContext::getRValueReferenceType(), clang::ASTContext::getTypedefType(), clang::QualType::getTypePtr(), clang::isa(), and clang::T.

Referenced by clang::GetFullTypeName(), getFullyQualifiedName(), getFullyQualifiedTemplateArgument(), and getFullyQualifiedType().