clang 20.0.0git
Public Member Functions | List of all members
clang::NestedNameSpecifierLocBuilder Class Reference

Class that aids in the construction of nested-name-specifiers along with source-location information for all of the components of the nested-name-specifier. More...

#include "clang/AST/NestedNameSpecifier.h"

Public Member Functions

 NestedNameSpecifierLocBuilder ()=default
 
 NestedNameSpecifierLocBuilder (const NestedNameSpecifierLocBuilder &Other)
 
NestedNameSpecifierLocBuilderoperator= (const NestedNameSpecifierLocBuilder &Other)
 
 ~NestedNameSpecifierLocBuilder ()
 
NestedNameSpecifiergetRepresentation () const
 Retrieve the representation of the nested-name-specifier.
 
void Extend (ASTContext &Context, SourceLocation TemplateKWLoc, TypeLoc TL, SourceLocation ColonColonLoc)
 Extend the current nested-name-specifier by another nested-name-specifier component of the form 'type::'.
 
void Extend (ASTContext &Context, IdentifierInfo *Identifier, SourceLocation IdentifierLoc, SourceLocation ColonColonLoc)
 Extend the current nested-name-specifier by another nested-name-specifier component of the form 'identifier::'.
 
void Extend (ASTContext &Context, NamespaceDecl *Namespace, SourceLocation NamespaceLoc, SourceLocation ColonColonLoc)
 Extend the current nested-name-specifier by another nested-name-specifier component of the form 'namespace::'.
 
void Extend (ASTContext &Context, NamespaceAliasDecl *Alias, SourceLocation AliasLoc, SourceLocation ColonColonLoc)
 Extend the current nested-name-specifier by another nested-name-specifier component of the form 'namespace-alias::'.
 
void MakeGlobal (ASTContext &Context, SourceLocation ColonColonLoc)
 Turn this (empty) nested-name-specifier into the global nested-name-specifier '::'.
 
void MakeSuper (ASTContext &Context, CXXRecordDecl *RD, SourceLocation SuperLoc, SourceLocation ColonColonLoc)
 Turns this (empty) nested-name-specifier into '__super' nested-name-specifier.
 
void MakeTrivial (ASTContext &Context, NestedNameSpecifier *Qualifier, SourceRange R)
 Make a new nested-name-specifier from incomplete source-location information.
 
void Adopt (NestedNameSpecifierLoc Other)
 Adopt an existing nested-name-specifier (with source-range information).
 
SourceRange getSourceRange () const LLVM_READONLY
 Retrieve the source range covered by this nested-name-specifier.
 
NestedNameSpecifierLoc getWithLocInContext (ASTContext &Context) const
 Retrieve a nested-name-specifier with location information, copied into the given AST context.
 
NestedNameSpecifierLoc getTemporary () const
 Retrieve a nested-name-specifier with location information based on the information in this builder.
 
void Clear ()
 Clear out this builder, and prepare it to build another nested-name-specifier with source-location information.
 
std::pair< char *, unsignedgetBuffer () const
 Retrieve the underlying buffer.
 

Detailed Description

Class that aids in the construction of nested-name-specifiers along with source-location information for all of the components of the nested-name-specifier.

Definition at line 356 of file NestedNameSpecifier.h.

Constructor & Destructor Documentation

◆ NestedNameSpecifierLocBuilder() [1/2]

clang::NestedNameSpecifierLocBuilder::NestedNameSpecifierLocBuilder ( )
default

◆ NestedNameSpecifierLocBuilder() [2/2]

NestedNameSpecifierLocBuilder::NestedNameSpecifierLocBuilder ( const NestedNameSpecifierLocBuilder Other)

Definition at line 506 of file NestedNameSpecifier.cpp.

References Append(), and clang::Other.

◆ ~NestedNameSpecifierLocBuilder()

clang::NestedNameSpecifierLocBuilder::~NestedNameSpecifierLocBuilder ( )
inline

Definition at line 384 of file NestedNameSpecifier.h.

Member Function Documentation

◆ Adopt()

void NestedNameSpecifierLocBuilder::Adopt ( NestedNameSpecifierLoc  Other)

Adopt an existing nested-name-specifier (with source-range information).

Definition at line 672 of file NestedNameSpecifier.cpp.

References clang::Other.

Referenced by clang::CXXScopeSpec::Adopt().

◆ Clear()

void clang::NestedNameSpecifierLocBuilder::Clear ( )
inline

Clear out this builder, and prepare it to build another nested-name-specifier with source-location information.

Definition at line 505 of file NestedNameSpecifier.h.

Referenced by clang::CXXScopeSpec::Adopt().

◆ Extend() [1/4]

void NestedNameSpecifierLocBuilder::Extend ( ASTContext Context,
IdentifierInfo Identifier,
SourceLocation  IdentifierLoc,
SourceLocation  ColonColonLoc 
)

Extend the current nested-name-specifier by another nested-name-specifier component of the form 'identifier::'.

Parameters
ContextThe AST context in which this nested-name-specifier resides.
IdentifierThe identifier.
IdentifierLocThe location of the identifier.
ColonColonLocThe location of the trailing '::'.

Definition at line 576 of file NestedNameSpecifier.cpp.

References clang::NestedNameSpecifier::Create(), Identifier, and SaveSourceLocation().

◆ Extend() [2/4]

void NestedNameSpecifierLocBuilder::Extend ( ASTContext Context,
NamespaceAliasDecl Alias,
SourceLocation  AliasLoc,
SourceLocation  ColonColonLoc 
)

Extend the current nested-name-specifier by another nested-name-specifier component of the form 'namespace-alias::'.

Parameters
ContextThe AST context in which this nested-name-specifier resides.
AliasThe namespace alias.
AliasLocThe location of the namespace alias name.
ColonColonLocThe location of the trailing '::'.

