gwenhywfar 4.0.3
|
00001 /*************************************************************************** 00002 $RCSfile$ 00003 ------------------- 00004 cvs : $Id$ 00005 begin : Sat Nov 15 2003 00006 copyright : (C) 2003 by Martin Preuss 00007 email : martin@libchipcard.de 00008 00009 *************************************************************************** 00010 * * 00011 * This library is free software; you can redistribute it and/or * 00012 * modify it under the terms of the GNU Lesser General Public * 00013 * License as published by the Free Software Foundation; either * 00014 * version 2.1 of the License, or (at your option) any later version. * 00015 * * 00016 * This library is distributed in the hope that it will be useful, * 00017 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00018 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 00019 * Lesser General Public License for more details. * 00020 * * 00021 * You should have received a copy of the GNU Lesser General Public * 00022 * License along with this library; if not, write to the Free Software * 00023 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * 00024 * MA 02111-1307 USA * 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 /* This is needed for PalmOS, because it define some functions needed */ 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 /* defgroup */ 00489 00490 00491 #ifdef __cplusplus 00492 } 00493 #endif 00494 00495 00496 #endif 00497 00498 00499