summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
Diffstat (limited to 'clang')
-rw-r--r--clang/include/clang/AST/StmtOpenMP.h37
1 files changed, 12 insertions, 25 deletions
diff --git a/clang/include/clang/AST/StmtOpenMP.h b/clang/include/clang/AST/StmtOpenMP.h
index 7e6fb46cfbb..5c1cda8116c 100644
--- a/clang/include/clang/AST/StmtOpenMP.h
+++ b/clang/include/clang/AST/StmtOpenMP.h
@@ -95,48 +95,35 @@ public:
/// This iterator visits only clauses of type SpecificClause.
template <typename SpecificClause>
class specific_clause_iterator
- : public std::iterator<std::forward_iterator_tag, const SpecificClause *,
- ptrdiff_t, const SpecificClause *,
- const SpecificClause *> {
- ArrayRef<OMPClause *>::const_iterator Current;
+ : public llvm::iterator_adaptor_base<
+ specific_clause_iterator<SpecificClause>,
+ ArrayRef<OMPClause *>::const_iterator, std::forward_iterator_tag,
+ const SpecificClause *, ptrdiff_t, const SpecificClause *,
+ const SpecificClause *> {
ArrayRef<OMPClause *>::const_iterator End;
void SkipToNextClause() {
- while (Current != End && !isa<SpecificClause>(*Current))
- ++Current;
+ while (this->I != End && !isa<SpecificClause>(*this->I))
+ ++this->I;
}
public:
explicit specific_clause_iterator(ArrayRef<OMPClause *> Clauses)
- : Current(Clauses.begin()), End(Clauses.end()) {
+ : specific_clause_iterator::iterator_adaptor_base(Clauses.begin()),
+ End(Clauses.end()) {
SkipToNextClause();
}
const SpecificClause *operator*() const {
- return cast<SpecificClause>(*Current);
- }
- const SpecificClause *operator->() const {
- return cast<SpecificClause>(*Current);
+ return cast<SpecificClause>(*this->I);
}
+ const SpecificClause *operator->() const { return **this; }
specific_clause_iterator &operator++() {
- ++Current;
+ ++this->I;
SkipToNextClause();
return *this;
}
- specific_clause_iterator operator++(int) {
- specific_clause_iterator tmp(*this);
- ++(*this);
- return tmp;
- }
-
- bool operator==(const specific_clause_iterator &RHS) const {
- assert(End == RHS.End && "Comparing iterators of different directives!");
- return Current == RHS.Current;
- }
- bool operator!=(const specific_clause_iterator &RHS) const {
- return !(*this == RHS);
- }
};
template <typename SpecificClause>
OpenPOWER on IntegriCloud