Definition at line 600 of file NestedNameSpecifier.cpp.

References clang::NestedNameSpecifier::Create(), and SaveSourceLocation().

◆ Extend() [3/4]

void NestedNameSpecifierLocBuilder::Extend ( ASTContext Context,
NamespaceDecl Namespace,
SourceLocation  NamespaceLoc,
SourceLocation  ColonColonLoc 
)

Extend the current nested-name-specifier by another nested-name-specifier component of the form 'namespace::'.

Parameters
ContextThe AST context in which this nested-name-specifier resides.
NamespaceThe namespace.
NamespaceLocThe location of the namespace name.
ColonColonLocThe location of the trailing '::'.

Definition at line 588 of file NestedNameSpecifier.cpp.

References clang::NestedNameSpecifier::Create(), and SaveSourceLocation().

◆ Extend() [4/4]

void NestedNameSpecifierLocBuilder::Extend ( ASTContext Context,
SourceLocation  TemplateKWLoc,
TypeLoc  TL,
SourceLocation  ColonColonLoc 
)

Extend the current nested-name-specifier by another nested-name-specifier component of the form 'type::'.

Parameters
ContextThe AST context in which this nested-name-specifier resides.
TemplateKWLocThe location of the 'template' keyword, if present.
TLThe TypeLoc that describes the type preceding the '::'.
ColonColonLocThe location of the trailing '::'.

Definition at line 563 of file NestedNameSpecifier.cpp.

References clang::NestedNameSpecifier::Create(), clang::TypeLoc::getOpaqueData(), clang::TypeLoc::getTypePtr(), clang::SourceLocation::isValid(), SavePointer(), and SaveSourceLocation().

Referenced by clang::CXXScopeSpec::Extend().

◆ getBuffer()

std::pair< char *, unsigned > clang::NestedNameSpecifierLocBuilder::getBuffer ( ) const
inline

Retrieve the underlying buffer.

Returns
A pair containing a pointer to the buffer of source-location data and the size of the source-location data that resides in that buffer.

Definition at line 515 of file NestedNameSpecifier.h.

◆ getRepresentation()

NestedNameSpecifier * clang::NestedNameSpecifierLocBuilder::getRepresentation ( ) const
inline

Retrieve the representation of the nested-name-specifier.

Definition at line 390 of file NestedNameSpecifier.h.

Referenced by clang::CXXScopeSpec::getLastQualifierNameLoc(), and clang::CXXScopeSpec::getWithLocInContext().

◆ getSourceRange()

SourceRange clang::NestedNameSpecifierLocBuilder::getSourceRange ( ) const
inline

Retrieve the source range covered by this nested-name-specifier.

Definition at line 483 of file NestedNameSpecifier.h.

References clang::NestedNameSpecifierLoc::getSourceRange().

Referenced by clang::CXXScopeSpec::Adopt(), clang::CXXScopeSpec::Extend(), clang::CXXScopeSpec::MakeGlobal(), and clang::CXXScopeSpec::MakeSuper().

◆ getTemporary()

NestedNameSpecifierLoc clang::NestedNameSpecifierLocBuilder::getTemporary ( ) const
inline

Retrieve a nested-name-specifier with location information based on the information in this builder.

This loc will contain references to the builder's internal data and may be invalidated by any change to the builder.

Definition at line 499 of file NestedNameSpecifier.h.

Referenced by clang::CXXScopeSpec::getLastQualifierNameLoc().

◆ getWithLocInContext()

NestedNameSpecifierLoc NestedNameSpecifierLocBuilder::getWithLocInContext ( ASTContext Context) const

Retrieve a nested-name-specifier with location information, copied into the given AST context.

Parameters
ContextThe context into which this nested-name-specifier will be copied.

Definition at line 692 of file NestedNameSpecifier.cpp.

References clang::ASTContext::Allocate(), and memcpy().

Referenced by clang::Sema::ActOnMSVCUnknownTypeName(), and clang::CXXScopeSpec::getWithLocInContext().

◆ MakeGlobal()

void NestedNameSpecifierLocBuilder::MakeGlobal ( ASTContext Context,
SourceLocation  ColonColonLoc 
)

Turn this (empty) nested-name-specifier into the global nested-name-specifier '::'.

Definition at line 611 of file NestedNameSpecifier.cpp.

References clang::NestedNameSpecifier::GlobalSpecifier(), and SaveSourceLocation().

Referenced by clang::CXXScopeSpec::MakeGlobal().

◆ MakeSuper()

void NestedNameSpecifierLocBuilder::MakeSuper ( ASTContext Context,
CXXRecordDecl RD,
SourceLocation  SuperLoc,
SourceLocation  ColonColonLoc 
)

Turns this (empty) nested-name-specifier into '__super' nested-name-specifier.

Parameters
ContextThe AST context in which this nested-name-specifier resides.
RDThe declaration of the class in which nested-name-specifier appeared.
SuperLocThe location of the '__super' keyword. name.
ColonColonLocThe location of the trailing '::'.

Definition at line 620 of file NestedNameSpecifier.cpp.

References SaveSourceLocation(), and clang::NestedNameSpecifier::SuperSpecifier().

Referenced by clang::CXXScopeSpec::MakeSuper().

◆ MakeTrivial()

void NestedNameSpecifierLocBuilder::MakeTrivial ( ASTContext Context,
NestedNameSpecifier Qualifier,
SourceRange  R 
)

◆ operator=()

NestedNameSpecifierLocBuilder & NestedNameSpecifierLocBuilder::operator= ( const NestedNameSpecifierLocBuilder Other)

Definition at line 525 of file NestedNameSpecifier.cpp.

References Append(), memcpy(), and clang::Other.


The documentation for this class was generated from the following files: