Institut de Robòtica i Informàtica Industrial
KRD Group

The CuikSuite Project

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