diff options
author | Chandler Carruth <chandlerc@gmail.com> | 2014-04-24 05:33:53 +0000 |
---|---|---|
committer | Chandler Carruth <chandlerc@gmail.com> | 2014-04-24 05:33:53 +0000 |
commit | a3211b5dca8f27fd7f54cc53780dfdf0ae6d8301 (patch) | |
tree | 9c7e633ea8bf758a15ae80202564412c2152c3d5 /llvm | |
parent | 568dacc4aa018a2ea4e284c903ebdc2340bd20bc (diff) | |
download | bcm5719-llvm-a3211b5dca8f27fd7f54cc53780dfdf0ae6d8301.tar.gz bcm5719-llvm-a3211b5dca8f27fd7f54cc53780dfdf0ae6d8301.zip |
Use the shiny new iterator adaptor tool to implement the
value_op_iterator.
llvm-svn: 207078
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/include/llvm/IR/User.h | 61 |
1 files changed, 7 insertions, 54 deletions
diff --git a/llvm/include/llvm/IR/User.h b/llvm/include/llvm/IR/User.h index 66442e82df0..453b6ad1699 100644 --- a/llvm/include/llvm/IR/User.h +++ b/llvm/include/llvm/IR/User.h @@ -19,6 +19,7 @@ #ifndef LLVM_IR_USER_H #define LLVM_IR_USER_H +#include "llvm/ADT/iterator.h" #include "llvm/ADT/iterator_range.h" #include "llvm/IR/Value.h" #include "llvm/Support/ErrorHandling.h" @@ -129,61 +130,13 @@ public: /// Convenience iterator for directly iterating over the Values in the /// OperandList - class value_op_iterator - : public std::iterator<std::random_access_iterator_tag, Value *, - ptrdiff_t, Value *, Value *> { - op_iterator OI; - public: - explicit value_op_iterator(Use *U = nullptr) : OI(U) {} - - bool operator==(const value_op_iterator &x) const { - return OI == x.OI; - } - bool operator!=(const value_op_iterator &x) const { - return !operator==(x); - } - - value_op_iterator &operator+=(ptrdiff_t n) { - OI += n; - return *this; - } - value_op_iterator &operator-=(ptrdiff_t n) { - OI -= n; - return *this; - } - value_op_iterator operator+(ptrdiff_t n) const { - return value_op_iterator(OI + n); - } - friend value_op_iterator operator+(ptrdiff_t n, - const value_op_iterator &i) { - return i + n; - } - value_op_iterator operator-(ptrdiff_t n) const { - return value_op_iterator(OI - n); - } - ptrdiff_t operator-(const value_op_iterator &RHS) const { - return OI - RHS.OI; - } - bool operator<(const value_op_iterator &RHS) const { return OI < RHS.OI; } - bool operator>(const value_op_iterator &RHS) const { return OI > RHS.OI; } - bool operator<=(const value_op_iterator &RHS) const { return OI <= RHS.OI; } - bool operator>=(const value_op_iterator &RHS) const { return OI >= RHS.OI; } - value_op_iterator &operator++() { return *this += 1; } - value_op_iterator &operator--() { return *this -= 1; } - value_op_iterator operator++(int) { - value_op_iterator tmp = *this; - ++*this; - return tmp; - } - value_op_iterator operator--(int) { - value_op_iterator tmp = *this; - --*this; - return tmp; - } - - Value *operator*() const { return *OI; } + struct value_op_iterator + : iterator_adaptor_base<value_op_iterator, op_iterator, Value *, Value *, + Value *> { + explicit value_op_iterator(Use *U = nullptr) : iterator_adaptor_base(U) {} + + Value *operator*() const { return *I; } Value *operator->() const { return operator*(); } - Value *operator[](ptrdiff_t n) const { return *(*this + n); } }; inline value_op_iterator value_op_begin() { |