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