WireCellToolkit
Wire Cell Simulation, Signal Process and Reconstruction Toolki for Liquid Argon Detectors
WireCell::IteratorAdapter< adapted_iterator, base_iterator > Class Template Reference

#include <IteratorBase.h>

Inheritance diagram for WireCell::IteratorAdapter< adapted_iterator, base_iterator >:
Collaboration diagram for WireCell::IteratorAdapter< adapted_iterator, base_iterator >:

Public Types

typedef base_iterator::value_type value_type
 

Public Member Functions

 IteratorAdapter (adapted_iterator it)
 
virtual ~IteratorAdapter ()
 
const IteratorAdapterdc (const base_iterator &other) const
 
bool operator== (const base_iterator &rhs) const
 
bool operator!= (const base_iterator &rhs) const
 
base_iterator & operator= (const base_iterator &rhs)
 
base_iterator & operator++ ()
 
value_type operator* () const
 
base_iterator * clone () const
 

Detailed Description

template<typename adapted_iterator, typename base_iterator>
class WireCell::IteratorAdapter< adapted_iterator, base_iterator >

Handy adapter from an iterator to an abstract base iterator.

Eg:

class MyData : virtual public IData {...}; typedef IteratorBase< const IData* > my_base_iterator; typedef std::vector<MyData*> MyStore; typedef IteratorAdapter< MyStore::iterator, my_base_iterator > my_iterator;

typedef std::Iterator<const IMyData*> data_iterator; typedef std::pair<data_iterator, data_iterator> data_range;

In interface class:

data_range get_data() const = 0;

In implementation with

MyStore m_store;

data_range MyImp::get_data() { return data_range(my_iterator(m_store.begin(), my_iterator(m_store.end())); }

Reasons not to use this adapter and go to the trouble to write your own iterator class:

  • want to not use up memory making all objects up front
  • can generate them on the fly fast enough.
  • want lazy data access or otherwise, have the iterator "phone home" to some other container or source of data.
  • simply not using a STL container or something that already has std::iterators to access the underlying collection.

Definition at line 72 of file IteratorBase.h.

Member Typedef Documentation

◆ value_type

template<typename adapted_iterator , typename base_iterator >
typedef base_iterator::value_type WireCell::IteratorAdapter< adapted_iterator, base_iterator >::value_type

Definition at line 76 of file IteratorBase.h.

Constructor & Destructor Documentation

◆ IteratorAdapter()

template<typename adapted_iterator , typename base_iterator >
WireCell::IteratorAdapter< adapted_iterator, base_iterator >::IteratorAdapter ( adapted_iterator  it)
inline

Definition at line 78 of file IteratorBase.h.

◆ ~IteratorAdapter()

template<typename adapted_iterator , typename base_iterator >
virtual WireCell::IteratorAdapter< adapted_iterator, base_iterator >::~IteratorAdapter ( )
inlinevirtual

Definition at line 79 of file IteratorBase.h.

Member Function Documentation

◆ clone()

template<typename adapted_iterator , typename base_iterator >
base_iterator* WireCell::IteratorAdapter< adapted_iterator, base_iterator >::clone ( ) const
inline

Definition at line 102 of file IteratorBase.h.

◆ dc()

template<typename adapted_iterator , typename base_iterator >
const IteratorAdapter& WireCell::IteratorAdapter< adapted_iterator, base_iterator >::dc ( const base_iterator &  other) const
inline

Definition at line 81 of file IteratorBase.h.

◆ operator!=()

template<typename adapted_iterator , typename base_iterator >
bool WireCell::IteratorAdapter< adapted_iterator, base_iterator >::operator!= ( const base_iterator &  rhs) const
inline

Definition at line 87 of file IteratorBase.h.

◆ operator*()

template<typename adapted_iterator , typename base_iterator >
value_type WireCell::IteratorAdapter< adapted_iterator, base_iterator >::operator* ( ) const
inline

Definition at line 98 of file IteratorBase.h.

◆ operator++()

template<typename adapted_iterator , typename base_iterator >
base_iterator& WireCell::IteratorAdapter< adapted_iterator, base_iterator >::operator++ ( )
inline

Definition at line 94 of file IteratorBase.h.

◆ operator=()

template<typename adapted_iterator , typename base_iterator >
base_iterator& WireCell::IteratorAdapter< adapted_iterator, base_iterator >::operator= ( const base_iterator &  rhs)
inline

Definition at line 90 of file IteratorBase.h.

◆ operator==()

template<typename adapted_iterator , typename base_iterator >
bool WireCell::IteratorAdapter< adapted_iterator, base_iterator >::operator== ( const base_iterator &  rhs) const
inline

Definition at line 84 of file IteratorBase.h.


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