1ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/* 2ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Summary: lists interfaces 394442ad4107000e6d49f9b85a46a591495a57632Selim Gurun * Description: this module implement the list support used in 4ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * various place in the library. 5ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 6ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Copy: See Copyright for the status of this software. 7ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 8ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Author: Gary Pennington <Gary.Pennington@uk.sun.com> 9ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 10ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 11ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifndef __XML_LINK_INCLUDE__ 12ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#define __XML_LINK_INCLUDE__ 13ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 14ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/xmlversion.h> 15ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 16ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef __cplusplus 17ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectextern "C" { 18ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 19ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 20ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projecttypedef struct _xmlLink xmlLink; 21ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projecttypedef xmlLink *xmlLinkPtr; 22ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 23ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projecttypedef struct _xmlList xmlList; 24ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projecttypedef xmlList *xmlListPtr; 25ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 26ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 27ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlListDeallocator: 28ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @lk: the data to deallocate 29ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 30ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Callback function used to free data from a list. 31ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 32ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projecttypedef void (*xmlListDeallocator) (xmlLinkPtr lk); 33ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 34ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlListDataCompare: 35ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @data0: the first data 36ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @data1: the second data 37ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 38ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Callback function used to compare 2 data. 39ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 40ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns 0 is equality, -1 or 1 otherwise depending on the ordering. 41ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 42ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projecttypedef int (*xmlListDataCompare) (const void *data0, const void *data1); 43ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 44ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlListWalker: 45ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @data: the data found in the list 46ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @user: extra user provided data to the walker 47ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 48ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Callback function used when walking a list with xmlListWalk(). 49ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 50ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns 0 to stop walking the list, 1 otherwise. 51ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 52ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projecttypedef int (*xmlListWalker) (const void *data, const void *user); 53ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 54ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/* Creation/Deletion */ 55ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectXMLPUBFUN xmlListPtr XMLCALL 56ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListCreate (xmlListDeallocator deallocator, 57ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListDataCompare compare); 5894442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN void XMLCALL 59ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListDelete (xmlListPtr l); 60ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 61ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/* Basic Operators */ 6294442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN void * XMLCALL 63ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListSearch (xmlListPtr l, 64ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project void *data); 6594442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN void * XMLCALL 66ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListReverseSearch (xmlListPtr l, 67ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project void *data); 6894442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN int XMLCALL 69ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListInsert (xmlListPtr l, 70ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project void *data) ; 7194442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN int XMLCALL 72ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListAppend (xmlListPtr l, 73ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project void *data) ; 7494442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN int XMLCALL 75ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListRemoveFirst (xmlListPtr l, 76ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project void *data); 7794442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN int XMLCALL 78ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListRemoveLast (xmlListPtr l, 79ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project void *data); 8094442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN int XMLCALL 81ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListRemoveAll (xmlListPtr l, 82ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project void *data); 8394442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN void XMLCALL 84ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListClear (xmlListPtr l); 8594442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN int XMLCALL 86ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListEmpty (xmlListPtr l); 8794442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN xmlLinkPtr XMLCALL 88ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListFront (xmlListPtr l); 8994442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN xmlLinkPtr XMLCALL 90ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListEnd (xmlListPtr l); 9194442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN int XMLCALL 92ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListSize (xmlListPtr l); 93ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 9494442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN void XMLCALL 95ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListPopFront (xmlListPtr l); 9694442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN void XMLCALL 97ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListPopBack (xmlListPtr l); 9894442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN int XMLCALL 99ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListPushFront (xmlListPtr l, 100ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project void *data); 10194442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN int XMLCALL 102ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListPushBack (xmlListPtr l, 103ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project void *data); 104ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 105ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/* Advanced Operators */ 10694442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN void XMLCALL 107ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListReverse (xmlListPtr l); 10894442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN void XMLCALL 109ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListSort (xmlListPtr l); 11094442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN void XMLCALL 111ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListWalk (xmlListPtr l, 112ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListWalker walker, 113ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const void *user); 11494442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN void XMLCALL 115ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListReverseWalk (xmlListPtr l, 116ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListWalker walker, 117ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const void *user); 11894442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN void XMLCALL 119ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListMerge (xmlListPtr l1, 120ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListPtr l2); 12194442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN xmlListPtr XMLCALL 122ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListDup (const xmlListPtr old); 12394442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN int XMLCALL 124ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlListCopy (xmlListPtr cur, 125ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const xmlListPtr old); 126ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/* Link operators */ 12794442ad4107000e6d49f9b85a46a591495a57632Selim GurunXMLPUBFUN void * XMLCALL 128ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlLinkGetData (xmlLinkPtr lk); 129ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 130ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/* xmlListUnique() */ 131ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/* xmlListSwap */ 132ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 133ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef __cplusplus 134ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 135ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 136ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 137ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif /* __XML_LINK_INCLUDE__ */ 138