CLAW Library (a C++ Library Absolutely Wonderful) 1.5.5
Public Types | Public Member Functions | Private Attributes
claw::avl_base< K, Comp >::avl_const_iterator Class Reference

AVL iterator. More...

#include <avl_base.hpp>

List of all members.

Public Types

typedef K value_type
typedef const K & reference
typedef const K *const pointer
typedef ptrdiff_t difference_type
typedef
std::bidirectional_iterator_tag 
iterator_category

Public Member Functions

 avl_const_iterator ()
 Constructor.
 avl_const_iterator (const_avl_node_ptr node, bool final)
 Constructor.
avl_const_iteratoroperator++ ()
 Preincrement.
avl_const_iterator operator++ (int)
 Postincrement.
avl_const_iteratoroperator-- ()
 Predecrement.
avl_const_iterator operator-- (int)
 Postdecrement.
reference operator* () const
 Dereference.
pointer operator-> () const
 Reference.
bool operator== (const avl_const_iterator &it) const
 Equality.
bool operator!= (const avl_const_iterator &it) const
 Difference.

Private Attributes

const_avl_node_ptr m_current
 Current node in the tree.
bool m_is_final
 True if we've gone past the last node.

Detailed Description

template<class K, class Comp = std::less<K>>
class claw::avl_base< K, Comp >::avl_const_iterator

AVL iterator.

Definition at line 167 of file avl_base.hpp.


Member Typedef Documentation

template<class K, class Comp = std::less<K>>
typedef ptrdiff_t claw::avl_base< K, Comp >::avl_const_iterator::difference_type

Definition at line 173 of file avl_base.hpp.

template<class K, class Comp = std::less<K>>
typedef std::bidirectional_iterator_tag claw::avl_base< K, Comp >::avl_const_iterator::iterator_category

Definition at line 175 of file avl_base.hpp.

template<class K, class Comp = std::less<K>>
typedef const K* const claw::avl_base< K, Comp >::avl_const_iterator::pointer

Definition at line 172 of file avl_base.hpp.

template<class K, class Comp = std::less<K>>
typedef const K& claw::avl_base< K, Comp >::avl_const_iterator::reference

Definition at line 171 of file avl_base.hpp.

template<class K, class Comp = std::less<K>>
typedef K claw::avl_base< K, Comp >::avl_const_iterator::value_type

Definition at line 170 of file avl_base.hpp.


Constructor & Destructor Documentation

template<class K , class Comp >
claw::avl_base< K, Comp >::avl_const_iterator::avl_const_iterator ( )

Constructor.

Definition at line 741 of file avl_base.tpp.

  : m_current(NULL), m_is_final(true)
{

} // avl_const_iterator::avl_const_iterator() [constructeur]
template<class K , class Comp >
claw::avl_base< K, Comp >::avl_const_iterator::avl_const_iterator ( const_avl_node_ptr  node,
bool  final 
)

Constructor.

Definition at line 753 of file avl_base.tpp.

  : m_current(node), m_is_final(final)
{

} // avl_const_iterator::avl_const_iterator() [constructeur with node]

Member Function Documentation

template<class K , class Comp >
bool claw::avl_base< K, Comp >::avl_const_iterator::operator!= ( const avl_const_iterator it) const

Difference.

Parameters:
itIterator to compare to.

Definition at line 869 of file avl_base.tpp.

{
  return !( *this == it ); 
} // avl_const_iterator::operator!=()
template<class K , class Comp >
claw::avl_base< K, Comp >::avl_const_iterator::reference claw::avl_base< K, Comp >::avl_const_iterator::operator* ( ) const

Dereference.

Definition at line 834 of file avl_base.tpp.

{
  return m_current->key; 
} // avl_const_iterator::operator*() [dereference]
template<class K , class Comp >
claw::avl_base< K, Comp >::avl_const_iterator & claw::avl_base< K, Comp >::avl_const_iterator::operator++ ( )

Preincrement.

Precondition:
not final(this).

Definition at line 766 of file avl_base.tpp.

{
  assert(!m_is_final);
  assert(m_current);

  const_avl_node_ptr p = m_current->next();

  if ( m_current == p )
    m_is_final = true;
  else
    m_current = p;

  return *this;
} // avl_const_iterator::operator++() [preincrement]
template<class K , class Comp >
claw::avl_base< K, Comp >::avl_const_iterator claw::avl_base< K, Comp >::avl_const_iterator::operator++ ( int  )

Postincrement.

Definition at line 787 of file avl_base.tpp.

{
  avl_const_iterator it = *this;
  ++(*this);
  return it;
} // avl_const_iterator::operator++ [postincrement]
template<class K , class Comp >
claw::avl_base< K, Comp >::avl_const_iterator claw::avl_base< K, Comp >::avl_const_iterator::operator-- ( int  )

Postdecrement.

Definition at line 821 of file avl_base.tpp.

{
  avl_const_iterator it = *this;
  --(*this);
  return it;
} // avl_const_iterator::operator-- [postdecrement]
template<class K , class Comp >
claw::avl_base< K, Comp >::avl_const_iterator & claw::avl_base< K, Comp >::avl_const_iterator::operator-- ( )

Predecrement.

Precondition:
iterator is not at the begining of the container.

Definition at line 801 of file avl_base.tpp.

{
  assert(m_current);

  if (m_is_final)
    m_is_final = !m_is_final;
  else
    m_current = m_current->prev();

  assert(m_current != NULL);
  
  return *this;
} // avl_const_iterator::operator--() [predecrement]
template<class K , class Comp >
claw::avl_base< K, Comp >::avl_const_iterator::pointer claw::avl_base< K, Comp >::avl_const_iterator::operator-> ( ) const

Reference.

Definition at line 845 of file avl_base.tpp.

{
  return &m_current->key; 
} // avl_const_iterator::operator->()
template<class K , class Comp >
bool claw::avl_base< K, Comp >::avl_const_iterator::operator== ( const avl_const_iterator it) const

Equality.

Parameters:
itIterator to compare to.

Definition at line 857 of file avl_base.tpp.

{
  return (m_current == it.m_current) && (m_is_final == it.m_is_final); 
} // avl_const_iterator::operator==()

Member Data Documentation

template<class K, class Comp = std::less<K>>
const_avl_node_ptr claw::avl_base< K, Comp >::avl_const_iterator::m_current [private]

Current node in the tree.

Definition at line 192 of file avl_base.hpp.

template<class K, class Comp = std::less<K>>
bool claw::avl_base< K, Comp >::avl_const_iterator::m_is_final [private]

True if we've gone past the last node.

Definition at line 195 of file avl_base.hpp.


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