STLdb

PrevUpHomeNext

Class template trans_iterator

stldb::trans_iterator

Synopsis

// In header: </Users/bobw/workspaces/STLdb/stldb_lib/stldb/containers/trans_iterator.h>

template<typename container_t, typename base_iterator, bool IsConst> 
class trans_iterator : public std::iterator< iterator_traits< base_iterator >::iterator_category, iterator_traits< base_iterator >::value_type, iterator_traits< base_iterator >::difference_type, if_c< IsConst, container_t::const_pointer, container_t::pointer >::type, if_c< IsConst, container_t::const_reference, container_t::reference >::type >
{
public:
  // types
  typedef iterator_traits< base_iterator >::value_type value_type;
  typedef unspecified                                  pointer;   
  typedef unspecified                                  reference; 

  // construct/copy/destruct
  trans_iterator();
  trans_iterator(base_iterator, container_t *);
  trans_iterator(base_iterator, container_t *, Transaction &);
  trans_iterator(const trans_iterator &);
  template<typename NonConstBaseIterator> 
    trans_iterator(const trans_iterator< container_t, NonConstBaseIterator, false > &);

  // public member functions
  reference operator*() const;
  pointer operator->() const;
  trans_iterator & operator++();
  trans_iterator & operator--();
  trans_iterator operator++(int);
  trans_iterator operator--(int);
  base_iterator & base();
  bool valid() const;
  base_iterator container_end();

  // private member functions
  void skip_forward();
  void skip_backward();
  void forward();
  void backward();
  void set_current();
};

Description

trans_iterator public construct/copy/destruct

  1. trans_iterator();
  2. trans_iterator(base_iterator i, container_t * container);

    TODO: There seems to be a bug with boost::interprocess::map<>, because although map::value_type is pair<const K, V>, it seems that map::iterator::operator* is returning pair<K,V>, in violation of current C++ standards. The workaround are the reinterpret casts seen below and in the tcc.

  3. trans_iterator(base_iterator i, container_t * container, Transaction & trans);
  4. trans_iterator(const trans_iterator & rarg);
  5. template<typename NonConstBaseIterator> 
      trans_iterator(const trans_iterator< container_t, NonConstBaseIterator, false > & rarg);

trans_iterator public member functions

  1. reference operator*() const;
  2. pointer operator->() const;
  3. trans_iterator & operator++();
  4. trans_iterator & operator--();
  5. trans_iterator operator++(int n);
  6. trans_iterator operator--(int n);
  7. base_iterator & base();
  8. bool valid() const;
  9. base_iterator container_end();

trans_iterator private member functions

  1. void skip_forward();
  2. void skip_backward();
  3. void forward();
  4. void backward();
  5. void set_current();

PrevUpHomeNext