Cheetah - SKA - PSS - Prototype Time Domain Search Pipeline
Public Types | Public Member Functions | Protected Member Functions | List of all members
ska::cheetah::data::DataSequence2DPartialIterator< Cpu, Type > Class Template Reference

Iterator over partial ranges of DataSequence2D types, "fast" axis. CPU specialisation. More...

#include <cheetah/data/DataSequence2DPartialIterator.h>

Inheritance diagram for ska::cheetah::data::DataSequence2DPartialIterator< Cpu, Type >:
Inheritance graph
Collaboration diagram for ska::cheetah::data::DataSequence2DPartialIterator< Cpu, Type >:
Collaboration graph

Public Types

typedef std::iterator_traits< DataSequence2DPartialIterator< Cpu, Type > >::pointer PtrType
 
typedef std::iterator_traits< DataSequence2DPartialIterator< Cpu, Type > >::reference RefType
 
typedef std::iterator_traits< DataSequence2DPartialIterator< Cpu, Type > >::difference_type DiffType
 
typedef DataSequence2DPartialIterator< Cpu, Type > SelfType
 
typedef SelfType Iterator
 
- Public Types inherited from ska::cheetah::data::DataSequence2DFastIteratorBase< Type, DataSequence2DPartialIterator< Cpu, Type > >
typedef std::iterator_traits< SelfType >::pointer PtrType
 
typedef std::iterator_traits< SelfType >::reference RefType
 
typedef std::iterator_traits< SelfType >::difference_type DiffType
 

Public Member Functions

 DataSequence2DPartialIterator (const DataSequence2D< Cpu, typename std::remove_cv< Type >::type > &data_ptr, std::size_t fbegin, std::size_t fend, std::size_t sbegin, std::size_t send)
 Create an iterator. More...
 
 DataSequence2DPartialIterator (DataSequence2D< Cpu, typename std::remove_cv< Type >::type > &data_ptr, std::size_t fbegin, std::size_t fend, std::size_t sbegin, std::size_t send)
 
 DataSequence2DPartialIterator ()
 default constructor. Required by random_access_iterator_tag
 
 DataSequence2DPartialIterator (const DataSequence2DPartialIterator< Cpu, Type > &copy)
 copy constructor. Required by random_access_iterator_tag.
 
 ~DataSequence2DPartialIterator ()
 Destroy the iterator.
 
PtrType operator-> () const override
 dereference operator More...
 
RefType operator* () const override
 dereference operator
 
SelfType begin () const
 
SelfType end () const
 
- Public Member Functions inherited from ska::cheetah::data::DataSequence2DFastIteratorBase< Type, DataSequence2DPartialIterator< Cpu, Type > >
 DataSequence2DFastIteratorBase (const DataSequence2D< Cpu, typename std::remove_cv< Type >::type > &data_ptr, std::size_t slow_offset=0)
 Create an iterator. More...
 
 DataSequence2DFastIteratorBase (DataSequence2D< Cpu, typename std::remove_cv< Type >::type > &data_ptr, std::size_t slow_offset=0)
 
 DataSequence2DFastIteratorBase ()
 default constructor. Required by random_access_iterator_tag
 
 DataSequence2DFastIteratorBase (const DataSequence2DFastIteratorBase< Type, DataSequence2DPartialIterator< Cpu, Type > > &copy)
 copy constructor. Required by random_access_iterator_tag.
 
 ~DataSequence2DFastIteratorBase ()
 Destroy the iterator.
 
DataSequence2DPartialIterator< Cpu, Type > & operator++ ()
 pre-increment operator. More...
 
DataSequence2DPartialIterator< Cpu, Type > operator++ (int)
 post-increment the iterator to the next element in the data sequence More...
 
DataSequence2DPartialIterator< Cpu, Type > & operator-- ()
 Decriment.
 
DataSequence2DPartialIterator< Cpu, Type > operator-- (int)
 Decriment.
 
DataSequence2DPartialIterator< Cpu, Type > & operator+= (DiffType off)
 Add-Asignment.
 
DataSequence2DPartialIterator< Cpu, Type > & operator-= (DiffType off)
 Subtract-asignment.
 
DataSequence2DPartialIterator< Cpu, Type > operator+ (DiffType off) const
 
DataSequence2DPartialIterator< Cpu, Type > operator- (DiffType off) const
 
DiffType operator- (const SelfType &right) const
 
bool operator< (const SelfType &right) const
 
bool operator> (const SelfType &right) const
 
bool operator<= (const SelfType &right) const
 
bool operator>= (const SelfType &right) const
 
RefType operator[] (DiffType off) const
 Offset dereference.
 
