A RetroSearch Logo

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

Search Query:

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

clang: lib/Index/USRGeneration.cpp Source File

18#include "llvm/Support/Path.h" 19#include "llvm/Support/raw_ostream.h" 21using namespace clang

;

35 const

std::pair<FileID, unsigned> &Decomposed =

SM

.getDecomposedLoc(

Loc

);

38

OS << llvm::sys::path::filename(FE->

getName

());

47

OS <<

'@'

<< Decomposed.second;

56 return attr

->getDefinedIn();

64

llvm::raw_svector_ostream Out;

67 bool

IgnoreResults =

false

;

68 bool

generatedLoc =

false

;

70

llvm::DenseMap<const Type *, unsigned> TypeSubstitutions;

75

: Buf(Buf), Out(Buf), Context(Ctx), LangOpts(LangOpts) {

80 bool

ignoreResults()

const

{

return

IgnoreResults; }

96 void

VisitTagDecl(

const TagDecl

*

D

);

99 void

VisitVarDecl(

const VarDecl

*

D

);

108

IgnoreResults =

true

;

112

IgnoreResults =

true

;

119 bool

EmittedDeclName = !EmitDeclName(

D

);

120

assert(EmittedDeclName &&

"EmitDeclName can not fail for UsingDecls"

);

121

(void)EmittedDeclName;

124 bool

ShouldGenerateLocation(

const NamedDecl

*

D

);

130 void

GenExtSymbolContainer(

const NamedDecl

*

D

);

134 bool

GenLoc(

const Decl

*

D

,

bool

IncludeOffset);

143 void

GenObjCClass(StringRef cls, StringRef ExtSymDefinedIn,

144

StringRef CategoryContextExtSymbolDefinedIn) {

146

CategoryContextExtSymbolDefinedIn);

150 void

GenObjCCategory(StringRef cls, StringRef cat,

151

StringRef clsExt, StringRef catExt) {

156 void

GenObjCProperty(StringRef prop,

bool

isClassProp) {

161 void

GenObjCProtocol(StringRef prot, StringRef ext) {

182bool

USRGenerator::EmitDeclName(

const NamedDecl

*

D

) {

190bool

USRGenerator::ShouldGenerateLocation(

const NamedDecl

*

D

) {

191 if

(

D

->isExternallyVisible())

199 return

!

SM

.isInSystemHeader(

Loc

);

202void

USRGenerator::VisitDeclContext(

const DeclContext

*DC) {

203 if

(

const NamedDecl

*

D

= dyn_cast<NamedDecl>(DC))

205 else if

(isa<LinkageSpecDecl>(DC))

209void

USRGenerator::VisitFieldDecl(

const FieldDecl

*

D

) {

216

Out << (isa<ObjCIvarDecl>(

D

) ?

"@"

:

"@FI@"

);

217 if

(EmitDeclName(

D

)) {

219

IgnoreResults =

true

;

224void

USRGenerator::VisitFunctionDecl(

const FunctionDecl

*

D

) {

225 if

(ShouldGenerateLocation(

D

) && GenLoc(

D

,

isLocal(

D

)))

228 if

(

D

->getType().isNull()) {

229

IgnoreResults =

true

;

233 const unsigned

StartSize = Buf.size();

235 if

(Buf.size() == StartSize)

236

GenExtSymbolContainer(

D

);

238 bool

IsTemplate =

false

;

242

VisitTemplateParameterList(FunTmpl->getTemplateParameters());

249

Policy.SuppressTemplateArgsInCXXConstructors =

true

;

250 D

->getDeclName().

print

(Out, Policy);

252 if

((!LangOpts.CPlusPlus ||

D

->isExternC()) &&

253

!

D

->

hasAttr

<OverloadableAttr>())

256 if

(

D

->isFunctionTemplateSpecialization()) {

259 D

->getTemplateSpecializationArgs()) {

260 for

(

const auto

&Arg : SpecArgs->asArray()) {

262

VisitTemplateArgument(Arg);

265 D

->getTemplateSpecializationArgsAsWritten()) {

266 for

(

const auto

&ArgLoc : SpecArgsWritten->arguments()) {

268

VisitTemplateArgument(ArgLoc.getArgument());

274 QualType

CanonicalType =

D

->getType().getCanonicalType();

277 for

(

QualType

PT : FPT->param_types()) {

282 if

(

D

->isVariadic())

291

VisitType(

D

->getReturnType());

298 if

(

unsigned

quals = MD->getMethodQualifiers().getCVRUQualifiers())

299

Out << (char)(

'0'

+ quals);

300 switch

(MD->getRefQualifier()) {

308void

USRGenerator::VisitNamedDecl(

const NamedDecl

*

D

) {

312 if

(EmitDeclName(

D

)) {

317

IgnoreResults =

true

;

321void

USRGenerator::VisitVarDecl(

const VarDecl

*

D

) {

325 if

(ShouldGenerateLocation(

D

) && GenLoc(

D

,

isLocal(

D

)))

332

VisitTemplateParameterList(VarTmpl->getTemplateParameters());

334

= dyn_cast<VarTemplatePartialSpecializationDecl>(

D

)) {

336

VisitTemplateParameterList(PartialSpec->getTemplateParameters());

340

StringRef

s

=

D

->getName();

347

IgnoreResults =

true

;

353

= dyn_cast<VarTemplateSpecializationDecl>(

D

)) {

356 for

(

unsigned

I = 0, N = Args.

size

(); I != N; ++I) {

358

VisitTemplateArgument(Args.

get

(I));

363void

USRGenerator::VisitBindingDecl(

const BindingDecl

*

D

) {

364 if

(isLocal(

D

) && GenLoc(

D

,

true

))

369void

USRGenerator::VisitNonTypeTemplateParmDecl(

374void

USRGenerator::VisitTemplateTemplateParmDecl(

383 if

(

D

->isAnonymousNamespace()) {

387

Out <<

"@N@"

<<

D

->getName();

391

VisitFunctionDecl(

D

->getTemplatedDecl());

395

VisitTagDecl(

D

->getTemplatedDecl());

401

Out <<

"@NA@"

<<

D

->getName();

407 if

(

auto

*ICD = dyn_cast<ObjCCategoryImplDecl>(

D

->

getDeclContext

()))

408 return

ICD->getCategoryDecl();

422

IgnoreResults =

true

;

426

VisitObjCContainerDecl(ID, CD);

431

Out << (

D

->isInstanceMethod() ?

"(im)"

:

"(cm)"

)

439

llvm_unreachable(

"Invalid ObjC container."

);

440 case

Decl::ObjCInterface:

441 case

Decl::ObjCImplementation:

445 case

Decl::ObjCCategory: {

453

IgnoreResults =

true

;

459

Out <<

"objc(ext)"

<<

ID

->getName() <<

'@'

;

463

GenObjCCategory(

ID

->getName(), CD->

getName

(),

469 case

Decl::ObjCCategoryImpl: {

477

IgnoreResults =

true

;

480

GenObjCCategory(

ID

->getName(), CD->

getName

(),

485 case

Decl::ObjCProtocol: {

500

GenObjCProperty(

D

->getName(),

D

->isClassProperty());

505

VisitObjCPropertyDecl(PD);

509

IgnoreResults =

true

;

512void

USRGenerator::VisitTagDecl(

const TagDecl

*

D

) {

515 if

(!isa<EnumDecl>(

D

) &&

516

ShouldGenerateLocation(

D

) && GenLoc(

D

,

isLocal(

D

)))

519

GenExtSymbolContainer(

D

);

524 bool

AlreadyStarted =

false

;

525 if

(

const CXXRecordDecl

*CXXRecord = dyn_cast<CXXRecordDecl>(

D

)) {

527

AlreadyStarted =

true

;

529 switch

(

D

->getTagKind()) {

530 case

TagTypeKind::Interface:

531 case

TagTypeKind::Class:

532 case

TagTypeKind::Struct:

535 case

TagTypeKind::Union:

538 case

TagTypeKind::Enum:

539

llvm_unreachable(

"enum template"

);

541

VisitTemplateParameterList(ClassTmpl->getTemplateParameters());

543

= dyn_cast<ClassTemplatePartialSpecializationDecl>(CXXRecord)) {

544

AlreadyStarted =

true

;

546 switch

(

D

->getTagKind()) {

547 case

TagTypeKind::Interface:

548 case

TagTypeKind::Class:

549 case

TagTypeKind::Struct:

552 case

TagTypeKind::Union:

555 case

TagTypeKind::Enum:

556

llvm_unreachable(

"enum partial specialization"

);

558

VisitTemplateParameterList(PartialSpec->getTemplateParameters());

562 if

(!AlreadyStarted) {

563 switch

(

D

->getTagKind()) {

564 case

TagTypeKind::Interface:

565 case

TagTypeKind::Class:

566 case

TagTypeKind::Struct:

569 case

TagTypeKind::Union:

572 case

TagTypeKind::Enum:

579

assert(Buf.size() > 0);

580 const unsigned

off = Buf.size() - 1;

582 if

(EmitDeclName(

D

)) {

587 if

(

D

->isEmbeddedInDeclarator() && !

D

->isFreeStanding()) {

591 if

(

auto

*ED = dyn_cast<EnumDecl>(

D

)) {

594 auto

enum_range = ED->enumerators();

595 if

(enum_range.begin() != enum_range.end()) {

596

Out <<

'@'

<< **enum_range.begin();

605

= dyn_cast<ClassTemplateSpecializationDecl>(

D

)) {

608 for

(

unsigned

I = 0, N = Args.

size

(); I != N; ++I) {

610

VisitTemplateArgument(Args.

get

(I));

615void

USRGenerator::VisitTypedefDecl(

const TypedefDecl

*

D

) {

616 if

(ShouldGenerateLocation(

D

) && GenLoc(

D

,

isLocal(

D

)))

619 if

(

const NamedDecl

*DCN = dyn_cast<NamedDecl>(DC))

622

Out <<

D

->getName();

629void

USRGenerator::GenExtSymbolContainer(

const NamedDecl

*

D

) {

631 if

(!Container.empty())

632

Out <<

"@M@"

<< Container;

635bool

USRGenerator::GenLoc(

const Decl

*

D

,

bool

IncludeOffset) {

637 return

IgnoreResults;

638

generatedLoc =

true

;

642

IgnoreResults =

true

;

653 return

IgnoreResults;

664

NNS->

print

(Out, PO);

667void

USRGenerator::VisitType(

QualType T

) {

684

Out << ((char) (

'0'

+ qVal));

690 T

= Expansion->getPattern();

694 switch

(BT->getKind()) {

695 case

BuiltinType::Void:

697 case

BuiltinType::Bool:

699 case

BuiltinType::UChar:

701 case

BuiltinType::Char8:

703 case

BuiltinType::Char16:

705 case

BuiltinType::Char32:

707 case

BuiltinType::UShort:

709 case

BuiltinType::UInt:

711 case

BuiltinType::ULong:

713 case

BuiltinType::ULongLong:

715 case

BuiltinType::UInt128:

717 case

BuiltinType::Char_U:

718 case

BuiltinType::Char_S:

720 case

BuiltinType::SChar:

722 case

BuiltinType::WChar_S:

723 case

BuiltinType::WChar_U:

725 case

BuiltinType::Short:

727 case

BuiltinType::Int:

729 case

BuiltinType::Long:

731 case

BuiltinType::LongLong:

733 case

BuiltinType::Int128:

735 case

BuiltinType::Float16:

736 case

BuiltinType::Half:

738 case

BuiltinType::Float:

740 case

BuiltinType::Double:

742 case

BuiltinType::LongDouble:

744 case

BuiltinType::Float128:

746 case

BuiltinType::NullPtr:

748#define IMAGE_TYPE(ImgType, Id, SingletonId, Access, Suffix) \ 749 case BuiltinType::Id: \ 750 Out << "@BT@"

<< #Suffix << "_" << #ImgType; break;

751#include "clang/Basic/OpenCLImageTypes.def" 752#define EXT_OPAQUE_TYPE(ExtType, Id, Ext) \ 753 case BuiltinType::Id: \ 754 Out << "@BT@"

<< #ExtType; break;

755#include "clang/Basic/OpenCLExtensionTypes.def" 756 case

BuiltinType::OCLEvent:

757

Out <<

"@BT@OCLEvent"

;

break

;

758 case

BuiltinType::OCLClkEvent:

759

Out <<

"@BT@OCLClkEvent"

;

break

;

760 case

BuiltinType::OCLQueue:

761

Out <<

"@BT@OCLQueue"

;

break

;

762 case

BuiltinType::OCLReserveID:

763

Out <<

"@BT@OCLReserveID"

;

break

;

764 case

BuiltinType::OCLSampler:

765

Out <<

"@BT@OCLSampler"

;

break

;

766#define SVE_TYPE(Name, Id, SingletonId) \ 767 case BuiltinType::Id: \ 768 Out << "@BT@"

<< #Name; \

770#include "clang/Basic/AArch64SVEACLETypes.def" 771#define PPC_VECTOR_TYPE(Name, Id, Size) \ 772 case BuiltinType::Id: \ 773 Out << "@BT@"

<< #Name; break;

774#include "clang/Basic/PPCTypes.def" 775#define RVV_TYPE(Name, Id, SingletonId) \ 776 case BuiltinType::Id: \ 777 Out << "@BT@"

<< Name; break;

778#include "clang/Basic/RISCVVTypes.def" 779#define WASM_TYPE(Name, Id, SingletonId) case BuiltinType::Id: 780#include "clang/Basic/WebAssemblyReferenceTypes.def" 781#define AMDGPU_TYPE(Name, Id, SingletonId, Width, Align) \ 782 case BuiltinType::Id: \ 783 Out << "@BT@"

<< #Name; \

785#include "clang/Basic/AMDGPUTypes.def" 786#define HLSL_INTANGIBLE_TYPE(Name, Id, SingletonId) \ 787 case BuiltinType::Id: \ 788 Out << "@BT@"

<< #Name; \

790#include "clang/Basic/HLSLIntangibleTypes.def" 791 case

BuiltinType::ShortAccum:

792

Out <<

"@BT@ShortAccum"

;

break

;

793 case

BuiltinType::Accum:

794

Out <<

"@BT@Accum"

;

break

;

795 case

BuiltinType::LongAccum:

796

Out <<

"@BT@LongAccum"

;

break

;

797 case

BuiltinType::UShortAccum:

798

Out <<

"@BT@UShortAccum"

;

break

;

799 case

BuiltinType::UAccum:

800

Out <<

"@BT@UAccum"

;

break

;

801 case

BuiltinType::ULongAccum:

802

Out <<

"@BT@ULongAccum"

;

break

;

803 case

BuiltinType::ShortFract:

804

Out <<

"@BT@ShortFract"

;

break

;

805 case

BuiltinType::Fract:

806

Out <<

"@BT@Fract"

;

break

;

807 case

BuiltinType::LongFract:

808

Out <<

"@BT@LongFract"

;

break

;

809 case

BuiltinType::UShortFract:

810

Out <<

"@BT@UShortFract"

;

break

;

811 case

BuiltinType::UFract:

812

Out <<

"@BT@UFract"

;

break

;

813 case

BuiltinType::ULongFract:

814

Out <<

"@BT@ULongFract"

;

break

;

815 case

BuiltinType::SatShortAccum:

816

Out <<

"@BT@SatShortAccum"

;

break

;

817 case

BuiltinType::SatAccum:

818

Out <<

"@BT@SatAccum"

;

break

;

819 case

BuiltinType::SatLongAccum:

820

Out <<

"@BT@SatLongAccum"

;

break

;

821 case

BuiltinType::SatUShortAccum:

822

Out <<

"@BT@SatUShortAccum"

;

break

;

823 case

BuiltinType::SatUAccum:

824

Out <<

"@BT@SatUAccum"

;

break

;

825 case

BuiltinType::SatULongAccum:

826

Out <<

"@BT@SatULongAccum"

;

break

;

827 case

BuiltinType::SatShortFract:

828

Out <<

"@BT@SatShortFract"

;

break

;

829 case

BuiltinType::SatFract:

830

Out <<

"@BT@SatFract"

;

break

;

831 case

BuiltinType::SatLongFract:

832

Out <<

"@BT@SatLongFract"

;

break

;

833 case

BuiltinType::SatUShortFract:

834

Out <<

"@BT@SatUShortFract"

;

break

;

835 case

BuiltinType::SatUFract:

836

Out <<

"@BT@SatUFract"

;

break

;

837 case

BuiltinType::SatULongFract:

838

Out <<

"@BT@SatULongFract"

;

break

;

839 case

BuiltinType::BFloat16:

840

Out <<

"@BT@__bf16"

;

break

;

841 case

BuiltinType::Ibm128:

842

Out <<

"@BT@__ibm128"

;

break

;

843 case

BuiltinType::ObjCId:

845 case

BuiltinType::ObjCClass:

847 case

BuiltinType::ObjCSel:

849#define BUILTIN_TYPE(Id, SingletonId) 850#define PLACEHOLDER_TYPE(Id, SingletonId) case BuiltinType::Id: 851#include "clang/AST/BuiltinTypes.def" 852 case

BuiltinType::Dependent:

855

IgnoreResults =

true

;

863

llvm::DenseMap<const Type *, unsigned>::iterator Substitution

864

= TypeSubstitutions.find(

T

.getTypePtr());

865 if

(Substitution != TypeSubstitutions.end()) {

866

Out <<

'S'

<< Substitution->second <<

'_'

;

870 unsigned

Number = TypeSubstitutions.size();

871

TypeSubstitutions[

T

.getTypePtr()] = Number;

896

VisitType(FT->getReturnType());

898 for

(

const auto

&I : FT->param_types()) {

903 if

(FT->isVariadic())

914 T

= CT->getElementType();

919

VisitTagDecl(TT->getDecl());

924

VisitObjCInterfaceDecl(OIT->getDecl());

929

VisitType(OIT->getBaseType());

930 for

(

auto

*Prot : OIT->getProtocols())

931

VisitObjCProtocolDecl(Prot);

935

Out <<

't'

<< TTP->getDepth() <<

'.'

<< TTP->getIndex();

941

VisitTemplateName(Spec->getTemplateName());

942

Out << Spec->template_arguments().size();

943 for

(

const auto

&Arg : Spec->template_arguments())

944

VisitTemplateArgument(Arg);

950

Out <<

':'

<< DNT->getIdentifier()->getName();

954 T

= InjT->getInjectedSpecializationType();

959

Out << VT->getNumElements();

960 T

= VT->getElementType();

963 if

(

const auto

*

const

AT = dyn_cast<ArrayType>(

T

)) {

965 switch

(AT->getSizeModifier()) {

966 case

ArraySizeModifier::Static:

969 case

ArraySizeModifier::Star:

972 case

ArraySizeModifier::Normal:

976 if

(

const auto

*

const

CAT = dyn_cast<ConstantArrayType>(

T

))

977

Out << CAT->getSize();

979 T

= AT->getElementType();

989void

USRGenerator::VisitTemplateParameterList(

993

Out <<

'>'

<< Params->

size

();

995

PEnd = Params->

end

();

998 if

(isa<TemplateTypeParmDecl>(*

P

)) {

999 if

(cast<TemplateTypeParmDecl>(*P)->isParameterPack())

1006 if

(NTTP->isParameterPack())

1009

VisitType(NTTP->getType());

1021void

USRGenerator::VisitTemplateName(

TemplateName

Name) {

1022 if

(

TemplateDecl

*Template = Name.getAsTemplateDecl()) {

1024

= dyn_cast<TemplateTemplateParmDecl>(Template)) {

1025

Out <<

't'

<< TTP->getDepth() <<

'.'

<< TTP->getIndex();

1062

VisitTemplateArgument(

P

);

1080

Out << Hash.CalculateHash();

1087 if

(ShouldGenerateLocation(

D

) && GenLoc(

D

,

isLocal(

D

)))

1096 if

(ShouldGenerateLocation(

D

) && GenLoc(

D

,

isLocal(

D

)))

1101

Out <<

D

->getName();

1104void

USRGenerator::VisitConceptDecl(

const ConceptDecl

*

D

) {

1105 if

(ShouldGenerateLocation(

D

) && GenLoc(

D

,

isLocal(

D

)))

1112void

USRGenerator::VisitMSGuidDecl(

const MSGuidDecl

*

D

) {

1115 D

->NamedDecl::printName(Out);

1123

StringRef CatSymDefinedIn,

1125 if

(ClsSymDefinedIn.empty() && CatSymDefinedIn.empty())

1127 if

(CatSymDefinedIn.empty()) {

1128

OS <<

"@M@"

<< ClsSymDefinedIn <<

'@'

;

1131

OS <<

"@CM@"

<< CatSymDefinedIn <<

'@'

;

1132 if

(ClsSymDefinedIn != CatSymDefinedIn) {

1133

OS << ClsSymDefinedIn <<

'@'

;

1138

StringRef ExtSymDefinedIn,

1139

StringRef CategoryContextExtSymbolDefinedIn) {

1141

CategoryContextExtSymbolDefinedIn, OS);

1142

OS <<

"objc(cs)"

<< Cls;

1147

StringRef ClsSymDefinedIn,

1148

StringRef CatSymDefinedIn) {

1150

OS <<

"objc(cy)"

<< Cls <<

'@'

<< Cat;

1158 bool

IsInstanceMethod,

1160

OS << (IsInstanceMethod ?

"(im)"

:

"(cm)"

) << Sel;

1165

OS << (isClassProp ?

"(cpy)"

:

"(py)"

) << Prop;

1169

StringRef ExtSymDefinedIn) {

1170 if

(!ExtSymDefinedIn.empty())

1171

OS <<

"@M@"

<< ExtSymDefinedIn <<

'@'

;

1172

OS <<

"objc(pl)"

<< Prot;

1176

StringRef ExtSymDefinedIn) {

1177 if

(!ExtSymDefinedIn.empty())

1178

OS <<

"@M@"

<< ExtSymDefinedIn;

1179

OS <<

"@E@"

<< EnumName;

1184

OS <<

'@'

<< EnumConstantName;

1204 if

(

auto

*ExternalSymAttr = CD->

getAttr

<ExternalSourceSymbolAttr>()) {

1205 if

(!ExternalSymAttr->getUSR().empty()) {

1206

llvm::raw_svector_ostream Out(Buf);

1207

Out << ExternalSymAttr->getUSR();

1213 return

UG.ignoreResults();

1229 if

(MacroName.empty())

1232

llvm::raw_svector_ostream Out(Buf);

1236 bool

ShouldGenerateLocation =

Loc

.

isValid

() && !

SM

.isInSystemHeader(

Loc

);

1239 if

(ShouldGenerateLocation)

1256 T

=

T

.getCanonicalType();

1258

USRGenerator UG(&Ctx, Buf, LangOpts);

1260 return

UG.ignoreResults();

1285

OS <<

"@M@"

<< ModName;

Defines the clang::ASTContext interface.

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

Defines the C++ template declaration subclasses.

Defines the clang::FileManager interface and associated types.

This file contains the declaration of the ODRHash class, which calculates a hash based on AST nodes,...

static void combineClassAndCategoryExtContainers(StringRef ClsSymDefinedIn, StringRef CatSymDefinedIn, raw_ostream &OS)

static bool printLoc(llvm::raw_ostream &OS, SourceLocation Loc, const SourceManager &SM, bool IncludeOffset)

static const ObjCCategoryDecl * getCategoryContext(const NamedDecl *D)

static void printQualifier(llvm::raw_ostream &Out, const LangOptions &LangOpts, NestedNameSpecifier *NNS)

static StringRef GetExternalSourceContainer(const NamedDecl *D)

__device__ __2f16 float __ockl_bool s

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

SourceManager & getSourceManager()

CanQualType getCanonicalType(QualType T) const

Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...

const LangOptions & getLangOpts() const

const ObjCInterfaceDecl * getObjContainingInterface(const NamedDecl *ND) const

Returns the Objective-C interface that ND belongs to if it is an Objective-C method/property/ivar etc...

A binding in a decomposition declaration.

This class is used for builtin types like 'int'.

Represents a static or instance method of a struct/union/class.

Represents a C++ struct/union/class.

Declaration of a class template.

Represents a class template specialization, which refers to a class template with a given set of temp...

Complex values, per C99 6.2.5p11.

Declaration of a C++20 concept.

A simple visitor class that helps create declaration visitors.

DeclContext - This is used only as base class of specific decl types that can act as declaration cont...

DeclContext * getParent()

getParent - Returns the containing DeclContext.

Decl - This represents one declaration (or definition), e.g.

const DeclContext * getParentFunctionOrMethod(bool LexicalParent=false) const

If this decl is defined inside a function/method/block it returns the corresponding DeclContext,...

ASTContext & getASTContext() const LLVM_READONLY

ExternalSourceSymbolAttr * getExternalSourceSymbolAttr() const

Looks on this and related declarations for an applicable external source symbol attribute.

SourceLocation getLocation() const

DeclContext * getDeclContext()

SourceLocation getBeginLoc() const LLVM_READONLY

void print(raw_ostream &Out, unsigned Indentation=0, bool PrintInstantiation=false) const

virtual Decl * getCanonicalDecl()

Retrieves the "canonical" declaration of the given declaration.

The name of a declaration.

bool isEmpty() const

Evaluates true when this declaration name is empty.

Represents a qualified type name for which the type name is dependent.

Represents a member of a struct/union/class.

StringRef getName() const

The name of this FileEntry.

Represents a function declaration or definition.

Represents a prototype with parameter type info, e.g.

Declaration of a template function.

StringRef getName() const

Return the actual identifier string.

The injected class name of a C++ class template or class template partial specialization.

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

Represents a linkage specification.

Record the location of a macro definition.

SourceLocation getLocation() const

Retrieve the location of the macro name in the definition.

const IdentifierInfo * getName() const

Retrieve the name of the macro being defined.

Describes a module or submodule.

Module * Parent

The parent of this module.

std::string Name

The name of this module.

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.

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

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

Print this nested name specifier to the given output stream.

NonTypeTemplateParmDecl - Declares a non-type template parameter, e.g., "Size" in.

void AddStructuralValue(const APValue &)

ObjCCategoryDecl - Represents a category declaration.

ObjCInterfaceDecl * getClassInterface()

bool IsClassExtension() const

ObjCCategoryImplDecl - An object of this class encapsulates a category @implementation declaration.

ObjCContainerDecl - Represents a container for method declarations.

const ObjCInterfaceDecl * getClassInterface() const

Represents an ObjC class declaration.

Interfaces are the core concept in Objective-C for object oriented design.

ObjCMethodDecl - Represents an instance or class method declaration.

Represents a pointer to an Objective C object.

Represents a class type in Objective C.

Represents one property declaration in an Objective-C interface.

ObjCPropertyImplDecl - Represents implementation declaration of a property in a class or category imp...

Represents an Objective-C protocol declaration.

Represents a pack expansion of types.

PointerType - C99 6.7.5.1 - Pointer Declarators.

A (possibly-)qualified type.

The collection of all-type qualifiers we support.

An rvalue reference type, per C++11 [dcl.ref].

Base for LValueReferenceType and RValueReferenceType.

Encodes a location in the source.

bool isValid() const

Return true if this is a valid SourceLocation object.

This class handles loading and caching of source files into memory.

Represents the declaration of a struct/union/class/enum.

A template argument list.

unsigned size() const

Retrieve the number of template arguments in this template argument list.

const TemplateArgument & get(unsigned Idx) const

Retrieve the template argument at a given index.

Represents a template argument.

QualType getStructuralValueType() const

Get the type of a StructuralValue.

QualType getAsType() const

Retrieve the type for a type template argument.

llvm::APSInt getAsIntegral() const

Retrieve the template argument as an integral value.

unsigned pack_size() const

The number of template arguments in the given template argument pack.

QualType getIntegralType() const

Retrieve the type of the integral value.

ValueDecl * getAsDecl() const

Retrieve the declaration for a declaration non-type template argument.

ArrayRef< TemplateArgument > pack_elements() const

Iterator range referencing all of the elements of a template argument pack.

@ Declaration

The template argument is a declaration that was provided for a pointer, reference,...

@ Template

The template argument is a template name that was provided for a template template parameter.

@ StructuralValue

The template argument is a non-type template argument that can't be represented by the special-case D...

@ Pack

The template argument is actually a parameter pack.

@ TemplateExpansion

The template argument is a pack expansion of a template name that was provided for a template templat...

@ NullPtr

The template argument is a null pointer or null pointer to member that was provided for a non-type te...

@ Type

The template argument is a type.

@ Null

Represents an empty template argument, e.g., one that has not been deduced.

@ Integral

The template argument is an integral value stored in an llvm::APSInt that was provided for an integra...

@ Expression

The template argument is an expression, and we've not resolved it to one of the other forms yet,...

ArgKind getKind() const

Return the kind of stored template argument.

TemplateName getAsTemplateOrTemplatePattern() const

Retrieve the template argument as a template name; if the argument is a pack expansion,...

const APValue & getAsStructuralValue() const

Get the value of a StructuralValue.

The base class of all kinds of template declarations (e.g., class, function, etc.).

TemplateParameterList * getTemplateParameters() const

Get the list of template parameters.

Represents a C++ template name within the type system.

Stores a list of template parameters for a TemplateDecl and its derived classes.

NamedDecl *const * const_iterator

Iterates through the template parameters in this list.

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

TemplateTemplateParmDecl - Declares a template template parameter, e.g., "T" in.

bool isParameterPack() const

Whether this template template parameter is a template parameter pack.

Declaration of a template type parameter.

QualType getPointeeType() const

If this is a pointer, ObjC object pointer, or block pointer, this returns the respective pointee.

bool isExtVectorType() const

const T * getAs() const

Member-template getAs<specific type>'.

Represents the declaration of a typedef-name via the 'typedef' type specifier.

Base class for declarations which introduce a typedef-name.

Represents a dependent using declaration which was marked with typename.

Represents a dependent using declaration which was not marked with typename.

Represents a C++ using-declaration.

Represents C++ using-directive.

Represents a variable declaration or definition.

Declaration of a variable template.

Represents a variable template specialization, which refers to a variable template with a given set o...

Represents a GCC generic vector type.

const internal::VariadicAllOfMatcher< Attr > attr

Matches attributes.

bool generateFullUSRForTopLevelModuleName(StringRef ModName, raw_ostream &OS)

Generate a USR for a top-level module name, including the USR prefix.

static StringRef getUSRSpacePrefix()

void generateUSRForObjCCategory(StringRef Cls, StringRef Cat, raw_ostream &OS, StringRef ClsExtSymbolDefinedIn="", StringRef CatExtSymbolDefinedIn="")

Generate a USR fragment for an Objective-C class category.

bool generateFullUSRForModule(const Module *Mod, raw_ostream &OS)

Generate a USR for a module, including the USR prefix.

bool generateUSRFragmentForModuleName(StringRef ModName, raw_ostream &OS)

Generate a USR fragment for a module name.

bool generateUSRForMacro(const MacroDefinitionRecord *MD, const SourceManager &SM, SmallVectorImpl< char > &Buf)

Generate a USR for a macro, including the USR prefix.

void generateUSRForObjCProperty(StringRef Prop, bool isClassProp, raw_ostream &OS)

Generate a USR fragment for an Objective-C property.

void generateUSRForEnumConstant(StringRef EnumConstantName, raw_ostream &OS)

Generate a USR fragment for an enum constant.

void generateUSRForObjCIvar(StringRef Ivar, raw_ostream &OS)

Generate a USR fragment for an Objective-C instance variable.

void generateUSRForObjCMethod(StringRef Sel, bool IsInstanceMethod, raw_ostream &OS)

Generate a USR fragment for an Objective-C method.

bool generateUSRForType(QualType T, ASTContext &Ctx, SmallVectorImpl< char > &Buf)

Generates a USR for a type.

void generateUSRForObjCClass(StringRef Cls, raw_ostream &OS, StringRef ExtSymbolDefinedIn="", StringRef CategoryContextExtSymbolDefinedIn="")

Generate a USR fragment for an Objective-C class.

void generateUSRForGlobalEnum(StringRef EnumName, raw_ostream &OS, StringRef ExtSymbolDefinedIn="")

Generate USR fragment for a global (non-nested) enum.

void generateUSRForObjCProtocol(StringRef Prot, raw_ostream &OS, StringRef ExtSymbolDefinedIn="")

Generate a USR fragment for an Objective-C protocol.

bool generateUSRFragmentForModule(const Module *Mod, raw_ostream &OS)

Generate a USR fragment for a module.

bool generateUSRForDecl(const Decl *D, SmallVectorImpl< char > &Buf)

Generate a USR for a Decl, including the USR prefix.

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

@ RQ_None

No ref-qualifier was provided.

@ RQ_LValue

An lvalue ref-qualifier was provided (&).

@ RQ_RValue

An rvalue ref-qualifier was provided (&&).

const FunctionProtoType * T

Represents an explicit template argument list in C++, e.g., the "<int>" in "sort<int>".

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

unsigned SuppressUnwrittenScope

Suppress printing parts of scope specifiers that are never written, e.g., for anonymous namespaces.

unsigned AnonymousTagLocations

When printing an anonymous tag name, also print the location of that entity (e.g.,...

unsigned ConstantArraySizeAsWritten

Whether we should print the sizes of constant array expressions as written in the sources.

unsigned SuppressTagKeyword

Whether type printing should skip printing the tag keyword.


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