Lines Matching full:identifierinfo
10 // This file defines the IdentifierInfo, IdentifierTable, and Selector
36 class IdentifierInfo;
43 typedef std::pair<IdentifierInfo*, SourceLocation> IdentifierLocPair;
46 /// IdentifierInfo - One of these records is kept for each identifier that
51 class IdentifierInfo {
71 llvm::StringMapEntry<IdentifierInfo*> *Entry;
73 IdentifierInfo(const IdentifierInfo&); // NONCOPYABLE.
74 void operator=(const IdentifierInfo&); // NONASSIGNABLE.
79 IdentifierInfo();
97 // std::pair<IdentifierInfo, const char*>, where internal pointer
99 typedef std::pair<IdentifierInfo, const char*> actualtype;
110 // std::pair<IdentifierInfo, const char*>, where internal pointer
112 typedef std::pair<IdentifierInfo, const char*> actualtype;
278 IdentifierInfo *const II;
281 PoisonIdentifierRAIIObject(IdentifierInfo *II, bool NewValue)
331 /// of a reference. If the pointer is NULL then the IdentifierInfo cannot
333 virtual IdentifierInfo* get(StringRef Name) = 0;
341 /// IdentifierInfo objects for each.
350 /// IdentifierInfo pointers.
358 virtual IdentifierInfo *GetIdentifier(unsigned ID) = 0;
362 /// IdentifierInfo nodes. It has no other purpose, but this is an
368 typedef llvm::StringMap<IdentifierInfo*, llvm::BumpPtrAllocator> HashTableTy;
395 IdentifierInfo &get(StringRef Name) {
396 llvm::StringMapEntry<IdentifierInfo*> &Entry =
399 IdentifierInfo *II = Entry.getValue();
412 // Lookups failed, make a new IdentifierInfo.
413 void *Mem = getAllocator().Allocate<IdentifierInfo>();
414 II = new (Mem) IdentifierInfo();
417 // Make sure getName() knows how to find the IdentifierInfo
424 IdentifierInfo &get(StringRef Name, tok::TokenKind TokenCode) {
425 IdentifierInfo &II = get(Name);
431 /// \brief Gets an IdentifierInfo for the given name without consulting
437 IdentifierInfo &getOwn(StringRef Name) {
438 llvm::StringMapEntry<IdentifierInfo*> &Entry =
441 IdentifierInfo *II = Entry.getValue();
444 // Lookups failed, make a new IdentifierInfo.
445 void *Mem = getAllocator().Allocate<IdentifierInfo>();
446 II = new (Mem) IdentifierInfo();
449 // Make sure getName() knows how to find the IdentifierInfo
523 /// method names. This class will either point to an IdentifierInfo or a
536 uintptr_t InfoPtr; // a pointer to the MultiKeywordSelector or IdentifierInfo.
538 Selector(IdentifierInfo *II, unsigned nArgs) {
540 assert((InfoPtr & ArgFlags) == 0 &&"Insufficiently aligned IdentifierInfo");
546 assert((InfoPtr & ArgFlags) == 0 &&"Insufficiently aligned IdentifierInfo");
549 IdentifierInfo *getAsIdentifierInfo() const {
551 return reinterpret_cast<IdentifierInfo *>(InfoPtr & ~ArgFlags);
606 IdentifierInfo *getIdentifierInfoForSlot(unsigned argIndex) const;
648 Selector getSelector(unsigned NumArgs, IdentifierInfo **IIV);
650 Selector getUnarySelector(IdentifierInfo *ID) {
653 Selector getNullarySelector(IdentifierInfo *ID) {
665 const IdentifierInfo *Name) {
670 IdentifierInfo *SetterName = &Idents.get(SelectorName);
743 // Provide PointerLikeTypeTraits for IdentifierInfo pointers, which
746 class PointerLikeTypeTraits<clang::IdentifierInfo*> {
748 static inline void *getAsVoidPointer(clang::IdentifierInfo* P) {
751 static inline clang::IdentifierInfo *getFromVoidPointer(void *P) {
752 return static_cast<clang::IdentifierInfo*>(P);
758 class PointerLikeTypeTraits<const clang::IdentifierInfo*> {
760 static inline const void *getAsVoidPointer(const clang::IdentifierInfo* P) {
763 static inline const clang::IdentifierInfo *getFromVoidPointer(const void *P) {
764 return static_cast<const clang::IdentifierInfo*>(P);