list.h
Go to the documentation of this file.
1 #ifndef LISTH
2 #define LISTH
3 
4 #include "boolean.h"
5 #include <stdio.h>
6 
26 typedef struct Tbuf
27 {
28  struct Tbuf *previous;
29  struct Tbuf *next;
30  void *data;
31 } Tbuf;
32 
46 typedef struct
47 {
50  unsigned int ele_size;
51  unsigned int num_ele;
52 } Tlist;
53 
61 typedef struct
62 {
65 } Titerator;
66 
67 
76 void InitList(unsigned int ele_size,Tlist *list);
77 
86 void DeleteList(Tlist *list);
87 
95 void DeleteAllItems(Tlist *list);
96 
106 unsigned int ListSize(Tlist *list);
107 
108 
118 boolean ListEmpty(Tlist *list);
119 
130 void AddFirstElement(void *Info,Tlist *list);
131 
132 
143 void AddLastElement(void *Info,Tlist *list);
144 
156 void ExtractFirst(void *Info,Tlist *list);
157 
169 void ExtractLast(void *Info,Tlist *list);
170 
183 boolean HasElement(void *Info,boolean (* cmp)(void *,void*),Tlist *list);
184 
192 void PrintList(Tlist *l);
193 
205 void InitIterator(Titerator *i,Tlist *list);
206 
215 void CopyIterator(Titerator *dst,Titerator *src);
216 
226 void *GetCurrent(Titerator *i);
227 
228 
239 void ExtractCurrent(void *Info,Titerator *i);
240 
251 void AddInFrontOfCurrent(void *Info,Titerator *i);
252 
263 void AddBehindCurrent(void *Info,Titerator *i);
264 
272 void DeleteCurrent(Titerator *i);
273 
274 
282 void First(Titerator *i);
283 
291 void Last(Titerator *i);
292 
303 boolean Advance(Titerator *i);
304 
315 boolean Bacward(Titerator *i);
316 
317 
329 boolean MoveTo(unsigned int n,Titerator *i);
330 
331 
341 boolean EndOfList(Titerator *i);
342 
343 #endif
Definition of the boolean type.
void First(Titerator *i)
Moves an iterator to the first position of its associated list.
Definition: list.c:356
unsigned int ele_size
Definition: list.h:50
Tbuf * first
Definition: list.h:48
struct Tbuf * previous
Definition: list.h:28
void * data
Definition: list.h:30
void Last(Titerator *i)
Moves an iterator to the last position of its associated list.
Definition: list.c:364
void DeleteAllItems(Tlist *list)
Resets a list.
Definition: list.c:162
void AddBehindCurrent(void *Info, Titerator *i)
Adds an element to the list behind the position pointed by the iterator.
Definition: list.c:333
boolean MoveTo(unsigned int n, Titerator *i)
Moves an iterator to a given position of its associated list.
Definition: list.c:417
void DeleteList(Tlist *list)
Destructor.
Definition: list.c:153
void ExtractLast(void *Info, Tlist *list)
Extracts the last element from the list.
Definition: list.c:228
void AddLastElement(void *Info, Tlist *list)
Adds an element at the tail of the list.
Definition: list.c:206
unsigned int num_ele
Definition: list.h:51
boolean EndOfList(Titerator *i)
Checks if an iterator is pointing at the end of the list.
Definition: list.c:445
boolean HasElement(void *Info, boolean(*cmp)(void *, void *), Tlist *list)
Searches an element in the list.
Definition: list.c:244
A generic list.
Definition: list.h:46
void PrintList(Tlist *l)
Prints a list to stdout.
Definition: list.c:261
void InitIterator(Titerator *i, Tlist *list)
Constructor.
Definition: list.c:284
Tbuf * current
Definition: list.h:63
boolean ListEmpty(Tlist *list)
Checks if a list is empty.
Definition: list.c:188
void ExtractFirst(void *Info, Tlist *list)
Extracts the first element from the list.
Definition: list.c:212
void CopyIterator(Titerator *dst, Titerator *src)
Copy constructor.
Definition: list.c:290
void ExtractCurrent(void *Info, Titerator *i)
Extract the element pointed by the iterator from the list.
Definition: list.c:308
void * GetCurrent(Titerator *i)
Gets the element pointed by the iterator.
Definition: list.c:299
Tbuf * last
Definition: list.h:49
struct Tbuf * next
Definition: list.h:29
void AddInFrontOfCurrent(void *Info, Titerator *i)
Adds an element to the list in front of the position pointed by the iterator.
Definition: list.c:325
Tlist * list
Definition: list.h:64
A node in a list.
Definition: list.h:26
List iterator.
Definition: list.h:61
boolean Bacward(Titerator *i)
Moves an iterator to the previuos position of its associated list.
Definition: list.c:395
void AddFirstElement(void *Info, Tlist *list)
Adds an element at the head of the list.
Definition: list.c:196
void DeleteCurrent(Titerator *i)
Destructor.
Definition: list.c:341
void InitList(unsigned int ele_size, Tlist *list)
Constructor.
Definition: list.c:135
unsigned int ListSize(Tlist *list)
Gets the number of elements in the list.
Definition: list.c:180
boolean Advance(Titerator *i)
Moves an iterator to the next position of its associated list.
Definition: list.c:373