5 #ifndef NDS2_CLIENT_NDS_DATA_ITERATOR_HH
6 #define NDS2_CLIENT_NDS_DATA_ITERATOR_HH
11 #include "nds_buffer.hh"
12 #include "nds_channel.hh"
18 class iterate_handler;
21 inline namespace abi_0
39 using gps_second_type = NDS::buffer::gps_second_type;
40 typedef long stride_type;
41 gps_second_type start;
51 const static stride_type FAST_STRIDE = -1;
61 const static stride_type AUTO_STRIDE = 0;
68 request_period( ) : start( 0 ), stop( 0 ), stride( 0 )
82 explicit request_period( stride_type requested_stride )
83 : start( 0 ), stop( 0 ), stride( requested_stride )
99 explicit request_period( gps_second_type requested_start,
100 gps_second_type requested_stop )
101 : start( requested_start ), stop( requested_stop ), stride( 0 )
121 explicit request_period( gps_second_type requested_start,
122 gps_second_type requested_stop,
123 stride_type requested_stride )
124 : start( requested_start ), stop( requested_stop ),
125 stride( requested_stride )
144 class data_stream_iterator
147 typedef std::shared_ptr< buffers_type > value_type;
148 typedef value_type& reference;
149 typedef value_type* pointer;
150 typedef std::size_t difference_type;
151 typedef std::input_iterator_tag iterator_category;
157 DLL_EXPORT data_stream_iterator( );
168 data_stream_iterator(
const data_stream_iterator& other );
177 data_stream_iterator( data_stream_iterator&& other ) noexcept;
180 data_stream_iterator( std::shared_ptr< detail::iterate_handler > p,
183 DLL_EXPORT ~data_stream_iterator( );
194 DLL_EXPORT data_stream_iterator&
195 operator=( const data_stream_iterator& other );
203 DLL_EXPORT data_stream_iterator&
204 operator=( data_stream_iterator&& other ) noexcept;
207 operator==( const data_stream_iterator& other ) const;
210 operator!=( const data_stream_iterator& other ) const;
219 DLL_EXPORT reference operator*( );
225 DLL_EXPORT data_stream_iterator& operator++( );
230 DLL_EXPORT data_stream_iterator operator++(
int );
233 std::shared_ptr< detail::iterate_handler > p_;
269 typedef data_stream_iterator iterator_type;
271 DLL_EXPORT
explicit data_iterable(
272 std::shared_ptr< NDS::detail::iterate_handler > handler );
281 DLL_EXPORT data_iterable(
const data_iterable& other );
289 DLL_EXPORT data_iterable( data_iterable&& other ) noexcept;
291 DLL_EXPORT ~data_iterable( );
302 DLL_EXPORT data_iterable& operator=( const data_iterable& other );
310 DLL_EXPORT data_iterable&
311 operator=( data_iterable&& other ) noexcept;
325 DLL_EXPORT iterator_type begin( );
334 DLL_EXPORT iterator_type end( );
343 DLL_EXPORT
void abort( );
346 std::shared_ptr< NDS::detail::iterate_handler > p_;
351 #endif // NDS2_CLIENT_NDS_DATA_ITERATOR_HH