14 template<
typename List >
41 return l.empty() && o.
l.empty();
45 return !(
l.empty() && o.
l.empty());
53 template<
typename List >
56 typedef std::vector< typename List::Type >
Vec;
82 operator bool() {
return vec; }
95 typedef typename List::Type
Type;
139 template<
typename List,
typename Predicate >
142 typedef typename List::Type
Type;
178 template<
typename List >
181 typedef typename List::Type
Type;
198 if (
m_list.tail().empty() )
220 template<
typename List >
225 typedef typename List::Type
Type;
246 template<
typename List,
typename F >
252 return *
static_cast<F *
>(
f_space);
255 return *
static_cast<const F *
>(
f_space);
258 typedef typename F::result_type
Type;
261 return f()(
l.head() );
276 Map(
const List &_l,
const F &_f )
283 template<
typename T >
291 template<
typename T >
304 template<
typename T1,
typename T2 >
306 typedef typename T1::Type
Type;
321 if ( !t.
m_1.empty() )
330 template<
typename X >
335 template<
typename X,
typename Y >
340 template<
typename List >
343 while ( !l.empty() ) {
352 template<
typename List,
typename F >
353 void foreach( List l, F f ) {
354 while ( !l.empty() ) {
360 template<
typename List,
template<
typename >
class F >
361 void foreach( List l, F< typename List::Type > f ) {
362 while ( !l.empty() ) {
368 template<
typename List,
typename Pred >
374 template<
typename List,
template<
typename >
class Pred >
380 template<
typename List,
typename F >
386 template<
typename List >
392 template<
typename List >
398 template<
typename List >
404 template<
typename List >
414 template<
typename List,
typename Out >
419 template<
typename List >
424 template<
typename List >
ListIterator< List > end(List)
Definition: list.h:425
ListIterator< List > begin(List l)
Definition: list.h:420
Singular< X > singular(const X &x)
Definition: list.h:331
Map< List, F > map(const List &l, const F &f)
Definition: list.h:381
Append< X, Y > append(const X &x, const Y &y)
Definition: list.h:336
Unique< List > unique(List l)
Definition: list.h:393
size_t count(List l)
Definition: list.h:341
Filtered< List, Pred > filter(List l, Pred p)
Definition: list.h:369
Take< List > take(int t, List l)
Definition: list.h:399
Sorted< List > sort(List l)
Definition: list.h:387
void output(List l, Out it)
Definition: list.h:415
List drop(int t, List l)
Definition: list.h:405
bool empty() const
Definition: list.h:318
T1::Type Type
Definition: list.h:306
T1 m_1
Definition: list.h:307
Append(T1 a, T2 b)
Definition: list.h:311
Type head() const
Definition: list.h:312
T2 m_2
Definition: list.h:308
Append()
Definition: list.h:310
Append tail() const
Definition: list.h:319
T head() const
Definition: list.h:286
T Type
Definition: list.h:285
bool empty() const
Definition: list.h:287
Empty tail() const
Definition: list.h:288
bool empty() const
Definition: list.h:146
Filtered(List l, Predicate p)
Definition: list.h:170
Type head() const
Definition: list.h:151
Filtered()
Definition: list.h:175
List::Type Type
Definition: list.h:142
Predicate m_pred
Definition: list.h:144
Filtered tail() const
Definition: list.h:162
List m_list
Definition: list.h:143
void seek() const
Definition: list.h:156
ListIterator(List _l=List())
Definition: list.h:48
List::Type value_type
Definition: list.h:18
value_type & reference
Definition: list.h:21
List l
Definition: list.h:23
value_type & pointer
Definition: list.h:20
ptrdiff_t difference_type
Definition: list.h:19
List::Type operator*()
Definition: list.h:36
ListIterator operator++(int)
Definition: list.h:30
ListIterator & operator++()
Definition: list.h:25
bool operator==(const ListIterator &o) const
Definition: list.h:40
bool operator!=(const ListIterator &o) const
Definition: list.h:44
std::forward_iterator_tag iterator_category
Definition: list.h:17
Map(const List &_l, const F &_f)
Definition: list.h:276
Map()
Definition: list.h:275
Type head() const
Definition: list.h:260
F::result_type Type
Definition: list.h:258
const F & f() const
Definition: list.h:254
List l
Definition: list.h:248
char f_space[sizeof(F)]
Definition: list.h:250
bool empty() const
Definition: list.h:271
F & f()
Definition: list.h:251
Map tail() const
Definition: list.h:264
T Type
Definition: list.h:293
Singular(T i)
Definition: list.h:298
bool empty() const
Definition: list.h:300
Singular()
Definition: list.h:297
T head() const
Definition: list.h:299
T m_value
Definition: list.h:294
Singular tail() const
Definition: list.h:301
bool m_empty
Definition: list.h:295
SharedVec * vec
Definition: list.h:66
Vec & operator*()
Definition: list.h:83
SharedPtr(bool a=false)
Definition: list.h:67
SharedPtr & operator=(const SharedPtr &o)
Definition: list.h:75
Vec * operator->()
Definition: list.h:84
SharedPtr(const SharedPtr &o)
Definition: list.h:69
~SharedPtr()
Definition: list.h:86
void _ref()
Definition: list.h:61
Vec vec
Definition: list.h:59
int refs
Definition: list.h:58
void _deref()
Definition: list.h:62
SharedVec()
Definition: list.h:60
SharedPtr m_sorted
Definition: list.h:97
Sorted & operator=(const Sorted &o)
Definition: list.h:129
Sorted tail() const
Definition: list.h:114
Sorted(List l=List())
Definition: list.h:136
bool empty() const
Definition: list.h:121
void sort() const
Definition: list.h:100
List m_list
Definition: list.h:96
List::Type Type
Definition: list.h:95
size_t m_pos
Definition: list.h:98
Sorted(const Sorted &o)
Definition: list.h:126
std::vector< typename List::Type > Vec
Definition: list.h:56
Type head() const
Definition: list.h:109
List::Type Type
Definition: list.h:225
Take(List _l, int m)
Definition: list.h:242
bool empty() const
Definition: list.h:231
int remaining
Definition: list.h:223
Type head() const
Definition: list.h:227
Take()
Definition: list.h:243
Take tail() const
Definition: list.h:235
List l
Definition: list.h:222
List m_list
Definition: list.h:182
List::Type Type
Definition: list.h:181
bool empty() const
Definition: list.h:184
Unique tail() const
Definition: list.h:206
void seek() const
Definition: list.h:194
Unique(List l=List())
Definition: list.h:214
Type head() const
Definition: list.h:189