14template<
typename List >
41 return l.empty() &&
o.l.empty();
45 return !(
l.empty() &&
o.l.empty());
53template<
typename List >
56 typedef std::vector< typename List::Type >
Vec;
95 typedef typename List::Type
Type;
139template<
typename List,
typename Predicate >
142 typedef typename List::Type
Type;
166 r.m_list =
r.m_list.tail();
178template<
typename List >
181 typedef typename List::Type
Type;
198 if (
m_list.tail().empty() )
210 r.m_list =
r.m_list.tail();
220template<
typename List >
225 typedef typename List::Type
Type;
246template<
typename List,
typename F >
255 return *
static_cast<const F *
>(
f_space);
258 typedef typename F::result_type
Type;
261 return f()(
l.head() );
283template<
typename T >
291template<
typename T >
304template<
typename T1,
typename T2 >
306 typedef typename T1::Type
Type;
321 if ( !
t.m_1.empty() )
322 t.m_1 =
t.m_1.tail();
324 t.m_2 =
t.m_2.tail();
330template<
typename X >
335template<
typename X,
typename Y >
340template<
typename List >
343 while ( !l.empty() ) {
352template<
typename List,
typename F >
354 while ( !l.empty() ) {
360template<
typename List,
template<
typename >
class F >
362 while ( !l.empty() ) {
368template<
typename List,
typename Pred >
374template<
typename List,
template<
typename >
class Pred >
380template<
typename List,
typename F >
386template<
typename List >
392template<
typename List >
398template<
typename List >
404template<
typename List >
414template<
typename List,
typename Out >
419template<
typename List >
424template<
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
ListIterator & operator++()
Definition list.h:25
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
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
F & f()
Definition list.h:251
Type head() const
Definition list.h:260
F::result_type Type
Definition list.h:258
List l
Definition list.h:248
char f_space[sizeof(F)]
Definition list.h:250
bool empty() const
Definition list.h:271
const F & f() const
Definition list.h:254
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
SharedPtr & operator=(const SharedPtr &o)
Definition list.h:75
SharedVec * vec
Definition list.h:66
SharedPtr(bool a=false)
Definition list.h:67
Vec * operator->()
Definition list.h:84
SharedPtr(const SharedPtr &o)
Definition list.h:69
Vec & operator*()
Definition list.h:83
~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 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
Sorted & operator=(const Sorted &o)
Definition list.h:129
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