clang 22.0.0git
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/NestedNameSpecifierBase.h"

Public Member Functions

 NestedNameSpecifierLocBuilder ()=default
 NestedNameSpecifierLocBuilder (const NestedNameSpecifierLocBuilder &Other)
NestedNameSpecifierLocBuilderoperator= (const NestedNameSpecifierLocBuilder &Other)
 ~NestedNameSpecifierLocBuilder ()
NestedNameSpecifier getRepresentation () const
 Retrieve the representation of the nested-name-specifier.
void Make (ASTContext &Context, TypeLoc TL, SourceLocation ColonColonLoc)
 Make a nested-name-specifier of the form 'type::'.
void Extend (ASTContext &Context, const NamespaceBaseDecl *Namespace, SourceLocation NamespaceLoc, SourceLocation ColonColonLoc)
 Extend the current nested-name-specifier by another nested-name-specifier component of the form 'namespace::'.
void MakeGlobal (ASTContext &Context, SourceLocation ColonColonLoc)
 Turn this (empty) nested-name-specifier into the global nested-name-specifier '::'.
void MakeMicrosoftSuper (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 423 of file NestedNameSpecifierBase.h.

Constructor & Destructor Documentation

◆ NestedNameSpecifierLocBuilder() [1/2]

clang::NestedNameSpecifierLocBuilder::NestedNameSpecifierLocBuilder ( )
default

◆ NestedNameSpecifierLocBuilder() [2/2]

NestedNameSpecifierLocBuilder::NestedNameSpecifierLocBuilder ( const NestedNameSpecifierLocBuilder & Other)

◆ ~NestedNameSpecifierLocBuilder()

clang::NestedNameSpecifierLocBuilder::~NestedNameSpecifierLocBuilder ( )
inline

Definition at line 454 of file NestedNameSpecifierBase.h.

Member Function Documentation

◆ Adopt()

void NestedNameSpecifierLocBuilder::Adopt ( NestedNameSpecifierLoc Other)

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

Definition at line 318 of file NestedNameSpecifier.cpp.

References clang::Other.

◆ 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 545 of file NestedNameSpecifierBase.h.

◆ Extend()

void NestedNameSpecifierLocBuilder::Extend ( ASTContext & Context,
const NamespaceBaseDecl * 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 260 of file NestedNameSpecifier.cpp.

References SaveSourceLocation().

◆ 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 555 of file NestedNameSpecifierBase.h.

◆ getRepresentation()

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

Retrieve the representation of the nested-name-specifier.

Definition at line 460 of file NestedNameSpecifierBase.h.

◆ getSourceRange()

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

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

Definition at line 247 of file NestedNameSpecifier.h.

References clang::NestedNameSpecifierLoc::getSourceRange().

◆ 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 539 of file NestedNameSpecifierBase.h.

References getTemporary().

Referenced by getTemporary().

◆ 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 338 of file NestedNameSpecifier.cpp.

References memcpy().

Referenced by clang::Sema::ActOnMSVCUnknownTypeName(), clang::ASTImporter::Import(), and clang::ASTRecordReader::readNestedNameSpecifierLoc().

◆ Make()

void NestedNameSpecifierLocBuilder::Make ( ASTContext & Context,
TypeLoc TL,
SourceLocation ColonColonLoc )

Make a nested-name-specifier of the form 'type::'.

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

Definition at line 250 of file NestedNameSpecifier.cpp.

References clang::TypeLoc::getOpaqueData(), clang::TypeLoc::getTypePtr(), SavePointer(), and SaveSourceLocation().

◆ MakeGlobal()

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

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

Definition at line 271 of file NestedNameSpecifier.cpp.

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

◆ MakeMicrosoftSuper()

void NestedNameSpecifierLocBuilder::MakeMicrosoftSuper ( 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 280 of file NestedNameSpecifier.cpp.

References SaveSourceLocation().

◆ MakeTrivial()

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

Make a new nested-name-specifier from incomplete source-location information.

This routine should be used very, very rarely, in cases where we need to synthesize a nested-name-specifier. Most code should instead use Adopt() with a proper NestedNameSpecifierLoc.

Definition at line 513 of file NestedNameSpecifierBase.h.

Referenced by clang::Sema::ActOnMSVCUnknownTypeName(), clang::Sema::BuildUsingDeclaration(), clang::MemberPointerTypeLoc::initializeLocal(), clang::TagTypeLoc::initializeLocal(), clang::TemplateSpecializationTypeLoc::initializeLocal(), initializeQualifier(), and clang::TreeTransform< Derived >::TransformTemplateName().

◆ operator=()

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

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