A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://clang.llvm.org/doxygen/NestedNameSpecifier_8cpp_source.html below:

clang: lib/AST/NestedNameSpecifier.cpp Source File

27#include "llvm/ADT/FoldingSet.h" 28#include "llvm/Support/Compiler.h" 29#include "llvm/Support/ErrorHandling.h" 30#include "llvm/Support/raw_ostream.h" 36using namespace clang

;

39

NestedNameSpecifier::FindOrInsert(

const ASTContext

&Context,

41

llvm::FoldingSetNodeID

ID

;

44 void

*InsertPos =

nullptr

;

46

= Context.NestedNameSpecifiers.FindNodeOrInsertPos(ID, InsertPos);

50

Context.NestedNameSpecifiers.InsertNode(NNS, InsertPos);

59

assert(II &&

"Identifier cannot be NULL"

);

60

assert((!Prefix || Prefix->

isDependent

()) &&

"Prefix must be dependent"

);

63

Mockup.Prefix.setPointer(Prefix);

64

Mockup.Prefix.setInt(StoredIdentifier);

66 return

FindOrInsert(Context, Mockup);

73

assert(NS &&

"Namespace cannot be NULL"

);

77 "Broken nested name specifier"

);

79

Mockup.Prefix.setPointer(Prefix);

80

Mockup.Prefix.setInt(StoredDecl);

82 return

FindOrInsert(Context, Mockup);

89

assert(Alias &&

"Namespace alias cannot be NULL"

);

93 "Broken nested name specifier"

);

95

Mockup.Prefix.setPointer(Prefix);

96

Mockup.Prefix.setInt(StoredDecl);

98 return

FindOrInsert(Context, Mockup);

104 bool

Template,

const Type

*

