Alternate implementation of ChooseTwoLevelIterator. More...
#include <TwoLevelIteratorA.h>
Public Types | |
| typedef TwoLevelIteratorA::iterator_adaptor_::difference_type | difference_type |
Public Member Functions | |
| TwoLevelIteratorA () | |
| TwoLevelIteratorA (OuterIter outer_begin, OuterIter outer_end, OuterIter outer, InnerBeginFn inner_begin_fn, InnerEndFn inner_end_fn) | |
Private Member Functions | |
| void | seek_forward () |
| Update base iterator to beginning of first non-empty inner range after current one. | |
| template<class Iter > | |
| void | safe_decrement_dispatch (std::forward_iterator_tag, Iter &it, Iter begin) |
| template<class Iter > | |
| void | safe_decrement_dispatch (std::bidirectional_iterator_tag, Iter &it, const Iter &begin) |
| template<class Iter > | |
| bool | safe_decrement (Iter &it, const Iter &begin) |
| Decrement iterator or return true if it == begin. | |
| template<class Iter > | |
| std::iterator_traits< Iter > ::difference_type | safe_difference_dispatch (Iter it1, Iter it2, Iter end, std::input_iterator_tag) const |
| template<class Iter > | |
| std::iterator_traits< Iter > ::difference_type | safe_difference_dispatch (Iter it1, Iter it2, Iter end, std::random_access_iterator_tag) const |
| template<class Iter > | |
| std::iterator_traits< Iter > ::difference_type | safe_distance (Iter it1, Iter it2, Iter end) const |
| Returns correct distances even for forward iterators when it2 is not reachable from it1. | |
| void | seek_backward () |
| Update base iterator to end of first non-empty inner range before current one. | |
| void | increment () |
| void | decrement () |
| template<class DiffType = difference_type> | |
| void | advance_dispatch (DiffType n, std::input_iterator_tag) |
| template<class DiffType = difference_type> | |
| void | jump_forward (DiffType n) |
| template<class DiffType = difference_type> | |
| void | jump_backward (DiffType n) |
| template<class DiffType = difference_type> | |
| void | advance_dispatch (DiffType n, std::random_access_iterator_tag) |
| void | advance (difference_type n) |
| template<class Other > | |
| difference_type | distance_to_dispatch (Other it2, std::input_iterator_tag) const |
| template<class Other > | |
| difference_type | distance_to_dispatch (const Other &x, std::random_access_iterator_tag) const |
| template<class OtherOuterIter , class OtherInnerIter , class C , class BF , class EF > | |
| difference_type | distance_to (const TwoLevelIteratorA< OtherOuterIter, OtherInnerIter, C, BF, EF > &x) const |
| template<class OtherOuterIter , class OtherInnerIter , class C , class BF , class EF > | |
| bool | equal (const TwoLevelIteratorA< OtherOuterIter, OtherInnerIter, C, BF, EF > &x) const |
Private Attributes | |
| OuterIter | m_outer_begin |
| OuterIter | m_outer_end |
| OuterIter | m_outer |
| InnerBeginFn | m_inner_begin_fn |
| InnerEndFn | m_inner_end_fn |
Friends | |
| class | boost::iterator_core_access |
Alternate implementation of ChooseTwoLevelIterator.
| typedef TwoLevelIteratorA::iterator_adaptor_::difference_type Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::difference_type |
| Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::TwoLevelIteratorA | ( | ) | [inline] |
| Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::TwoLevelIteratorA | ( | OuterIter | outer_begin, | |
| OuterIter | outer_end, | |||
| OuterIter | outer, | |||
| InnerBeginFn | inner_begin_fn, | |||
| InnerEndFn | inner_end_fn | |||
| ) | [inline] |
| void Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::advance | ( | difference_type | n | ) | [inline, private] |
| void Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::advance_dispatch | ( | DiffType | n, | |
| std::random_access_iterator_tag | ||||
| ) | [inline, private] |
| void Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::advance_dispatch | ( | DiffType | n, | |
| std::input_iterator_tag | ||||
| ) | [inline, private] |
| void Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::decrement | ( | ) | [inline, private] |
| difference_type Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::distance_to | ( | const TwoLevelIteratorA< OtherOuterIter, OtherInnerIter, C, BF, EF > & | x | ) | const [inline, private] |
| difference_type Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::distance_to_dispatch | ( | const Other & | x, | |
| std::random_access_iterator_tag | ||||
| ) | const [inline, private] |
| difference_type Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::distance_to_dispatch | ( | Other | it2, | |
| std::input_iterator_tag | ||||
| ) | const [inline, private] |
| bool Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::equal | ( | const TwoLevelIteratorA< OtherOuterIter, OtherInnerIter, C, BF, EF > & | x | ) | const [inline, private] |
| void Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::increment | ( | ) | [inline, private] |
| void Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::jump_backward | ( | DiffType | n | ) | [inline, private] |
| void Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::jump_forward | ( | DiffType | n | ) | [inline, private] |
| bool Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::safe_decrement | ( | Iter & | it, | |
| const Iter & | begin | |||
| ) | [inline, private] |
Decrement iterator or return true if it == begin.
| void Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::safe_decrement_dispatch | ( | std::bidirectional_iterator_tag | , | |
| Iter & | it, | |||
| const Iter & | begin | |||
| ) | [inline, private] |
| void Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::safe_decrement_dispatch | ( | std::forward_iterator_tag | , | |
| Iter & | it, | |||
| Iter | begin | |||
| ) | [inline, private] |
| std::iterator_traits<Iter>::difference_type Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::safe_difference_dispatch | ( | Iter | it1, | |
| Iter | it2, | |||
| Iter | end, | |||
| std::random_access_iterator_tag | ||||
| ) | const [inline, private] |
| std::iterator_traits<Iter>::difference_type Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::safe_difference_dispatch | ( | Iter | it1, | |
| Iter | it2, | |||
| Iter | end, | |||
| std::input_iterator_tag | ||||
| ) | const [inline, private] |
| std::iterator_traits<Iter>::difference_type Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::safe_distance | ( | Iter | it1, | |
| Iter | it2, | |||
| Iter | end | |||
| ) | const [inline, private] |
Returns correct distances even for forward iterators when it2 is not reachable from it1.
| void Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::seek_backward | ( | ) | [inline, private] |
Update base iterator to end of first non-empty inner range before current one.
Also update outer iterators appropriately.
| void Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::seek_forward | ( | ) | [inline, private] |
Update base iterator to beginning of first non-empty inner range after current one.
Also update outer iterators appropriately.
friend class boost::iterator_core_access [friend] |
InnerBeginFn Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::m_inner_begin_fn [private] |
InnerEndFn Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::m_inner_end_fn [private] |
OuterIter Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::m_outer [private] |
OuterIter Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::m_outer_begin [private] |
OuterIter Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::m_outer_end [private] |
1.6.1