13 #ifndef STXXL_CONTAINERS_BTREE_ITERATOR_HEADER
14 #define STXXL_CONTAINERS_BTREE_ITERATOR_HEADER
25 template <
class BTreeType>
27 template <
class BTreeType>
29 template <
class BTreeType>
31 template <
class KeyType,
class DataType,
class KeyCmp,
32 unsigned LogNElem,
class BTreeType>
35 template <
class BTreeType>
40 typedef typename btree_type::leaf_bid_type
bid_type;
50 template <
class KeyType,
class DataType,
51 class KeyCmp,
unsigned LogNElem,
class AnyBTreeType>
54 template <
class AnyBTreeType>
57 template <
class AnyBTreeType>
75 :
btree(_btree), bid(_bid), pos(_pos)
77 STXXL_VERBOSE3(
"btree_iterator_base parameter construct addr=" <<
this);
89 STXXL_VERBOSE3(
"btree_iterator_base constr from" << (&obj) <<
" to " <<
this);
99 STXXL_VERBOSE3(
"btree_iterator_base copy from" << (&obj) <<
" to " <<
this);
146 leaf->increment_iterator(*
this);
157 leaf->decrement_iterator(*
this);
171 template <
class BTreeType>
172 class btree_iterator :
public btree_iterator_base<BTreeType>
176 typedef typename btree_type::leaf_bid_type
bid_type;
184 template <
class KeyType,
class DataType,
185 class KeyCmp,
unsigned LogNElem,
class AnyBTreeType>
188 using base_type::non_const_access;
200 base_type::operator = (obj);
206 return non_const_access();
211 return &(non_const_access());
226 assert(*
this != base_type::btree->end());
227 base_type::increment();
233 base_type::decrement();
239 assert(*
this != base_type::btree->end());
241 base_type::increment();
248 base_type::decrement();
260 template <
class BTreeType>
261 class btree_const_iterator :
public btree_iterator_base<BTreeType>
267 typedef typename btree_type::leaf_bid_type
bid_type;
270 typedef typename btree_type::const_pointer
pointer;
274 template <
class KeyType,
class DataType,
275 class KeyCmp,
unsigned LogNElem,
class AnyBTreeType>
278 using base_type::const_access;
294 base_type::operator = (obj);
300 return const_access();
305 return &(const_access());
330 assert(*
this != base_type::btree->end());
331 base_type::increment();
337 base_type::decrement();
343 assert(*
this != base_type::btree->end());
345 base_type::increment();
352 base_type::decrement();
364 template <
class BTreeType>
368 return a.btree_iterator_base<BTreeType>::operator == (b);
371 template <
class BTreeType>
375 return a.btree_iterator_base<BTreeType>::operator != (b);
382 #endif // !STXXL_CONTAINERS_BTREE_ITERATOR_HEADER
btree_type::const_pointer pointer
btree_type::pointer pointer
iterator_map_type m_iterator_map
btree_type::reference reference
btree_type::value_type value_type
leaf_cache_type m_leaf_cache
node_type const * get_const_node(const bid_type &bid, bool fix=false)
std::bidirectional_iterator_tag iterator_category
btree_iterator_base< btree_type > base_type
btree_type::leaf_bid_type bid_type
btree_type::leaf_bid_type bid_type
btree_type::const_reference const_reference
btree_const_iterator(const btree_const_iterator &obj)
uint_pair & operator++()
prefix increment operator (directly manipulates the integer parts)
void unfix_node(const bid_type &bid)
btree_const_iterator(const iterator &obj)
bool operator!=(const uint_pair &b) const
inequality checking operator
btree_const_iterator(btree_type *_btree, const bid_type &_bid, unsigned_type _pos)
#define STXXL_VERBOSE3(x)
btree_type::difference_type difference_type
btree_type::value_type value_type
void unregister_iterator(iterator_base &it)
#define STXXL_BEGIN_NAMESPACE
uint_pair & operator--()
prefix decrement operator (directly manipulates the integer parts)
btree_type::value_type value_type
btree_iterator_base & decrement()
btree_iterator(const btree_iterator &obj)
btree_iterator< BTreeType > iterator
btree_iterator_base(btree_type *_btree, const bid_type &_bid, unsigned_type _pos)
btree_type::const_reference reference
choose_int_types< my_pointer_size >::unsigned_type unsigned_type
reference non_const_access()
btree_type::const_reference const_reference
const_reference const_access() const
btree_iterator(btree_type *_btree, const bid_type &_bid, unsigned_type _pos)
virtual ~btree_iterator_base()
void register_iterator(iterator_base &it)
btree_iterator_base< btree_type > base_type
btree_type::reference reference
btree_iterator_base & increment()
node_type * get_node(const bid_type &bid, bool fix=false)
btree_type::leaf_type leaf_type
bool operator==(const uint_pair &b) const
equality checking operator
#define STXXL_END_NAMESPACE
btree_type::leaf_bid_type bid_type
btree_iterator_base(const btree_iterator_base &obj)