Add convenient std::string helpers to StringMap. Patch by Mikhail Glushenkov!
llvm-svn: 46625
This commit is contained in:
parent
2820b9c893
commit
d47eedb7e9
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
#include "llvm/Support/Allocator.h"
|
#include "llvm/Support/Allocator.h"
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
namespace llvm {
|
namespace llvm {
|
||||||
template<typename ValueT>
|
template<typename ValueT>
|
||||||
|
@ -268,24 +269,36 @@ public:
|
||||||
if (Bucket == -1) return end();
|
if (Bucket == -1) return end();
|
||||||
return iterator(TheTable+Bucket);
|
return iterator(TheTable+Bucket);
|
||||||
}
|
}
|
||||||
|
iterator find(const char *Key) {
|
||||||
|
return find(Key, Key + strlen(Key));
|
||||||
|
}
|
||||||
|
iterator find(const std::string &Key) {
|
||||||
|
const char* key_start = &Key[0];
|
||||||
|
return find(key_start, key_start + Key.size());
|
||||||
|
}
|
||||||
|
|
||||||
const_iterator find(const char *KeyStart, const char *KeyEnd) const {
|
const_iterator find(const char *KeyStart, const char *KeyEnd) const {
|
||||||
int Bucket = FindKey(KeyStart, KeyEnd);
|
int Bucket = FindKey(KeyStart, KeyEnd);
|
||||||
if (Bucket == -1) return end();
|
if (Bucket == -1) return end();
|
||||||
return const_iterator(TheTable+Bucket);
|
return const_iterator(TheTable+Bucket);
|
||||||
}
|
}
|
||||||
|
|
||||||
iterator find(const char *Key) {
|
|
||||||
return find(Key, Key + strlen(Key));
|
|
||||||
}
|
|
||||||
const_iterator find(const char *Key) const {
|
const_iterator find(const char *Key) const {
|
||||||
return find(Key, Key + strlen(Key));
|
return find(Key, Key + strlen(Key));
|
||||||
}
|
}
|
||||||
|
const_iterator find(const std::string &Key) const {
|
||||||
|
const char* key_start = &Key[0];
|
||||||
|
return find(key_start, key_start + Key.size());
|
||||||
|
}
|
||||||
|
|
||||||
ValueTy& operator[](const char *Key) {
|
ValueTy& operator[](const char *Key) {
|
||||||
value_type& entry = GetOrCreateValue(Key, Key + strlen(Key));
|
value_type& entry = GetOrCreateValue(Key, Key + strlen(Key));
|
||||||
return entry.getValue();
|
return entry.getValue();
|
||||||
}
|
}
|
||||||
|
ValueTy& operator[](const std::string &Key) {
|
||||||
|
const char* key_start = &Key[0];
|
||||||
|
value_type& entry = GetOrCreateValue(key_start, key_start + Key.size());
|
||||||
|
return entry.getValue();
|
||||||
|
}
|
||||||
|
|
||||||
size_type count(const char *KeyStart, const char *KeyEnd) const {
|
size_type count(const char *KeyStart, const char *KeyEnd) const {
|
||||||
return find(KeyStart, KeyEnd) == end() ? 0 : 1;
|
return find(KeyStart, KeyEnd) == end() ? 0 : 1;
|
||||||
|
@ -293,6 +306,10 @@ public:
|
||||||
size_type count(const char *Key) const {
|
size_type count(const char *Key) const {
|
||||||
return count(Key, Key + strlen(Key));
|
return count(Key, Key + strlen(Key));
|
||||||
}
|
}
|
||||||
|
size_type count(const std::string &Key) const {
|
||||||
|
const char* key_start = &Key[0];
|
||||||
|
return count(key_start, key_start + Key.size());
|
||||||
|
}
|
||||||
|
|
||||||
/// insert - Insert the specified key/value pair into the map. If the key
|
/// insert - Insert the specified key/value pair into the map. If the key
|
||||||
/// already exists in the map, return false and ignore the request, otherwise
|
/// already exists in the map, return false and ignore the request, otherwise
|
||||||
|
|
Loading…
Reference in New Issue