summaryrefslogtreecommitdiffstats
path: root/include/clang/Basic/IdentifierTable.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/clang/Basic/IdentifierTable.h')
-rw-r--r--include/clang/Basic/IdentifierTable.h29
1 files changed, 15 insertions, 14 deletions
diff --git a/include/clang/Basic/IdentifierTable.h b/include/clang/Basic/IdentifierTable.h
index 75a7b81..582d59c 100644
--- a/include/clang/Basic/IdentifierTable.h
+++ b/include/clang/Basic/IdentifierTable.h
@@ -18,6 +18,7 @@
#include "clang/Basic/OperatorKinds.h"
#include "clang/Basic/TokenKinds.h"
#include "llvm/ADT/StringMap.h"
+#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/OwningPtr.h"
#include "llvm/Support/PointerLikeTypeTraits.h"
@@ -236,9 +237,7 @@ public:
/// Unlike the version in IdentifierTable, this returns a pointer instead
/// of a reference. If the pointer is NULL then the IdentifierInfo cannot
/// be found.
- //
- // FIXME: Move to StringRef API.
- virtual IdentifierInfo* get(const char *NameStart, const char *NameEnd) = 0;
+ virtual IdentifierInfo* get(llvm::StringRef Name) = 0;
};
/// \brief An abstract class used to resolve numerical identifier
@@ -283,16 +282,16 @@ public:
/// get - Return the identifier token info for the specified named identifier.
///
- IdentifierInfo &get(const char *NameStart, const char *NameEnd) {
+ IdentifierInfo &get(llvm::StringRef Name) {
llvm::StringMapEntry<IdentifierInfo*> &Entry =
- HashTable.GetOrCreateValue(NameStart, NameEnd);
+ HashTable.GetOrCreateValue(Name);
IdentifierInfo *II = Entry.getValue();
if (II) return *II;
// No entry; if we have an external lookup, look there first.
if (ExternalLookup) {
- II = ExternalLookup->get(NameStart, NameEnd);
+ II = ExternalLookup->get(Name);
if (II) {
// Cache in the StringMap for subsequent lookups.
Entry.setValue(II);
@@ -312,6 +311,14 @@ public:
return *II;
}
+ IdentifierInfo &get(const char *NameStart, const char *NameEnd) {
+ return get(llvm::StringRef(NameStart, NameEnd-NameStart));
+ }
+
+ IdentifierInfo &get(const char *Name, size_t NameLen) {
+ return get(llvm::StringRef(Name, NameLen));
+ }
+
/// \brief Creates a new IdentifierInfo from the given string.
///
/// This is a lower-level version of get() that requires that this
@@ -343,10 +350,6 @@ public:
return CreateIdentifierInfo(Name.begin(), Name.end());
}
- IdentifierInfo &get(llvm::StringRef Name) {
- return get(Name.begin(), Name.end());
- }
-
typedef HashTableTy::const_iterator iterator;
typedef HashTableTy::const_iterator const_iterator;
@@ -474,9 +477,7 @@ public:
SelectorName = "set";
SelectorName += Name->getName();
SelectorName[3] = toupper(SelectorName[3]);
- IdentifierInfo *SetterName =
- &Idents.get(SelectorName.data(),
- SelectorName.data() + SelectorName.size());
+ IdentifierInfo *SetterName = &Idents.get(SelectorName);
return SelTable.getUnarySelector(SetterName);
}
};
@@ -533,7 +534,7 @@ struct DenseMapInfo<clang::Selector> {
return LHS == RHS;
}
};
-
+
template <>
struct isPodLike<clang::Selector> { static const bool value = true; };
OpenPOWER on IntegriCloud