Changes in directory llvm/include/llvm/ADT:
DenseMap.h updated: 1.17 -> 1.18 --- Log message: Allow DenseMAp to take an explicit DenseMapKeyInfo --- Diffs of the changes: (+20 -19) DenseMap.h | 39 ++++++++++++++++++++------------------- 1 files changed, 20 insertions(+), 19 deletions(-) Index: llvm/include/llvm/ADT/DenseMap.h diff -u llvm/include/llvm/ADT/DenseMap.h:1.17 llvm/include/llvm/ADT/DenseMap.h:1.18 --- llvm/include/llvm/ADT/DenseMap.h:1.17 Tue Feb 6 18:55:59 2007 +++ llvm/include/llvm/ADT/DenseMap.h Sat Feb 10 00:34:58 2007 @@ -40,12 +40,15 @@ static bool isPod() { return true; } }; -template<typename KeyT, typename ValueT> +template<typename KeyT, typename ValueT, + typename KeyInfoT = DenseMapKeyInfo<KeyT> > class DenseMapIterator; -template<typename KeyT, typename ValueT> +template<typename KeyT, typename ValueT, + typename KeyInfoT = DenseMapKeyInfo<KeyT> > class DenseMapConstIterator; -template<typename KeyT, typename ValueT> +template<typename KeyT, typename ValueT, + typename KeyInfoT = DenseMapKeyInfo<KeyT> > class DenseMap { typedef std::pair<KeyT, ValueT> BucketT; unsigned NumBuckets; @@ -68,21 +71,19 @@ delete[] (char*)Buckets; } - typedef DenseMapIterator<KeyT, ValueT> iterator; - typedef DenseMapConstIterator<KeyT, ValueT> const_iterator; + typedef DenseMapIterator<KeyT, ValueT, KeyInfoT> iterator; + typedef DenseMapConstIterator<KeyT, ValueT, KeyInfoT> const_iterator; inline iterator begin() { - return DenseMapIterator<KeyT, ValueT>(Buckets, Buckets+NumBuckets); + return iterator(Buckets, Buckets+NumBuckets); } inline iterator end() { - return DenseMapIterator<KeyT, ValueT>(Buckets+NumBuckets, - Buckets+NumBuckets); + return iterator(Buckets+NumBuckets, Buckets+NumBuckets); } inline const_iterator begin() const { - return DenseMapConstIterator<KeyT, ValueT>(Buckets, Buckets+NumBuckets); + return const_iterator(Buckets, Buckets+NumBuckets); } inline const_iterator end() const { - return DenseMapConstIterator<KeyT, ValueT>(Buckets+NumBuckets, - Buckets+NumBuckets); + return const_iterator(Buckets+NumBuckets, Buckets+NumBuckets); } bool empty() const { return NumEntries == 0; } @@ -181,13 +182,13 @@ } static unsigned getHashValue(const KeyT &Val) { - return DenseMapKeyInfo<KeyT>::getHashValue(Val); + return KeyInfoT::getHashValue(Val); } static const KeyT getEmptyKey() { - return DenseMapKeyInfo<KeyT>::getEmptyKey(); + return KeyInfoT::getEmptyKey(); } static const KeyT getTombstoneKey() { - return DenseMapKeyInfo<KeyT>::getTombstoneKey(); + return KeyInfoT::getTombstoneKey(); } /// LookupBucketFor - Lookup the appropriate bucket for Val, returning it in @@ -285,7 +286,7 @@ } }; -template<typename KeyT, typename ValueT> +template<typename KeyT, typename ValueT, typename KeyInfoT> class DenseMapIterator { typedef std::pair<KeyT, ValueT> BucketT; protected: @@ -320,16 +321,16 @@ private: void AdvancePastEmptyBuckets() { - const KeyT Empty = DenseMapKeyInfo<KeyT>::getEmptyKey(); - const KeyT Tombstone = DenseMapKeyInfo<KeyT>::getTombstoneKey(); + const KeyT Empty = KeyInfoT::getEmptyKey(); + const KeyT Tombstone = KeyInfoT::getTombstoneKey(); while (Ptr != End && (Ptr->first == Empty || Ptr->first == Tombstone)) ++Ptr; } }; -template<typename KeyT, typename ValueT> -class DenseMapConstIterator : public DenseMapIterator<KeyT, ValueT> { +template<typename KeyT, typename ValueT, typename KeyInfoT> +class DenseMapConstIterator : public DenseMapIterator<KeyT, ValueT, KeyInfoT> { public: DenseMapConstIterator(const std::pair<KeyT, ValueT> *Pos, const std::pair<KeyT, ValueT> *E) _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits