list.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef GWENHYWFAR_LIST_H
00030 #define GWENHYWFAR_LIST_H
00031
00032
00033 #ifdef __cplusplus
00034 extern "C" {
00035 #endif
00036
00037 #include <gwenhywfar/gwenhywfarapi.h>
00038 #include <gwenhywfar/inherit.h>
00039 #include <gwenhywfar/refptr.h>
00040
00041 #include <string.h>
00042 #include <stdio.h>
00043
00044
00050
00055 typedef struct GWEN_LIST GWEN_LIST;
00056
00058 typedef void *(*GWEN_LIST_FOREACH_CB)(void *element, void *user_data);
00059
00064 typedef struct GWEN_LIST GWEN_CONSTLIST;
00065
00067 typedef const void *(*GWEN_CONSTLIST_FOREACH_CB)(const void *element,
00068 void *user_data);
00069
00072 typedef struct GWEN_LIST_ITERATOR GWEN_LIST_ITERATOR;
00073
00076 typedef struct GWEN_LIST_ITERATOR GWEN_CONSTLIST_ITERATOR;
00077
00078
00080 GWEN_INHERIT_FUNCTION_LIB_DEFS(GWEN_LIST, GWENHYWFAR_API)
00081
00082
00083
00084 GWENHYWFAR_API
00085 GWEN_LIST *GWEN_List_new();
00086
00089 GWENHYWFAR_API
00090 void GWEN_List_free(GWEN_LIST *l);
00091
00094 GWENHYWFAR_API
00095 GWEN_LIST *GWEN_List_dup(const GWEN_LIST *l);
00096
00097
00098 GWENHYWFAR_API
00099 void GWEN_List_Unshare(GWEN_LIST *l);
00100
00101
00105 GWENHYWFAR_API
00106 void GWEN_List_Dump(const GWEN_LIST *l, FILE *f, unsigned int indent);
00107
00111 GWENHYWFAR_API
00112 void GWEN_List_PushBack(GWEN_LIST *l, void *p);
00113
00117 GWENHYWFAR_API
00118 void GWEN_List_PushBackRefPtr(GWEN_LIST *l, GWEN_REFPTR *rp);
00119
00124 GWENHYWFAR_API
00125 void GWEN_List_PushFront(GWEN_LIST *l, void *p);
00126
00131 GWENHYWFAR_API
00132 void GWEN_List_PushFrontRefPtr(GWEN_LIST *l, GWEN_REFPTR *rp);
00133
00138 GWENHYWFAR_API
00139 void *GWEN_List_GetFront(const GWEN_LIST *l);
00140
00145 GWENHYWFAR_API
00146 GWEN_REFPTR *GWEN_List_GetFrontRefPtr(const GWEN_LIST *l);
00147
00152 GWENHYWFAR_API
00153 void *GWEN_List_GetBack(const GWEN_LIST *l);
00154
00159 GWENHYWFAR_API
00160 GWEN_REFPTR *GWEN_List_GetBackRefPtr(const GWEN_LIST *l);
00161
00168 GWENHYWFAR_API
00169 void GWEN_List_Erase(GWEN_LIST *l, GWEN_LIST_ITERATOR *it);
00170
00177 GWENHYWFAR_API
00178 void GWEN_List_Remove(GWEN_LIST *l, const void *element);
00179
00180
00186 GWENHYWFAR_API
00187 unsigned int GWEN_List_GetSize(const GWEN_LIST *l);
00188
00191 GWENHYWFAR_API
00192 int GWEN_List_IsEmpty(const GWEN_LIST *l);
00193
00194 GWENHYWFAR_API
00195 GWEN_REFPTR_INFO *GWEN_List_GetRefPtrInfo(const GWEN_LIST *l);
00196
00197 GWENHYWFAR_API
00198 void GWEN_List_SetRefPtrInfo(GWEN_LIST *l, GWEN_REFPTR_INFO *rpi);
00199
00204 GWENHYWFAR_API
00205 void GWEN_List_PopBack(GWEN_LIST *l);
00206
00211 GWENHYWFAR_API
00212 void GWEN_List_PopFront(GWEN_LIST *l);
00213
00218 GWENHYWFAR_API
00219 void GWEN_List_Clear(GWEN_LIST *l);
00220
00227 GWENHYWFAR_API
00228 GWEN_LIST_ITERATOR *GWEN_List_FindIter(GWEN_LIST *l, const void *element);
00229
00235 GWENHYWFAR_API
00236 const void *GWEN_List_Contains(GWEN_LIST *l, const void *element);
00237
00250 GWENHYWFAR_API
00251 void *GWEN_List_ForEach(GWEN_LIST *list, GWEN_LIST_FOREACH_CB func,
00252 void *user_data);
00253
00255 GWENHYWFAR_API
00256 GWEN_LIST_ITERATOR *GWEN_List_First(const GWEN_LIST *l);
00257
00259 GWENHYWFAR_API
00260 GWEN_LIST_ITERATOR *GWEN_List_Last(const GWEN_LIST *l);
00261
00265 GWENHYWFAR_API
00266 GWEN_LIST_ITERATOR *GWEN_ListIterator_new(const GWEN_LIST *l);
00267
00269 GWENHYWFAR_API
00270 void GWEN_ListIterator_free(GWEN_LIST_ITERATOR *li);
00271
00276 GWENHYWFAR_API
00277 void *GWEN_ListIterator_Previous(GWEN_LIST_ITERATOR *li);
00278
00283 GWENHYWFAR_API
00284 GWEN_REFPTR *GWEN_ListIterator_PreviousRefPtr(GWEN_LIST_ITERATOR *li);
00285
00290 GWENHYWFAR_API
00291 void *GWEN_ListIterator_Next(GWEN_LIST_ITERATOR *li);
00292
00297 GWENHYWFAR_API
00298 GWEN_REFPTR *GWEN_ListIterator_NextRefPtr(GWEN_LIST_ITERATOR *li);
00299
00304 GWENHYWFAR_API
00305 void *GWEN_ListIterator_Data(GWEN_LIST_ITERATOR *li);
00306
00311 GWENHYWFAR_API
00312 GWEN_REFPTR *GWEN_ListIterator_DataRefPtr(GWEN_LIST_ITERATOR *li);
00313
00314 GWENHYWFAR_API
00315 void GWEN_ListIterator_IncLinkCount(GWEN_LIST_ITERATOR *li);
00316
00317 GWENHYWFAR_API
00318 unsigned int GWEN_ListIterator_GetLinkCount(const GWEN_LIST_ITERATOR *li);
00319
00320
00321
00322
00324 GWENHYWFAR_API
00325 GWEN_CONSTLIST *GWEN_ConstList_new();
00326
00330 GWENHYWFAR_API
00331 void GWEN_ConstList_free(GWEN_CONSTLIST *l);
00332
00336 GWENHYWFAR_API
00337 void GWEN_ConstList_PushBack(GWEN_CONSTLIST *l, const void *p);
00338
00343 GWENHYWFAR_API
00344 void GWEN_ConstList_PushFront(GWEN_CONSTLIST *l, const void *p);
00345
00350 GWENHYWFAR_API
00351 const void *GWEN_ConstList_GetFront(const GWEN_CONSTLIST *l);
00352
00357 GWENHYWFAR_API
00358 const void *GWEN_ConstList_GetBack(const GWEN_CONSTLIST *l);
00359
00365 GWENHYWFAR_API
00366 unsigned int GWEN_ConstList_GetSize(const GWEN_CONSTLIST *l);
00367
00370 GWENHYWFAR_API
00371 int GWEN_ConstList_IsEmpty(const GWEN_LIST *l);
00372
00377 GWENHYWFAR_API
00378 void GWEN_ConstList_PopBack(GWEN_CONSTLIST *l);
00379
00384 GWENHYWFAR_API
00385 void GWEN_ConstList_PopFront(GWEN_CONSTLIST *l);
00386
00391 GWENHYWFAR_API
00392 void GWEN_ConstList_Clear(GWEN_CONSTLIST *l);
00393
00406 GWENHYWFAR_API
00407 const void *GWEN_ConstList_ForEach(GWEN_CONSTLIST *list,
00408 GWEN_CONSTLIST_FOREACH_CB func,
00409 void *user_data);
00410
00417 GWENHYWFAR_API
00418 GWEN_CONSTLIST_ITERATOR *GWEN_ConstList_FindIter(const GWEN_CONSTLIST *l, const void *element);
00419
00425 GWENHYWFAR_API
00426 const void *GWEN_ConstList_Contains(const GWEN_CONSTLIST *l, const void *element);
00427
00428
00435 GWENHYWFAR_API
00436 void GWEN_ConstList_Erase(GWEN_CONSTLIST *l, GWEN_CONSTLIST_ITERATOR *it);
00437
00444 GWENHYWFAR_API
00445 void GWEN_ConstList_Remove(GWEN_CONSTLIST *l, const void *element);
00446
00448 GWENHYWFAR_API
00449 GWEN_CONSTLIST_ITERATOR *GWEN_ConstList_First(const GWEN_CONSTLIST *l);
00450
00452 GWENHYWFAR_API
00453 GWEN_CONSTLIST_ITERATOR *GWEN_ConstList_Last(const GWEN_CONSTLIST *l);
00454
00458 GWENHYWFAR_API
00459 GWEN_CONSTLIST_ITERATOR *GWEN_ConstListIterator_new(const GWEN_CONSTLIST *l);
00460
00462 GWENHYWFAR_API
00463 void GWEN_ConstListIterator_free(GWEN_CONSTLIST_ITERATOR *li);
00464
00469 GWENHYWFAR_API
00470 const void *GWEN_ConstListIterator_Previous(GWEN_CONSTLIST_ITERATOR *li);
00471
00476 GWENHYWFAR_API
00477 const void *GWEN_ConstListIterator_Next(GWEN_CONSTLIST_ITERATOR *li);
00478
00483 GWENHYWFAR_API
00484 const void *GWEN_ConstListIterator_Data(GWEN_CONSTLIST_ITERATOR *li);
00485
00486
00487
00489
00490
00491 #ifdef __cplusplus
00492 }
00493 #endif
00494
00495
00496 #endif
00497
00498
00499