list.h

Go to the documentation of this file.
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 

Generated on Thu Aug 20 13:54:38 2009 for gwenhywfar by  doxygen 1.5.9