From ccb4f2d813380d8cf139062b8c829e4b8b322c0d Mon Sep 17 00:00:00 2001 From: Andrew Lenharth Date: Mon, 8 Mar 2010 20:45:52 +0000 Subject: [PATCH] Iterator traits and swap. closes PR6548 and PR6549 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97974 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/ADT/DenseMap.h | 7 +++++++ include/llvm/ADT/DenseSet.h | 16 ++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/include/llvm/ADT/DenseMap.h b/include/llvm/ADT/DenseMap.h index 735090627c3..393473bd97b 100644 --- a/include/llvm/ADT/DenseMap.h +++ b/include/llvm/ADT/DenseMap.h @@ -192,6 +192,13 @@ public: return true; } + void swap(DenseMap& RHS) { + std::swap(NumBuckets, RHS.NumBuckets); + std::swap(Buckets, RHS.Buckets); + std::swap(NumEntries, RHS.NumEntries); + std::swap(NumTombstones, RHS.NumTombstones); + } + value_type& FindAndConstruct(const KeyT &Key) { BucketT *TheBucket; if (LookupBucketFor(Key, TheBucket)) diff --git a/include/llvm/ADT/DenseSet.h b/include/llvm/ADT/DenseSet.h index 0898b968aca..938833866fc 100644 --- a/include/llvm/ADT/DenseSet.h +++ b/include/llvm/ADT/DenseSet.h @@ -45,6 +45,10 @@ public: return TheMap.erase(V); } + void swap(DenseSet& RHS) { + TheMap.swap(RHS.TheMap); + } + DenseSet &operator=(const DenseSet &RHS) { TheMap = RHS.TheMap; return *this; @@ -55,6 +59,12 @@ public: class Iterator { typename MapTy::iterator I; public: + typedef typename MapTy::iterator::difference_type difference_type; + typedef ValueT value_type; + typedef value_type *pointer; + typedef value_type &reference; + typedef std::forward_iterator_tag iterator_category; + Iterator(const typename MapTy::iterator &i) : I(i) {} ValueT& operator*() { return I->first; } @@ -68,6 +78,12 @@ public: class ConstIterator { typename MapTy::const_iterator I; public: + typedef typename MapTy::const_iterator::difference_type difference_type; + typedef ValueT value_type; + typedef value_type *pointer; + typedef value_type &reference; + typedef std::forward_iterator_tag iterator_category; + ConstIterator(const typename MapTy::const_iterator &i) : I(i) {} const ValueT& operator*() { return I->first; } -- 2.34.1