1 #ifndef __AUDIO_VIRTUALITERATOR_H__INCLUDED__
2 #define __AUDIO_VIRTUALITERATOR_H__INCLUDED__
17 template<
class _T,
class _Rt = _T&,
class _Pt = _T*>
class VirtualIterator :
public std::iterator< std::bidirectional_iterator_tag , _T >
34 virtual SharedPtr<iterator_type>
clone()
const = 0;
37 virtual bool eos()
const = 0;
40 virtual bool sos()
const = 0;
57 typename std::iterator_traits<_It>::value_type,
58 typename std::iterator_traits<_It>::reference,
59 typename std::iterator_traits<_It>::pointer
68 typedef typename std::iterator_traits<_It>::value_type
value_type;
82 virtual SharedPtr<iterator_type>
clone()
const
85 virtual bool eos()
const {
return cur == end; }
86 virtual bool sos()
const {
return cur == begin; };
112 virtual bool eos()
const {
return it.eos(); }
113 virtual bool sos()
const {
return it.sos(); };
136 virtual SharedPtr<iterator_type>
clone()
const
160 virtual SharedPtr<iterator_type>
clone()
const
166 typename _It1::value_type,
167 typename _It1::reference_type,
168 typename _It1::pointer_type
187 {
return (it1.eos() ? *it2 : *it1); }
190 {
return (it1.eos() ? it2.operator->() : it1.operator->()); }
202 if (it1.eos() && !it2.sos())
208 virtual SharedPtr<iterator_type>
clone()
const
212 {
return (it1.eos() && it2.eos()); }
215 {
return (it1.sos() && it2.sos()); }
221 #endif//__AUDIO_VIRTUALITERATOR_H__INCLUDED__