bool operator== (SelfType const &) const
 return true if it is the same data and offset
 
bool operator!= (SelfType const &) const
 return true if it has neither the same data or offset
 

Protected Member Functions

std::size_t mangle_offset (std::size_t off) const
 
- Protected Member Functions inherited from ska::cheetah::data::DataSequence2DFastIteratorBase< Type, DataSequence2DPartialIterator< Cpu, Type > >
std::size_t index ()
 

Additional Inherited Members

- Protected Attributes inherited from ska::cheetah::data::DataSequence2DFastIteratorBase< Type, DataSequence2DPartialIterator< Cpu, Type > >
const DataSequence2D< Cpu, typename std::remove_cv< Type >::type > * _data
 
std::size_t _offset
 
Type * _raw
 

Detailed Description

template<typename Type>
class ska::cheetah::data::DataSequence2DPartialIterator< Cpu, Type >

Iterator over partial ranges of DataSequence2D types, "fast" axis. CPU specialisation.

Created by DataSequence2d::slice() or by constructor, iterates over a subset of the DataSequence2D as if it were a FastIterator over a smaller datasequence.

useful to do a partial copy of a slice, e.g.: std::copy(ds2d.slice(10,20,10,20), ds2d.slice(10,20,10,20).end(), newds2d.begin());

or copying a smaller ds2d into a larger one for buffering, e.g.: std::copy(small.begin(),small.end(), large.slice(currentpos, currentpos+small.fast_axis_length(), 0,small.slow_axis_length()); curentpos+=small.fast_axis_length();

Template Parameters
TypeThe datatype stored in the DataSequence2D.

Definition at line 65 of file DataSequence2DPartialIterator.h.

Constructor & Destructor Documentation

◆ DataSequence2DPartialIterator()

template<typename Type >
ska::cheetah::data::DataSequence2DPartialIterator< Cpu, Type >::DataSequence2DPartialIterator ( const DataSequence2D< Cpu, typename std::remove_cv< Type >::type > &  data_ptr,
std::size_t  fbegin,
std::size_t  fend,
std::size_t  sbegin,
std::size_t  send 
)

Create an iterator.

Iterator starts at the top of the "slow" axis. Iterates only in the range fbegin->fend, and sbegin->send

  • data_ptr the data to iterate over
  • fbegin the start of the partial region in fast axis
  • fend the end of the partial region in fast axis
  • sbegin the start of the partial region in slow axis
  • send the end of the partial region in slow axis

Definition at line 58 of file DataSequence2DPartialIterator.cpp.

61  : BaseT(data_ptr)
62  , _fbegin(fbegin)
63  , _fend(fend)
64  , _sbegin(sbegin)
65  , _send(send)
66 {
67  this->_flength = this->_fend - this->_fbegin;
68 }

Member Function Documentation

◆ begin()

template<typename Type >
DataSequence2DPartialIterator< Cpu, Type > ska::cheetah::data::DataSequence2DPartialIterator< Cpu, Type >::begin ( ) const

Return an iterator to the start of the partial region.

Definition at line 107 of file DataSequence2DPartialIterator.cpp.

107  {
108  DataSequence2DPartialIterator<Cpu,Type> r(*this);
109  r._offset=0;
110  return r;
111 }

◆ end()

template<typename Type >
DataSequence2DPartialIterator< Cpu, Type > ska::cheetah::data::DataSequence2DPartialIterator< Cpu, Type >::end ( ) const

Return an iterator pointing at the end of the partial region.

Definition at line 114 of file DataSequence2DPartialIterator.cpp.

114  {
115  DataSequence2DPartialIterator<Cpu,Type> r(*this);
116  r._offset=this->_flength*(this->_send - this->_sbegin);
117  return r;
118 }

◆ operator->()

template<typename Type >
DataSequence2DPartialIterator< Cpu, Type >::PtrType ska::cheetah::data::DataSequence2DPartialIterator< Cpu, Type >::operator-> ( ) const
overridevirtual

dereference operator

return the actual data currently referenced by the iterator

Reimplemented from ska::cheetah::data::DataSequence2DFastIteratorBase< Type, DataSequence2DPartialIterator< Cpu, Type > >.

Definition at line 86 of file DataSequence2DPartialIterator.cpp.

86  {
87  BOOST_ASSERT_MSG(this->_raw != nullptr,"Cannot dereference iterator over null DataSequence2D");
88  BOOST_ASSERT_MSG(this->mangle_offset(this->_offset) < this->_data->fast_axis_length()*this->_data->slow_axis_length(),"Cannot dereference post-end iterator");
89  return this->_raw+this->mangle_offset(this->_offset);
90 }

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