| /** | |
| * @file | |
| * | |
| * @brief lists interfaces | |
| * | |
| * this module implement the list support used in | |
| * various place in the library. | |
| * | |
| * @copyright See Copyright for the status of this software. | |
| * | |
| * @author Gary Pennington | |
| */ | |
| #ifndef __XML_LINK_INCLUDE__ | |
| #define __XML_LINK_INCLUDE__ | |
| #include <libxml/xmlversion.h> | |
| #ifdef __cplusplus | |
| extern "C" { | |
| #endif | |
| /** | |
| * Linked list item | |
| * | |
| * @deprecated Don't use in new code. | |
| */ | |
| typedef struct _xmlLink xmlLink; | |
| typedef xmlLink *xmlLinkPtr; | |
| /** | |
| * Linked list | |
| * | |
| * @deprecated Don't use in new code. | |
| */ | |
| typedef struct _xmlList xmlList; | |
| typedef xmlList *xmlListPtr; | |
| /** | |
| * Callback function used to free data from a list. | |
| * | |
| * @param lk the data to deallocate | |
| */ | |
| typedef void (*xmlListDeallocator) (xmlLink *lk); | |
| /** | |
| * Callback function used to compare 2 data. | |
| * | |
| * @param data0 the first data | |
| * @param data1 the second data | |
| * @returns 0 is equality, -1 or 1 otherwise depending on the ordering. | |
| */ | |
| typedef int (*xmlListDataCompare) (const void *data0, const void *data1); | |
| /** | |
| * Callback function used when walking a list with #xmlListWalk. | |
| * | |
| * @param data the data found in the list | |
| * @param user extra user provided data to the walker | |
| * @returns 0 to stop walking the list, 1 otherwise. | |
| */ | |
| typedef int (*xmlListWalker) (const void *data, void *user); | |
| /* Creation/Deletion */ | |
| XMLPUBFUN xmlList * | |
| xmlListCreate (xmlListDeallocator deallocator, | |
| xmlListDataCompare compare); | |
| XMLPUBFUN void | |
| xmlListDelete (xmlList *l); | |
| /* Basic Operators */ | |
| XMLPUBFUN void * | |
| xmlListSearch (xmlList *l, | |
| void *data); | |
| XMLPUBFUN void * | |
| xmlListReverseSearch (xmlList *l, | |
| void *data); | |
| XMLPUBFUN int | |
| xmlListInsert (xmlList *l, | |
| void *data) ; | |
| XMLPUBFUN int | |
| xmlListAppend (xmlList *l, | |
| void *data) ; | |
| XMLPUBFUN int | |
| xmlListRemoveFirst (xmlList *l, | |
| void *data); | |
| XMLPUBFUN int | |
| xmlListRemoveLast (xmlList *l, | |
| void *data); | |
| XMLPUBFUN int | |
| xmlListRemoveAll (xmlList *l, | |
| void *data); | |
| XMLPUBFUN void | |
| xmlListClear (xmlList *l); | |
| XMLPUBFUN int | |
| xmlListEmpty (xmlList *l); | |
| XMLPUBFUN xmlLink * | |
| xmlListFront (xmlList *l); | |
| XMLPUBFUN xmlLink * | |
| xmlListEnd (xmlList *l); | |
| XMLPUBFUN int | |
| xmlListSize (xmlList *l); | |
| XMLPUBFUN void | |
| xmlListPopFront (xmlList *l); | |
| XMLPUBFUN void | |
| xmlListPopBack (xmlList *l); | |
| XMLPUBFUN int | |
| xmlListPushFront (xmlList *l, | |
| void *data); | |
| XMLPUBFUN int | |
| xmlListPushBack (xmlList *l, | |
| void *data); | |
| /* Advanced Operators */ | |
| XMLPUBFUN void | |
| xmlListReverse (xmlList *l); | |
| XMLPUBFUN void | |
| xmlListSort (xmlList *l); | |
| XMLPUBFUN void | |
| xmlListWalk (xmlList *l, | |
| xmlListWalker walker, | |
| void *user); | |
| XMLPUBFUN void | |
| xmlListReverseWalk (xmlList *l, | |
| xmlListWalker walker, | |
| void *user); | |
| XMLPUBFUN void | |
| xmlListMerge (xmlList *l1, | |
| xmlList *l2); | |
| XMLPUBFUN xmlList * | |
| xmlListDup (xmlList *old); | |
| XMLPUBFUN int | |
| xmlListCopy (xmlList *cur, | |
| xmlList *old); | |
| /* Link operators */ | |
| XMLPUBFUN void * | |
| xmlLinkGetData (xmlLink *lk); | |
| /* xmlListUnique() */ | |
| /* xmlListSwap */ | |
| #ifdef __cplusplus | |
| } | |
| #endif | |
| #endif /* __XML_LINK_INCLUDE__ */ |