mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2026-01-26 21:41:34 +03:00
136 lines
2.9 KiB
C
136 lines
2.9 KiB
C
/**
|
|
* @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
|
|
|
|
typedef struct _xmlLink xmlLink;
|
|
typedef xmlLink *xmlLinkPtr;
|
|
|
|
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__ */
|