Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn > Class Template Reference

Alternate implementation of ChooseTwoLevelIterator. More...

#include <TwoLevelIteratorA.h>

List of all members.

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

Detailed Description

template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
class Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >

Alternate implementation of ChooseTwoLevelIterator.


Member Typedef Documentation

template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
typedef TwoLevelIteratorA::iterator_adaptor_::difference_type Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::difference_type

Constructor & Destructor Documentation

template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::TwoLevelIteratorA (  )  [inline]
template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
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]

Member Function Documentation

template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
void Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::advance ( difference_type  n  )  [inline, private]
template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
template<class DiffType = difference_type>
void Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::advance_dispatch ( DiffType  n,
std::random_access_iterator_tag   
) [inline, private]
template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
template<class DiffType = difference_type>
void Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::advance_dispatch ( DiffType  n,
std::input_iterator_tag   
) [inline, private]
template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
void Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::decrement (  )  [inline, private]
template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
template<class OtherOuterIter , class OtherInnerIter , class C , class BF , class EF >
difference_type Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::distance_to ( const TwoLevelIteratorA< OtherOuterIter, OtherInnerIter, C, BF, EF > &  x  )  const [inline, private]
template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
template<class Other >
difference_type Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::distance_to_dispatch ( const Other &  x,
std::random_access_iterator_tag   
) const [inline, private]
template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
template<class Other >
difference_type Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::distance_to_dispatch ( Other  it2,
std::input_iterator_tag   
) const [inline, private]
template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
template<class OtherOuterIter , class OtherInnerIter , class C , class BF , class EF >
bool Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::equal ( const TwoLevelIteratorA< OtherOuterIter, OtherInnerIter, C, BF, EF > &  x  )  const [inline, private]
template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
void Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::increment (  )  [inline, private]
template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
template<class DiffType = difference_type>
void Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::jump_backward ( DiffType  n  )  [inline, private]
template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
template<class DiffType = difference_type>
void Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::jump_forward ( DiffType  n  )  [inline, private]
template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
template<class Iter >
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.

template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
template<class Iter >
void Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::safe_decrement_dispatch ( std::bidirectional_iterator_tag  ,
Iter &  it,
const Iter &  begin 
) [inline, private]
template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
template<class Iter >
void Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::safe_decrement_dispatch ( std::forward_iterator_tag  ,
Iter &  it,
Iter  begin 
) [inline, private]
template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
template<class Iter >
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]
template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
template<class Iter >
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]
template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
template<class Iter >
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.

template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
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.

template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
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.


Friends And Related Function Documentation

template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
friend class boost::iterator_core_access [friend]

Member Data Documentation

template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
InnerBeginFn Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::m_inner_begin_fn [private]
template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
InnerEndFn Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::m_inner_end_fn [private]
template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
OuterIter Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::m_outer [private]
template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
OuterIter Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::m_outer_begin [private]
template<class OuterIter, class InnerIter, class CategoryOrTraversal, class InnerBeginFn, class InnerEndFn>
OuterIter Galois::TwoLevelIteratorA< OuterIter, InnerIter, CategoryOrTraversal, InnerBeginFn, InnerEndFn >::m_outer_end [private]

The documentation for this class was generated from the following file:

Generated on 2 Nov 2013 for Galois by  doxygen 1.6.1