codekingpro/portable-devtools
115k
1/*2 * Summary: lists interfaces3 * Description: this module implement the list support used in4 * various place in the library.5 *6 * Copy: See Copyright for the status of this software.7 *8 * Author: Gary Pennington <Gary.Pennington@uk.sun.com>9 */10 11#ifndef __XML_LINK_INCLUDE__12#define __XML_LINK_INCLUDE__13 14#include <libxml/xmlversion.h>15 16#ifdef __cplusplus17extern "C" {18#endif19 20typedef struct _xmlLink xmlLink;21typedef xmlLink *xmlLinkPtr;22 23typedef struct _xmlList xmlList;24typedef xmlList *xmlListPtr;25 26/**27 * xmlListDeallocator:28 * @lk: the data to deallocate29 *30 * Callback function used to free data from a list.31 */32typedef void (*xmlListDeallocator) (xmlLinkPtr lk);33/**34 * xmlListDataCompare:35 * @data0: the first data36 * @data1: the second data37 *38 * Callback function used to compare 2 data.39 *40 * Returns 0 is equality, -1 or 1 otherwise depending on the ordering.41 */42typedef int (*xmlListDataCompare) (const void *data0, const void *data1);43/**44 * xmlListWalker:45 * @data: the data found in the list46 * @user: extra user provided data to the walker47 *48 * Callback function used when walking a list with xmlListWalk().49 *50 * Returns 0 to stop walking the list, 1 otherwise.51 */52typedef int (*xmlListWalker) (const void *data, void *user);53 54/* Creation/Deletion */55XMLPUBFUN xmlListPtr56 xmlListCreate (xmlListDeallocator deallocator,57 xmlListDataCompare compare);58XMLPUBFUN void59 xmlListDelete (xmlListPtr l);60 61/* Basic Operators */62XMLPUBFUN void *63 xmlListSearch (xmlListPtr l,64 void *data);65XMLPUBFUN void *66 xmlListReverseSearch (xmlListPtr l,67 void *data);68XMLPUBFUN int69 xmlListInsert (xmlListPtr l,70 void *data) ;71XMLPUBFUN int72 xmlListAppend (xmlListPtr l,73 void *data) ;74XMLPUBFUN int75 xmlListRemoveFirst (xmlListPtr l,76 void *data);77XMLPUBFUN int78 xmlListRemoveLast (xmlListPtr l,79 void *data);80XMLPUBFUN int81 xmlListRemoveAll (xmlListPtr l,82 void *data);83XMLPUBFUN void84 xmlListClear (xmlListPtr l);85XMLPUBFUN int86 xmlListEmpty (xmlListPtr l);87XMLPUBFUN xmlLinkPtr88 xmlListFront (xmlListPtr l);89XMLPUBFUN xmlLinkPtr90 xmlListEnd (xmlListPtr l);91XMLPUBFUN int92 xmlListSize (xmlListPtr l);93 94XMLPUBFUN void95 xmlListPopFront (xmlListPtr l);96XMLPUBFUN void97 xmlListPopBack (xmlListPtr l);98XMLPUBFUN int99 xmlListPushFront (xmlListPtr l,100 void *data);101XMLPUBFUN int102 xmlListPushBack (xmlListPtr l,103 void *data);104 105/* Advanced Operators */106XMLPUBFUN void107 xmlListReverse (xmlListPtr l);108XMLPUBFUN void109 xmlListSort (xmlListPtr l);110XMLPUBFUN void111 xmlListWalk (xmlListPtr l,112 xmlListWalker walker,113 void *user);114XMLPUBFUN void115 xmlListReverseWalk (xmlListPtr l,116 xmlListWalker walker,117 void *user);118XMLPUBFUN void119 xmlListMerge (xmlListPtr l1,120 xmlListPtr l2);121XMLPUBFUN xmlListPtr122 xmlListDup (const xmlListPtr old);123XMLPUBFUN int124 xmlListCopy (xmlListPtr cur,125 const xmlListPtr old);126/* Link operators */127XMLPUBFUN void *128 xmlLinkGetData (xmlLinkPtr lk);129 130/* xmlListUnique() */131/* xmlListSwap */132 133#ifdef __cplusplus134}135#endif136 137#endif /* __XML_LINK_INCLUDE__ */138 