Lines Matching refs:DeclarationName
1 //===-- DeclarationName.h - Representation of declaration names -*- C++ -*-===//
10 // This file declares the DeclarationName and DeclarationNameTable classes.
41 /// DeclarationName - The name of a declaration. In the common case,
47 class DeclarationName {
138 DeclarationName(CXXSpecialName *Name)
146 DeclarationName(CXXOperatorIdName *Name)
152 DeclarationName(CXXLiteralOperatorIdName *Name)
159 DeclarationName(uintptr_t Ptr) : Ptr(Ptr) { }
169 /// DeclarationName - Used to create an empty selector.
170 DeclarationName() : Ptr(0) { }
173 DeclarationName(const IdentifierInfo *II)
179 DeclarationName(Selector Sel) : Ptr(Sel.InfoPtr) { }
182 static DeclarationName getUsingDirectiveName();
236 static DeclarationName getFromOpaquePtr(void *P) {
237 DeclarationName N;
242 static DeclarationName getFromOpaqueInteger(uintptr_t P) {
243 DeclarationName N;
286 friend bool operator==(DeclarationName LHS, DeclarationName RHS) {
291 friend bool operator!=(DeclarationName LHS, DeclarationName RHS) {
295 static DeclarationName getEmptyMarker() {
296 return DeclarationName(uintptr_t(-1));
299 static DeclarationName getTombstoneMarker() {
300 return DeclarationName(uintptr_t(-2));
303 static int compare(DeclarationName LHS, DeclarationName RHS);
308 raw_ostream &operator<<(raw_ostream &OS, DeclarationName N);
312 inline bool operator<(DeclarationName LHS, DeclarationName RHS) {
313 return DeclarationName::compare(LHS, RHS) < 0;
318 inline bool operator>(DeclarationName LHS, DeclarationName RHS) {
319 return DeclarationName::compare(LHS, RHS) > 0;
324 inline bool operator<=(DeclarationName LHS, DeclarationName RHS) {
325 return DeclarationName::compare(LHS, RHS) <= 0;
330 inline bool operator>=(DeclarationName LHS, DeclarationName RHS) {
331 return DeclarationName::compare(LHS, RHS) >= 0;
334 /// DeclarationNameTable - Used to store and retrieve DeclarationName
355 DeclarationName getIdentifier(const IdentifierInfo *ID) {
356 return DeclarationName(ID);
361 DeclarationName getCXXConstructorName(CanQualType Ty);
365 DeclarationName getCXXDestructorName(CanQualType Ty);
369 DeclarationName getCXXConversionFunctionName(CanQualType Ty);
374 DeclarationName getCXXSpecialName(DeclarationName::NameKind Kind,
379 DeclarationName getCXXOperatorName(OverloadedOperatorKind Op);
383 DeclarationName getCXXLiteralOperatorName(IdentifierInfo *II);
387 /// for a declaration name. Needs a DeclarationName in order
421 DeclarationNameLoc(DeclarationName Name);
428 /// a DeclarationName and the correspnding source/type location info.
432 DeclarationName Name;
442 DeclarationNameInfo(DeclarationName Name, SourceLocation NameLoc)
445 DeclarationNameInfo(DeclarationName Name, SourceLocation NameLoc,
450 DeclarationName getName() const { return Name; }
452 void setName(DeclarationName N) { Name = N; }
466 assert(Name.getNameKind() == DeclarationName::CXXConstructorName ||
467 Name.getNameKind() == DeclarationName::CXXDestructorName ||
468 Name.getNameKind() == DeclarationName::CXXConversionFunctionName);
474 assert(Name.getNameKind() == DeclarationName::CXXConstructorName ||
475 Name.getNameKind() == DeclarationName::CXXDestructorName ||
476 Name.getNameKind() == DeclarationName::CXXConversionFunctionName);
483 assert(Name.getNameKind() == DeclarationName::CXXOperatorName);
492 assert(Name.getNameKind() == DeclarationName::CXXOperatorName);
501 assert(Name.getNameKind() == DeclarationName::CXXLiteralOperatorName);
509 assert(Name.getNameKind() == DeclarationName::CXXLiteralOperatorName);
543 /// Insertion operator for diagnostics. This allows sending DeclarationName's
546 DeclarationName N) {
553 /// DeclarationName's into a partial diagnostic with <<.
555 DeclarationName N) {
573 struct DenseMapInfo<clang::DeclarationName> {
574 static inline clang::DeclarationName getEmptyKey() {
575 return clang::DeclarationName::getEmptyMarker();
578 static inline clang::DeclarationName getTombstoneKey() {
579 return clang::DeclarationName::getTombstoneMarker();
582 static unsigned getHashValue(clang::DeclarationName Name) {
587 isEqual(clang::DeclarationName LHS, clang::DeclarationName RHS) {
593 struct isPodLike<clang::DeclarationName> { static const bool value = true; };