20template<
typename _ >
struct Range;
21template<
typename _ >
struct Consumer;
27 typedef typename R::ElementType
T;
49 typename R::ElementType
current()
const {
return *(*this); }
53 return m_range.operator<=(
r.m_range );
60template<
typename T,
typename Self >
94 virtual T
head()
const = 0;
100template<
typename T,
typename W >
103 typedef typename W::RangeImplementation
Wrapped;
152template<
typename T >
158 template<
typename C >
188template<
typename It >
190 typename std::iterator_traits< It >::value_type,
191 IteratorRange< It > >
193 typedef typename std::iterator_traits< It >::value_type
Value;
221template<
typename T,
typename Casted >
245template<
typename T,
typename C >
251template<
typename T,
typename C >
257template<
typename T >
template<
typename C >
263template<
typename In >
268template<
typename C >
270 return range(
c.begin(),
c.end() );
273template<
typename T >
326template<
typename R >
331template<
typename R,
typename Pred >
333 FilteredRange< R, Pred > >
376template<
typename R,
typename Pred >
382template<
typename T >
423template<
typename R >
428template<
typename Transform >
430 TransformedRange< Transform > >
432 typedef typename Transform::argument_type
Source;
433 typedef typename Transform::result_type
Result;
450template<
typename Trans >
456template<
typename T,
typename _Advance,
typename _End >
483 return isEnd() <=
r.isEnd();
493template<
typename T,
typename A,
typename E >
Range< typename In::value_type > range(In b, In e)
Definition range.h:264
GeneratedRange< T, A, E > generatedRange(T t, A a, E e)
Definition range.h:494
IntersectionRange< typename R::ElementType > intersectionRange(R r1, R r2)
Definition range.h:327
Range< T > upcastRange(C r)
Definition range.h:252
TransformedRange< Trans > transformedRange(Range< typename Trans::argument_type > r, Trans t)
Definition range.h:451
Range< T > castedRange(C r)
Definition range.h:246
FilteredRange< R, Pred > filteredRange(R r, Pred p)
Definition range.h:377
UniqueRange< typename R::ElementType > uniqueRange(R r1)
Definition range.h:424
const Interface * implementation() const
Definition amorph.h:361
void setToEmpty()
Definition range.h:235
void removeFirst()
Definition range.h:229
CastedRange()
Definition range.h:224
CastedRange(Range< Casted > r)
Definition range.h:225
T head() const
Definition range.h:226
Range< Casted > m_casted
Definition range.h:240
bool operator<=(const CastedRange &r) const
Definition range.h:231
void removeFirst()
Definition range.h:346
bool operator<=(const FilteredRange &f) const
Definition range.h:361
R m_range
Definition range.h:370
R::iterator m_current
Definition range.h:371
FilteredRange(const R &r, Pred p)
Definition range.h:337
R::ElementType ElementType
Definition range.h:335
bool m_valid
Definition range.h:373
const Pred & pred() const
Definition range.h:369
void find() const
Definition range.h:340
Pred m_pred
Definition range.h:372
void setToEmpty()
Definition range.h:357
ElementType head() const
Definition range.h:352
T m_current
Definition range.h:487
Advance m_advance
Definition range.h:488
bool isEnd() const
Definition range.h:478
End m_endPred
Definition range.h:489
GeneratedRange(const T &t, const Advance &a, const End &e)
Definition range.h:463
bool operator<=(const GeneratedRange &r) const
Definition range.h:480
T head() const
Definition range.h:476
GeneratedRange()
Definition range.h:462
_Advance Advance
Definition range.h:459
bool m_end
Definition range.h:490
void removeFirst()
Definition range.h:468
_End End
Definition range.h:460
void setToEmpty()
Definition range.h:472
Range< T > m_second
Definition range.h:322
bool m_valid
Definition range.h:323
IntersectionRange(Range< T > r1, Range< T > r2)
Definition range.h:277
Range< T > m_first
Definition range.h:322
IntersectionRange()
Definition range.h:276
void removeFirst()
Definition range.h:298
bool operator<=(const IntersectionRange &f) const
Definition range.h:315
void find() const
Definition range.h:283
T head() const
Definition range.h:305
void setToEmpty()
Definition range.h:310
IteratorRange(It c, It e)
Definition range.h:196
void setToEmpty()
Definition range.h:206
std::iterator_traits< It >::value_type Value
Definition range.h:193
bool operator<=(const IteratorRange &r) const
Definition range.h:202
Value head() const
Definition range.h:199
It m_current
Definition range.h:211
It m_end
Definition range.h:211
void removeFirst()
Definition range.h:200
IteratorRange()
Definition range.h:195
const Wrapped & wrapped() const
Definition amorph.h:181
virtual void removeFirst()=0
virtual ~RangeInterface()
Definition range.h:97
virtual void setToEmpty()=0
virtual T head() const =0
Proxy(T _x)
Definition range.h:30
const T * operator->() const
Definition range.h:32
std::forward_iterator_tag iterator_category
Definition range.h:38
R m_range
Definition range.h:56
T value_type
Definition range.h:39
RangeIterator operator++(int)
Definition range.h:51
RangeIterator & operator++()
Definition range.h:50
T * pointer
Definition range.h:41
bool operator<=(const RangeIterator &r) const
Definition range.h:52
Proxy operator->() const
Definition range.h:45
RangeIterator(const R &r)
Definition range.h:36
R::ElementType current() const
Definition range.h:49
R::ElementType T
Definition range.h:27
RangeIterator()
Definition range.h:35
R::ElementType operator*() const
Definition range.h:48
RangeIterator next() const
Definition range.h:47
ptrdiff_t difference_type
Definition range.h:40
const T & const_reference
Definition range.h:43
T & reference
Definition range.h:42
bool empty() const
Definition range.h:82
T head()
Definition range.h:74
void output(Consumer< T > t) const
Definition range.h:78
RangeIterator< Self > iterator
Definition range.h:67
T ElementType
Definition range.h:64
IteratorMixin< T, Self > Base
Definition range.h:66
iterator begin() const
Definition range.h:70
const Self & self() const
Definition range.h:65
Self RangeImplementation
Definition range.h:63
~RangeMixin()
Definition range.h:86
iterator end() const
Definition range.h:71
Self tail() const
Definition range.h:75
W::RangeImplementation Wrapped
Definition range.h:103
RangeMorph(const Wrapped &w)
Definition range.h:104
virtual void removeFirst()
Definition range.h:106
virtual void setToEmpty()
Definition range.h:105
virtual T head() const
Definition range.h:107
void removeFirst()
Definition range.h:164
Range()
Definition range.h:161
T head() const
Definition range.h:163
Amorph< Range< T >, RangeInterface< T > > Super
Definition range.h:156
Range(const C &i, typename IsType< int, typename C::RangeImplementation >::T fake=0)
Definition range.h:159
void setToEmpty()
Definition range.h:165
T head() const
Definition range.h:403
Range< T > m_range
Definition range.h:419
bool operator<=(const UniqueRange &r) const
Definition range.h:412
void removeFirst()
Definition range.h:397
UniqueRange(Range< T > r)
Definition range.h:386
bool m_valid
Definition range.h:420
UniqueRange()
Definition range.h:385
void find() const
Definition range.h:388
void setToEmpty()
Definition range.h:408