ftmpl_list.h
Go to the documentation of this file.
1 /* emacs edit mode for this file is -*- C++ -*- */
2 
3 #ifndef INCL_LIST_H
4 #define INCL_LIST_H
5 
6 // #include <factory/factoryconf.h>
7 
8 #ifndef NOSTREAMIO
9 #ifdef HAVE_IOSTREAM
10 #include <iostream>
11 #define OSTREAM std::ostream
12 #elif defined(HAVE_IOSTREAM_H)
13 #include <iostream.h>
14 #define OSTREAM ostream
15 #endif
16 #endif /* NOSTREAMIO */
17 
18 template <class T>
20 
21 template <class T>
22 class List;
23 
24 #ifndef NOSTREAMIO
25 template <class T>
26 OSTREAM& operator<< ( OSTREAM &, const List<T> &);
27 #endif
28 
29 template <class T>
30 class ListItem
31 {
32 private:
35  T * item;
36 public:
37  ListItem( const ListItem<T>& );
38  ListItem( const T&, ListItem<T>*, ListItem<T>* );
40  ~ListItem();
44  T& getItem();
45 #ifndef NOSTREAMIO
46  void print ( OSTREAM& );
47 #endif /* NOSTREAMIO */
48  friend class ListIterator<T>;
49  friend class List<T>;
50 };
51 
52 template <class T>
53 class List
54 {
55 private:
58  int _length;
59 public:
60  List();
61  List( const List<T>& );
62  List( const T& );
63  ~List();
64  List<T>& operator= ( const List<T>& );
65  void insert ( const T& );
66  void insert ( const T&, int (*cmpf)( const T&, const T& ) );
67  void insert ( const T&, int (*cmpf)( const T&, const T& ), void (*insf)( T&, const T& ) );
68  void append ( const T& );
69  int isEmpty() const;
70  int length() const;
71  T getFirst() const;
72  void removeFirst();
73  T getLast() const;
74  void removeLast();
75  void sort ( int (*) ( const T&, const T& ) );
76 #ifndef NOSTREAMIO
77  void print ( OSTREAM & ) const;
78  friend OSTREAM& operator<< <T>( OSTREAM & os, const List<T> & l );
79 #endif /* NOSTREAMIO */
80  friend class ListIterator<T>;
81 };
82 
83 #ifndef NOSTREAMIO
84 template <class T>
85 OSTREAM& operator<< ( OSTREAM & os, const List<T> & l );
86 #endif /* NOSTREAMIO */
87 
88 template <class T>
89 class ListIterator {
90 private:
93 public:
94  ListIterator();
95  ListIterator( const ListIterator<T>& );
96  ListIterator( const List<T>& );
97  ~ListIterator();
100  T& getItem() const;
101  int hasItem();
102  void operator++();
103  void operator--();
104  void operator++( int );
105  void operator--( int );
106  void firstItem();
107  void lastItem();
108  void insert( const T& );
109  void append( const T& );
110  void remove( int moveright );
111 };
112 
113 template <class T>
114 int operator== (const List<T>&, const List<T>& );
115 
116 template <class T>
117 List<T> Union ( const List<T>&, const List<T>& );
118 
119 template <class T>
120 List<T> Difference ( const List<T>&, const List<T>& );
121 
122 template <class T>
123 List<T> Union ( const List<T> &, const List<T> & , int (*ecmpf)( const T&, const T& ));
124 
125 template <class T>
126 List<T> Difference ( const List<T> &, const List<T> & , int (*ecmpf)( const T&, const T& ));
127 
128 template <class T>
129 List<T> Difference ( const List<T> & F, const T & G);
130 
131 template <class T>
132 List<T> Difference ( const List<T> & F, const T & G, int (*ecmpf)( const T&, const T& ));
133 
134 template <class T>
135 List<T> Union ( const List<T>&, const List<T>&, int (*cmpf)( const T&, const T& ), void (*insf)( T&, const T& ) );
136 
137 template <class T>
138 T prod ( const List<T>& );
139 
140 template <class T>
141 bool find (const List<T>&, const T& t);
142 
143 template <class T>
144 bool find (const List<T> & F, const T& t, int (*ecmpf)( const T&, const T& ));
145 #endif /* ! INCL_LIST_H */
bool find(const List< T > &, const T &t)
Definition: ftmpl_list.cc:700
ListItem * next
Definition: ftmpl_list.h:33
ListIterator< T > & operator=(const ListIterator< T > &)
Definition: ftmpl_list.cc:410
T prod(const List< T > &)
Definition: ftmpl_list.cc:690
int isEmpty() const
Definition: ftmpl_list.cc:267
ListItem< T > * getPrev()
Definition: ftmpl_list.cc:60
~List()
Definition: ftmpl_list.cc:127
T * item
Definition: ftmpl_list.h:35
List< T > Difference(const List< T > &, const List< T > &)
Definition: ftmpl_list.cc:622
void lastItem()
Definition: ftmpl_list.cc:485
ListItem * prev
Definition: ftmpl_list.h:34
void firstItem()
Definition: ftmpl_list.cc:478
ListItem< T > & operator=(const ListItem< T > &)
Definition: ftmpl_list.cc:40
void insert(const T &)
Definition: ftmpl_list.cc:193
List< T > & operator=(const List< T > &)
Definition: ftmpl_list.cc:140
static TreeM * G
Definition: janet.cc:38
void removeFirst()
Definition: ftmpl_list.cc:287
void operator--()
Definition: ftmpl_list.cc:454
T getFirst() const
Definition: ftmpl_list.cc:279
int _length
Definition: ftmpl_list.h:58
void append(const T &)
Definition: ftmpl_list.cc:509
#define OSTREAM
Definition: ftmpl_list.h:11
void removeLast()
Definition: ftmpl_list.cc:317
ListItem< T > * first
Definition: ftmpl_list.h:56
T & getItem() const
Definition: ftmpl_list.cc:431
ListItem< T > * current
Definition: ftmpl_list.h:92
int operator==(const List< T > &, const List< T > &)
Definition: ftmpl_list.cc:176
T getLast() const
Definition: ftmpl_list.cc:309
void print(OSTREAM &) const
Definition: ftmpl_list.cc:366
List< T > Union(const List< T > &, const List< T > &)
Definition: ftmpl_list.cc:563
ListItem< T > * getNext()
Definition: ftmpl_list.cc:53
void insert(const T &)
Definition: ftmpl_list.cc:492
int length() const
Definition: ftmpl_list.cc:273
List()
Definition: ftmpl_list.cc:86
void operator++()
Definition: ftmpl_list.cc:446
void print(OSTREAM &)
Definition: ftmpl_list.cc:74
ListItem< T > * last
Definition: ftmpl_list.h:57
void append(const T &)
Definition: ftmpl_list.cc:256
static jList * T
Definition: janet.cc:37
int l
Definition: cfEzgcd.cc:94
ListItem(const ListItem< T > &)
Definition: ftmpl_list.cc:6
T & getItem()
Definition: ftmpl_list.cc:67
List< T > * theList
Definition: ftmpl_list.h:91
void sort(int(*)(const T &, const T &))
Definition: ftmpl_list.cc:339