libpsynth 0.2.1
Public Types | Public Member Functions
psynth::sound::memory_based_step_iterator< Iterator > Class Template Reference

Iterator with dynamically specified step in memory units (bytes or bits). More...

#include <step_iterator.hpp>

Inheritance diagram for psynth::sound::memory_based_step_iterator< Iterator >:
Inheritance graph
[legend]
Collaboration diagram for psynth::sound::memory_based_step_iterator< Iterator >:
Collaboration graph
[legend]

List of all members.

Public Types

typedef
detail::step_iterator_adaptor
< memory_based_step_iterator
< Iterator >, Iterator,
memunit_step_fn< Iterator > > 
parent_type
typedef parent_type::reference reference
typedef
parent_type::difference_type 
difference_type
typedef Iterator base_iterator

Public Member Functions

 memory_based_step_iterator ()
 memory_based_step_iterator (Iterator it, std::ptrdiff_t memunit_step)
template<typename I2 >
 memory_based_step_iterator (const memory_based_step_iterator< I2 > &it)
reference operator[] (difference_type d) const
 For some reason operator[] provided by iterator_adaptor returns a custom class that is convertible to reference We require our own reference because it is registered in iterator_traits.
void set_step (std::ptrdiff_t memunit_step)
base_iterator & base ()
base_iterator const & base () const

Detailed Description

template<typename Iterator>
class psynth::sound::memory_based_step_iterator< Iterator >

Iterator with dynamically specified step in memory units (bytes or bits).

Models StepIteratorConcept, IteratorAdaptorConcept, MemoryBasedIteratorConcept, FrameIteratorConcept, HasDynamicXStepTypeConcept

A refinement of step_iterator_adaptor that uses a dynamic parameter for the step which is specified in memory units, such as bytes or bits

Frame step iterators are used to provide iteration over non-adjacent frames. Common use is a vertical traversal, where the step is the row stride.

Another application is as a sub-sample range. For example, a red intensity image over interleaved RGB data would use a step iterator adaptor with step sizeof(sample_t)*3 In the latter example the step size could be fixed at compile time for efficiency. Compile-time fixed step can be implemented by providing a step function object that takes the step as a template


Member Typedef Documentation

template<typename Iterator>
typedef Iterator psynth::sound::memory_based_step_iterator< Iterator >::base_iterator
template<typename Iterator>
typedef detail::step_iterator_adaptor<memory_based_step_iterator<Iterator>, Iterator, memunit_step_fn<Iterator> > psynth::sound::memory_based_step_iterator< Iterator >::parent_type
template<typename Iterator>
typedef parent_type::reference psynth::sound::memory_based_step_iterator< Iterator >::reference

Constructor & Destructor Documentation

template<typename Iterator>
psynth::sound::memory_based_step_iterator< Iterator >::memory_based_step_iterator ( ) [inline]
template<typename Iterator>
psynth::sound::memory_based_step_iterator< Iterator >::memory_based_step_iterator ( Iterator  it,
std::ptrdiff_t  memunit_step 
) [inline]
template<typename Iterator>
template<typename I2 >
psynth::sound::memory_based_step_iterator< Iterator >::memory_based_step_iterator ( const memory_based_step_iterator< I2 > &  it) [inline]

Member Function Documentation

template<typename Iterator>
base_iterator& psynth::sound::memory_based_step_iterator< Iterator >::base ( ) [inline]
template<typename Iterator>
base_iterator const& psynth::sound::memory_based_step_iterator< Iterator >::base ( ) const [inline]
template<typename Iterator>
reference psynth::sound::memory_based_step_iterator< Iterator >::operator[] ( difference_type  d) const [inline]

For some reason operator[] provided by iterator_adaptor returns a custom class that is convertible to reference We require our own reference because it is registered in iterator_traits.

template<typename Iterator>
void psynth::sound::memory_based_step_iterator< Iterator >::set_step ( std::ptrdiff_t  memunit_step) [inline]

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