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