Skip to content

Commit 6fdd777

Browse files
committed
Merge 97974 from mainline.
Iterator traits and swap. closes PR6548 and PR6549 llvm-svn: 98312
1 parent c268488 commit 6fdd777

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

llvm/include/llvm/ADT/DenseMap.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,13 @@ class DenseMap {
192192
return true;
193193
}
194194

195+
void swap(DenseMap& RHS) {
196+
std::swap(NumBuckets, RHS.NumBuckets);
197+
std::swap(Buckets, RHS.Buckets);
198+
std::swap(NumEntries, RHS.NumEntries);
199+
std::swap(NumTombstones, RHS.NumTombstones);
200+
}
201+
195202
value_type& FindAndConstruct(const KeyT &Key) {
196203
BucketT *TheBucket;
197204
if (LookupBucketFor(Key, TheBucket))

llvm/include/llvm/ADT/DenseSet.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ class DenseSet {
4545
return TheMap.erase(V);
4646
}
4747

48+
void swap(DenseSet& RHS) {
49+
TheMap.swap(RHS.TheMap);
50+
}
51+
4852
DenseSet &operator=(const DenseSet &RHS) {
4953
TheMap = RHS.TheMap;
5054
return *this;
@@ -55,6 +59,12 @@ class DenseSet {
5559
class Iterator {
5660
typename MapTy::iterator I;
5761
public:
62+
typedef typename MapTy::iterator::difference_type difference_type;
63+
typedef ValueT value_type;
64+
typedef value_type *pointer;
65+
typedef value_type &reference;
66+
typedef std::forward_iterator_tag iterator_category;
67+
5868
Iterator(const typename MapTy::iterator &i) : I(i) {}
5969

6070
ValueT& operator*() { return I->first; }
@@ -68,6 +78,12 @@ class DenseSet {
6878
class ConstIterator {
6979
typename MapTy::const_iterator I;
7080
public:
81+
typedef typename MapTy::const_iterator::difference_type difference_type;
82+
typedef ValueT value_type;
83+
typedef value_type *pointer;
84+
typedef value_type &reference;
85+
typedef std::forward_iterator_tag iterator_category;
86+
7187
ConstIterator(const typename MapTy::const_iterator &i) : I(i) {}
7288

7389
const ValueT& operator*() { return I->first; }

0 commit comments

Comments
 (0)