#include <common.h>
Inheritance diagram for rpa::range_step_aux< It >:

| Public Types | |
| typedef range_step_base< It > | rs_base | 
| typedef rs_base::slice | slice | 
| typedef It | iterator | 
| typedef std::iterator_traits< It >::value_type | value_type | 
| Public Member Functions | |
| iterator | begin (void) const | 
| Used only for sequential execution. | |
| const iterator | end (void) const | 
| Sequential execution, and input range. | |
| size_t | size_safe (void) const | 
| For debugging. Returns an 'absurd' value if the iterators are 'output_type'. | |
| void | set_all (It aBeg, It aEnd) | 
| Used only for pipelines. | |
| range_step_aux (It aBeg, It aEnd, size_t aStep, chunk_t aMinChkSz=chunk_t()) | |
| slice | chop (void) | 
| Returns an empty slice if the range is empty. | |
| size_t | chop_again (slice &refSlice) | 
| template<class Rng2> | |
| tuple2< slice, typename Rng2::slice > | chop_init_nolock (Rng2 &aSq2) | 
| template<class Rng2> | |
| size_t | chop_again_nolock (slice &firstSlice, typename Rng2::slice &secondSlice, Rng2 &aSq2) | 
| Private Member Functions | |
| range_step_aux () | |
| range_step_aux & | operator= (const range_step_aux &) | 
| size_t | adv_to (size_t aNb) | 
| Private Attributes | |
| It | _RngBeg | 
| It | _RngEnd | 
| It can be set only for pipelines because the begin and end may change at any time. | |
| Classes | |
| struct | range_out | 
| struct | range_out< It2, std::output_iterator_tag > | 
| Most general case.  More... | |
| typedef It rpa::range_step_aux< It >::iterator | 
Reimplemented in rpa::range_step< pipe_circular< Container, CondVar >, pipe_circular< Container, CondVar > >, rpa::range_step_archiver< Container, CondVar, insertInvalidatesIterators >, rpa::range_step_archiver< Container, CondVar, true >, and rpa::range_step_archiver< Container, CondVar, rpa::insert_invalidates_iterators< Container >::value >.
| typedef range_step_base< It > rpa::range_step_aux< It >::rs_base | 
| typedef rs_base::slice rpa::range_step_aux< It >::slice | 
| typedef std::iterator_traits< It >::value_type rpa::range_step_aux< It >::value_type | 
| rpa::range_step_aux< It >::range_step_aux | ( | ) |  [private] | 
| rpa::range_step_aux< It >::range_step_aux | ( | It | aBeg, | |
| It | aEnd, | |||
| size_t | aStep, | |||
| chunk_t | aMinChkSz = chunk_t() | |||
| ) |  [inline] | 
| size_t rpa::range_step_aux< It >::adv_to | ( | size_t | aNb | ) |  [inline, private] | 
| iterator rpa::range_step_aux< It >::begin | ( | void | ) | const  [inline] | 
Used only for sequential execution.
Reimplemented in rpa::range_step< pipe_circular< Container, CondVar >, pipe_circular< Container, CondVar > >, rpa::range_step_archiver< Container, CondVar, insertInvalidatesIterators >, rpa::range_step_archiver< Container, CondVar, true >, and rpa::range_step_archiver< Container, CondVar, rpa::insert_invalidates_iterators< Container >::value >.
| slice rpa::range_step_aux< It >::chop | ( | void | ) |  [inline] | 
Returns an empty slice if the range is empty.
If the resulting slice is empty, or not.
Reimplemented in rpa::range_step< It, Mutex >, rpa::range_step< pipe_circular< Container, CondVar >, pipe_circular< Container, CondVar > >, rpa::range_step_archiver< Container, CondVar, insertInvalidatesIterators >, rpa::range_step_archiver< Container, CondVar, true >, and rpa::range_step_archiver< Container, CondVar, rpa::insert_invalidates_iterators< Container >::value >.
| size_t rpa::range_step_aux< It >::chop_again | ( | slice & | refSlice | ) |  [inline] | 
It is cheaper to reuse the same slice, and avoiding the ctor/dtor is useful because they may make other complicated things which are good to avoid. The assignment is done only on the slice. So, if we use in fact a derived class, the derived part of the slice is untouched.
If the resulting slice is empty, or not.
| size_t rpa::range_step_aux< It >::chop_again_nolock | ( | slice & | firstSlice, | |
| typename Rng2::slice & | secondSlice, | |||
| Rng2 & | aSq2 | |||
| ) |  [inline] | 
When we reuse a pair of slices. We pass separately the two slices instead of a pair, because, the first slice may be a base class of the slice that is actually used.
Beware that _RngBeg is incremented.
If the output sequence is buffered, with a limited-size buffer, 'mySz' will be and must be smaller than this limit. NOTE: The constructor is not called.
Here, we can reuse resources allocated in the slice.
| tuple2< slice, typename Rng2::slice > rpa::range_step_aux< It >::chop_init_nolock | ( | Rng2 & | aSq2 | ) |  [inline] | 
Needed by the algorithm : Called directly, without lock, at sub-thread creation - therefore the sequence is accessed only by the main thread.
Reduces the step to less or equal than the output 's ceiling (obuf_iterator). Done only once.
Beware that _RngBeg is incremented.
If the output sequence is buffered, with a limited-size buffer, 'mySz' will be and must be smaller than this limit.
| const iterator rpa::range_step_aux< It >::end | ( | void | ) | const  [inline] | 
Sequential execution, and input range.
Reimplemented in rpa::range_step< pipe_circular< Container, CondVar >, pipe_circular< Container, CondVar > >, rpa::range_step_archiver< Container, CondVar, insertInvalidatesIterators >, rpa::range_step_archiver< Container, CondVar, true >, and rpa::range_step_archiver< Container, CondVar, rpa::insert_invalidates_iterators< Container >::value >.
| range_step_aux& rpa::range_step_aux< It >::operator= | ( | const range_step_aux< It > & | ) |  [private] | 
| void rpa::range_step_aux< It >::set_all | ( | It | aBeg, | |
| It | aEnd | |||
| ) |  [inline] | 
Used only for pipelines.
| size_t rpa::range_step_aux< It >::size_safe | ( | void | ) | const  [inline] | 
For debugging. Returns an 'absurd' value if the iterators are 'output_type'.
| It rpa::range_step_aux< It >::_RngBeg  [private] | 
This iterator which points on the beginning of the range, progresses to the end at each creation of a slice with 'chop' and others.
| It rpa::range_step_aux< It >::_RngEnd  [private] | 
It can be set only for pipelines because the begin and end may change at any time.
 1.4.7
 1.4.7