T

) {

105

assert(

T

&&

"Type cannot be NULL"

);

107

Mockup.Prefix.setPointer(Prefix);

108

Mockup.Prefix.setInt(Template? StoredTypeSpecWithTemplate : StoredTypeSpec);

109

Mockup.Specifier =

const_cast<Type

*

>

(

T

);

110 return

FindOrInsert(Context, Mockup);

115

assert(II &&

"Identifier cannot be NULL"

);

117

Mockup.Prefix.setPointer(

nullptr

);

118

Mockup.Prefix.setInt(StoredIdentifier);

120 return

FindOrInsert(Context, Mockup);

125 if

(!Context.GlobalNestedNameSpecifier)

126

Context.GlobalNestedNameSpecifier =

128 return

Context.GlobalNestedNameSpecifier;

135

Mockup.Prefix.setPointer(

nullptr

);

136

Mockup.Prefix.setInt(StoredDecl);

137

Mockup.Specifier = RD;

138 return

FindOrInsert(Context, Mockup);

145 switch

(Prefix.getInt()) {

146 case

StoredIdentifier:

151 if

(isa<CXXRecordDecl>(ND))

159 case

StoredTypeSpecWithTemplate:

163

llvm_unreachable(

"Invalid NNS Kind!"

);

168 if

(Prefix.getInt() == StoredDecl)

169 return

dyn_cast<NamespaceDecl>(

static_cast<NamedDecl

*

>

(Specifier));

176 if

(Prefix.getInt() == StoredDecl)

177 return

dyn_cast<NamespaceAliasDecl>(

static_cast<NamedDecl

*

>

(Specifier));

184 switch

(Prefix.getInt()) {

185 case

StoredIdentifier:

189 return

dyn_cast<CXXRecordDecl>(

static_cast<NamedDecl

*

>

(Specifier));

192 case

StoredTypeSpecWithTemplate:

196

llvm_unreachable(

"Invalid NNS Kind!"

);

203 auto

F = NestedNameSpecifierDependence::Dependent |

204

NestedNameSpecifierDependence::Instantiation;

214 return

NestedNameSpecifierDependence::None;

219 if

(

Base

.getType()->isDependentType())

221 return

NestedNameSpecifierDependence::Dependent;

222 return

NestedNameSpecifierDependence::None;

229

llvm_unreachable(

"Invalid NNS Kind!"

);

233 return getDependence

() & NestedNameSpecifierDependence::Dependent;

237 return getDependence

() & NestedNameSpecifierDependence::Instantiation;

241 return getDependence

() & NestedNameSpecifierDependence::UnexpandedPack;

245 return getDependence

() & NestedNameSpecifierDependence::Error;

251 bool

ResolveTemplateArguments)

const

{

285

dyn_cast_or_null<ClassTemplateSpecializationDecl>(

getAsRecordDecl

());

286 if

(ResolveTemplateArguments &&

Record

) {

288 Record

->printName(OS, Policy);

290

OS,

Record

->getTemplateArgs().asArray(), Policy,

291 Record

->getSpecializedTemplate()->getTemplateParameters());

306

assert(!isa<ElaboratedType>(

T

) &&

307 "Elaborated type in nested-name-specifier"

);

309

= dyn_cast<TemplateSpecializationType>(

T

)) {

312

SpecType->getTemplateName().print(OS, InnerPolicy,

318

}

else if

(

const auto

*DepSpecType =

319

dyn_cast<DependentTemplateSpecializationType>(

T

)) {

322

OS << DepSpecType->getIdentifier()->getName();

338 dump

(llvm::errs(), LO);

355

assert(Qualifier &&

"Expected a non-NULL qualifier"

);

360 switch

(Qualifier->getKind()) {

377

Length +=

sizeof

(

void

*);

388

Length += getLocalDataLength(Qualifier);

396 memcpy

(&Raw,

static_cast<char

*

>

(

Data

) + Offset,

sizeof

(Raw));

404 memcpy

(&

Result

,

static_cast<char

*

>

(

Data

) + Offset,

sizeof

(

void

*));

425 switch

(Qualifier->getKind()) {

442 TypeLoc

TL(Qualifier->getAsType(), TypeData);

448

llvm_unreachable(

"Invalid NNS Kind!"

);

459 return TypeLoc

(Qualifier->getAsType(), TypeData);

462static void Append

(

char

*Start,

char

*End,

char

*&Buffer,

unsigned

&BufferSize,

463 unsigned

&BufferCapacity) {

467 if

(BufferSize + (End - Start) > BufferCapacity) {

469 unsigned

NewCapacity = std::max(

470

(

unsigned

)(BufferCapacity ? BufferCapacity * 2 :

sizeof

(

void

*) * 2),

471

(

unsigned

)(BufferSize + (End - Start)));

472 if

(!BufferCapacity) {

473 char

*NewBuffer =

static_cast<char

*

>

(llvm::safe_malloc(NewCapacity));

475 memcpy

(NewBuffer, Buffer, BufferSize);

478

Buffer =

static_cast<char

*

>

(llvm::safe_realloc(Buffer, NewCapacity));

480

BufferCapacity = NewCapacity;

482

assert(Buffer && Start && End && End > Start &&

"Illegal memory buffer copy"

);

483 memcpy

(Buffer + BufferSize, Start, End - Start);

484

BufferSize += End - Start;

489 unsigned

&BufferSize,

unsigned

&BufferCapacity) {

491 Append

(

reinterpret_cast<char

*

>

(&Raw),

492 reinterpret_cast<char

*

>

(&Raw) +

sizeof

(Raw), Buffer, BufferSize,

497static void SavePointer

(

void

*Ptr,

char

*&Buffer,

unsigned

&BufferSize,

498 unsigned

&BufferCapacity) {

499 Append

(

reinterpret_cast<char

*

>

(&Ptr),

500 reinterpret_cast<char

*

>

(&Ptr) +

sizeof

(

void

*),

501

Buffer, BufferSize, BufferCapacity);

506

: Representation(

Other

.Representation) {

510 if

(

Other

.BufferCapacity == 0) {

512

Buffer =

Other

.Buffer;

513

BufferSize =

Other

.BufferSize;

525

Representation =

Other

.Representation;

527 if

(Buffer &&

Other

.Buffer && BufferCapacity >=

Other

.BufferSize) {

529

BufferSize =

Other

.BufferSize;

535 if

(BufferCapacity) {

540 if

(!

Other

.Buffer) {

547 if

(

Other

.BufferCapacity == 0) {

549

Buffer =

Other

.Buffer;

550

BufferSize =

Other

.BufferSize;

611

assert(!Representation &&

"Already have a nested-name-specifier!?"

);

632

Representation = Qualifier;

639

Stack.push_back(NNS);

640 while

(!Stack.empty()) {

666

Buffer, BufferSize, BufferCapacity);

675

Representation =

nullptr

;

683

Representation =

Other

.getNestedNameSpecifier();

684

Buffer =

static_cast<char

*

>

(

Other

.getOpaqueData());

685

BufferSize =

Other

.getDataLength();

696 if

(BufferCapacity == 0)

702 void

*Mem = Context.

Allocate

(BufferSize,

alignof

(

void

*));

703 memcpy

(Mem, Buffer, BufferSize);

Defines the clang::ASTContext interface.

Defines the C++ Decl subclasses, other than those for templates (found in DeclTemplate....

Defines the C++ template declaration subclasses.

Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified.

Defines the clang::LangOptions interface.

llvm::MachO::Record Record

static void * LoadPointer(void *Data, unsigned Offset)

Load a (possibly unaligned) pointer from a given address and offset.

static void Append(char *Start, char *End, char *&Buffer, unsigned &BufferSize, unsigned &BufferCapacity)

static void SaveSourceLocation(SourceLocation Loc, char *&Buffer, unsigned &BufferSize, unsigned &BufferCapacity)

Save a source location to the given buffer.

static void SavePointer(void *Ptr, char *&Buffer, unsigned &BufferSize, unsigned &BufferCapacity)

Save a pointer to the given buffer.

static SourceLocation LoadSourceLocation(void *Data, unsigned Offset)

Load a (possibly unaligned) source location from a given address and offset.

Defines the clang::SourceLocation class and associated facilities.

Defines the clang::TypeLoc interface and its subclasses.

C Language Family Type Representation.

__DEVICE__ void * memcpy(void *__a, const void *__b, size_t __c)

Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...

TypeSourceInfo * getTrivialTypeSourceInfo(QualType T, SourceLocation Loc=SourceLocation()) const

Allocate a TypeSourceInfo where all locations have been initialized to a given location,...

void * Allocate(size_t Size, unsigned Align=8) const

Represents a C++ struct/union/class.

One of these records is kept for each identifier that is lexed.

StringRef getName() const

Return the actual identifier string.

Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...

This represents a decl that may have a name.

StringRef getName() const

Get the name of identifier for this declaration as a StringRef.

Represents a C++ namespace alias.

Represent a C++ namespace.

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

void Adopt(NestedNameSpecifierLoc Other)

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

NestedNameSpecifierLocBuilder & operator=(const NestedNameSpecifierLocBuilder &Other)

void MakeTrivial(ASTContext &Context, NestedNameSpecifier *Qualifier, SourceRange R)

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

NestedNameSpecifierLocBuilder()=default

void MakeSuper(ASTContext &Context, CXXRecordDecl *RD, SourceLocation SuperLoc, SourceLocation ColonColonLoc)

Turns this (empty) nested-name-specifier into '__super' 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 MakeGlobal(ASTContext &Context, SourceLocation ColonColonLoc)

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

NestedNameSpecifierLoc getWithLocInContext(ASTContext &Context) const

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

A C++ nested-name-specifier augmented with source location information.

TypeLoc getTypeLoc() const

For a nested-name-specifier that refers to a type, retrieve the type with source-location information...

SourceRange getLocalSourceRange() const

Retrieve the source range covering just the last part of this nested-name-specifier,...

SourceRange getSourceRange() const LLVM_READONLY

Retrieve the source range covering the entirety of this nested-name-specifier.

unsigned getDataLength() const

Determines the data length for the entire nested-name-specifier.

Represents a C++ nested name specifier, such as "\::std::vector<int>::".

bool containsErrors() const

Whether this nested name specifier contains an error.

CXXRecordDecl * getAsRecordDecl() const

Retrieve the record declaration stored in this nested name specifier.

bool isDependent() const

Whether this nested name specifier refers to a dependent type or not.

SpecifierKind getKind() const

Determine what kind of nested name specifier is stored.

static NestedNameSpecifier * Create(const ASTContext &Context, NestedNameSpecifier *Prefix, const IdentifierInfo *II)

Builds a specifier combining a prefix and an identifier.

void Profile(llvm::FoldingSetNodeID &ID) const

NamespaceAliasDecl * getAsNamespaceAlias() const

Retrieve the namespace alias stored in this nested name specifier.

IdentifierInfo * getAsIdentifier() const

Retrieve the identifier stored in this nested name specifier.

static NestedNameSpecifier * GlobalSpecifier(const ASTContext &Context)

Returns the nested name specifier representing the global scope.

bool isInstantiationDependent() const

Whether this nested name specifier involves a template parameter.

NestedNameSpecifier * getPrefix() const

Return the prefix of this nested name specifier.

SpecifierKind

The kind of specifier that completes this nested name specifier.

@ NamespaceAlias

A namespace alias, stored as a NamespaceAliasDecl*.

@ TypeSpec

A type, stored as a Type*.

@ TypeSpecWithTemplate

A type that was preceded by the 'template' keyword, stored as a Type*.

@ Super

Microsoft's '__super' specifier, stored as a CXXRecordDecl* of the class it appeared in.

@ Identifier

An identifier, stored as an IdentifierInfo*.

@ Global

The global specifier '::'. There is no stored value.

@ Namespace

A namespace, stored as a NamespaceDecl*.

NestedNameSpecifierDependence getDependence() const

bool containsUnexpandedParameterPack() const

Whether this nested-name-specifier contains an unexpanded parameter pack (for C++11 variadic template...

NamespaceDecl * getAsNamespace() const

Retrieve the namespace stored in this nested name specifier.

void print(raw_ostream &OS, const PrintingPolicy &Policy, bool ResolveTemplateArguments=false) const

Print this nested name specifier to the given output stream.

static NestedNameSpecifier * SuperSpecifier(const ASTContext &Context, CXXRecordDecl *RD)

Returns the nested name specifier representing the __super scope for the given CXXRecordDecl.

const Type * getAsType() const

Retrieve the type stored in this nested name specifier.

A (possibly-)qualified type.

void print(raw_ostream &OS, const PrintingPolicy &Policy, const Twine &PlaceHolder=Twine(), unsigned Indentation=0) const

Encodes a location in the source.

static SourceLocation getFromRawEncoding(UIntTy Encoding)

Turn a raw encoding of a SourceLocation object into a real SourceLocation.

bool isValid() const

Return true if this is a valid SourceLocation object.

UIntTy getRawEncoding() const

When a SourceLocation itself cannot be used, this returns an (opaque) 32-bit integer encoding for it.

A trivial tuple used to represent a source range.

SourceLocation getEnd() const

SourceLocation getBegin() const

Represents a type template specialization; the template must be a class template, a type alias templa...

Base wrapper for a particular "section" of type source info.

void * getOpaqueData() const

Get the pointer where source information is stored.

SourceLocation getBeginLoc() const

Get the begin source location.

const Type * getTypePtr() const

A container of type source information.

TypeLoc getTypeLoc() const

Return the TypeLoc wrapper for the type source info.

The base class of the type hierarchy.

CXXRecordDecl * getAsCXXRecordDecl() const

Retrieves the CXXRecordDecl that this type refers to, either because the type is a RecordType or beca...

The JSON file list parser is used to communicate input to InstallAPI.

@ Result

The result type of a method or function.

const FunctionProtoType * T

void printTemplateArgumentList(raw_ostream &OS, ArrayRef< TemplateArgument > Args, const PrintingPolicy &Policy, const TemplateParameterList *TPL=nullptr)

Print a template argument list, including the '<' and '>' enclosing the template arguments.

NestedNameSpecifierDependence toNestedNameSpecifierDependendence(TypeDependence D)

@ Other

Other implicit parameter.

Wraps an identifier and optional source location for the identifier.

Describes how types, statements, expressions, and declarations should be printed.

unsigned SuppressScope

Suppresses printing of scope specifiers.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4