list.h
Go to the documentation of this file.00001 #ifndef LISTH
00002 #define LISTH
00003
00004 #include "boolean.h"
00005 #include <stdio.h>
00006
00026 typedef struct Tbuf
00027 {
00028 struct Tbuf *previous;
00029 struct Tbuf *next;
00030 void *data;
00031 } Tbuf;
00032
00046 typedef struct
00047 {
00048 Tbuf *first;
00049 Tbuf *last;
00050 unsigned int ele_size;
00051 unsigned int num_ele;
00052 } Tlist;
00053
00061 typedef struct
00062 {
00063 Tbuf *current;
00064 Tlist *list;
00065 } Titerator;
00066
00067
00076 void InitList(unsigned int ele_size,Tlist *list);
00077
00086 void DeleteList(Tlist *list);
00087
00095 void DeleteAllItems(Tlist *list);
00096
00106 unsigned int ListSize(Tlist *list);
00107
00108
00118 boolean ListEmpty(Tlist *list);
00119
00130 void AddFirstElement(void *Info,Tlist *list);
00131
00132
00143 void AddLastElement(void *Info,Tlist *list);
00144
00156 void ExtractFirst(void *Info,Tlist *list);
00157
00169 void ExtractLast(void *Info,Tlist *list);
00170
00183 boolean HasElement(void *Info,boolean (* cmp)(void *,void*),Tlist *list);
00184
00192 void PrintList(Tlist *l);
00193
00205 void InitIterator(Titerator *i,Tlist *list);
00206
00215 void CopyIterator(Titerator *dst,Titerator *src);
00216
00226 void *GetCurrent(Titerator *i);
00227
00228
00239 void ExtractCurrent(void *Info,Titerator *i);
00240
00251 void AddInFrontOfCurrent(void *Info,Titerator *i);
00252
00263 void AddBehindCurrent(void *Info,Titerator *i);
00264
00272 void DeleteCurrent(Titerator *i);
00273
00274
00282 void First(Titerator *i);
00283
00291 void Last(Titerator *i);
00292
00303 boolean Advance(Titerator *i);
00304
00315 boolean Bacward(Titerator *i);
00316
00317
00329 boolean MoveTo(unsigned int n,Titerator *i);
00330
00331
00341 boolean EndOfList(Titerator *i);
00342
00343 #endif