Add range insert method for DenseSet and define DenseMapInfo for chars.

Patch by Kevin Fan!

llvm-svn: 68239
This commit is contained in:
Chris Lattner 2009-04-01 19:50:49 +00:00
parent c2d5618083
commit 807a0f207d
2 changed files with 18 additions and 0 deletions

View File

@ -51,6 +51,17 @@ struct DenseMapInfo<T*> {
static bool isPod() { return true; }
};
// Provide DenseMapInfo for chars.
template<> struct DenseMapInfo<char> {
static inline char getEmptyKey() { return ~0; }
static inline char getTombstoneKey() { return ~0 - 1; }
static unsigned getHashValue(const char& Val) { return Val * 37; }
static bool isPod() { return true; }
static bool isEqual(const char &LHS, const char &RHS) {
return LHS == RHS;
}
};
// Provide DenseMapInfo for unsigned ints.
template<> struct DenseMapInfo<unsigned> {
static inline unsigned getEmptyKey() { return ~0; }

View File

@ -90,6 +90,13 @@ public:
std::pair<iterator, bool> insert(const ValueT &V) {
return TheMap.insert(std::make_pair(V, 0));
}
// Range insertion of values.
template<typename InputIt>
void insert(InputIt I, InputIt E) {
for (; I != E; ++I)
insert(*I);
}
};
} // end namespace llvm