68 template <
typename InputStream>
71 typedef typename std::iterator_traits<InputStream>::value_type
value_type;
72 typedef typename std::iterator_traits<InputStream>::reference
reference;
73 typedef typename std::iterator_traits<InputStream>::pointer
pointer;
74 typedef typename std::iterator_traits<InputStream>::difference_type
difference_type;
81 : m_cache_idx(
uint32(-1)) {}
92 if (m_cache_idx !=
uint32(-1))
93 m_stream[ m_cache_idx ] = m_cache_val;
101 if (m_cache_idx == i)
104 if (m_cache_idx !=
uint32(-1))
105 m_stream[ m_cache_idx ] = m_cache_val;
108 m_cache_val = m_stream[i];
113 InputStream m_stream;
139 template <
typename InputStream>
142 typedef typename std::iterator_traits<InputStream>::value_type
value_type;
143 typedef typename std::iterator_traits<InputStream>::reference
reference;
144 typedef typename std::iterator_traits<InputStream>::pointer
pointer;
183 template <
typename InputStream>
192 template <
typename InputStream>
201 template <
typename Stream>
203 const const_cached_iterator<Stream>& it1,
204 const const_cached_iterator<Stream>& it2);
208 template <
typename Stream>
210 const const_cached_iterator<Stream>& it1,
211 const const_cached_iterator<Stream>& it2);
215 template <
typename Stream>
217 const const_cached_iterator<Stream>& it1,
218 const const_cached_iterator<Stream>& it2);
222 template <
typename Stream>
224 const const_cached_iterator<Stream>& it1,
225 const const_cached_iterator<Stream>& it2);
229 template <
typename Stream>
231 const const_cached_iterator<Stream>& it1,
232 const const_cached_iterator<Stream>& it2);
236 template <
typename Stream>
238 const const_cached_iterator<Stream>& it1,
239 const const_cached_iterator<Stream>& it2);
243 template <
typename Stream>
245 const_cached_iterator<Stream>&
operator++ (const_cached_iterator<Stream>& it);
249 template <
typename Stream>
251 const_cached_iterator<Stream>
operator++ (const_cached_iterator<Stream>& it,
int dummy);
255 template <
typename Stream>
257 const_cached_iterator<Stream>&
operator-- (const_cached_iterator<Stream>& it);
261 template <
typename Stream>
263 const_cached_iterator<Stream>
operator-- (const_cached_iterator<Stream>& it,
int dummy);
267 template <
typename Stream>
269 const_cached_iterator<Stream>&
operator+= (const_cached_iterator<Stream>& it,
const typename const_cached_iterator<Stream>::difference_type distance);
273 template <
typename Stream>
275 const_cached_iterator<Stream>&
operator-= (const_cached_iterator<Stream>& it,
const typename const_cached_iterator<Stream>::difference_type distance);
279 template <
typename Stream>
281 const_cached_iterator<Stream>
operator+ (
const const_cached_iterator<Stream> it,
const typename const_cached_iterator<Stream>::difference_type distance);
285 template <
typename Stream>
287 const_cached_iterator<Stream>
operator- (
const const_cached_iterator<Stream> it,
const typename const_cached_iterator<Stream>::difference_type distance);
291 template <
typename Stream>
293 typename const_cached_iterator<Stream>::difference_type
operator- (
const const_cached_iterator<Stream> it1,
const const_cached_iterator<Stream> it2);