list

list - lists interfaces

this module implement the list support used in various place in the library.

Author(s): Gary Pennington <Gary.Pennington@uk.sun.com>

Synopsis

typedef struct _xmlLink xmlLink;
typedef xmlLink * xmlLinkPtr;
typedef struct _xmlList xmlList;
typedef xmlList * xmlListPtr;
void *	xmlLinkGetData			(xmlLinkPtr lk);
int	xmlListAppend			(xmlListPtr l, 
void * data); void xmlListClear (xmlListPtr l); int xmlListCopy (xmlListPtr cur,
xmlListPtr old); xmlListPtr xmlListCreate (xmlListDeallocator deallocator,
xmlListDataCompare compare); typedef int xmlListDataCompare (const void * data0,
const void * data1); typedef void xmlListDeallocator (xmlLinkPtr lk); void xmlListDelete (xmlListPtr l); xmlListPtr xmlListDup (xmlListPtr old); int xmlListEmpty (xmlListPtr l); xmlLinkPtr xmlListEnd (xmlListPtr l); xmlLinkPtr xmlListFront (xmlListPtr l); int xmlListInsert (xmlListPtr l,
void * data); void xmlListMerge (xmlListPtr l1,
xmlListPtr l2); void xmlListPopBack (xmlListPtr l); void xmlListPopFront (xmlListPtr l); int xmlListPushBack (xmlListPtr l,
void * data); int xmlListPushFront (xmlListPtr l,
void * data); int xmlListRemoveAll (xmlListPtr l,
void * data); int xmlListRemoveFirst (xmlListPtr l,
void * data); int xmlListRemoveLast (xmlListPtr l,
void * data); void xmlListReverse (xmlListPtr l); void * xmlListReverseSearch (xmlListPtr l,
void * data); void xmlListReverseWalk (xmlListPtr l,
xmlListWalker walker,
void * user); void * xmlListSearch (xmlListPtr l,
void * data); int xmlListSize (xmlListPtr l); void xmlListSort (xmlListPtr l); void xmlListWalk (xmlListPtr l,
xmlListWalker walker,
void * user); typedef int xmlListWalker (const void * data,
void * user);

Description

Details

Structure xmlLink

struct _xmlLink {
The content of this structure is not made public by the API.
} xmlLink;


Typedef xmlLinkPtr

xmlLink * xmlLinkPtr;


Structure xmlList

struct _xmlList {
The content of this structure is not made public by the API.
} xmlList;


Typedef xmlListPtr

xmlList * xmlListPtr;


Function type xmlListDataCompare

int	xmlListDataCompare		(const void * data0, 
const void * data1)

Callback function used to compare 2 data.

data0: the first data
data1: the second data
Returns: 0 is equality, -1 or 1 otherwise depending on the ordering.

Function type xmlListDeallocator

void	xmlListDeallocator		(xmlLinkPtr lk)

Callback function used to free data from a list.

lk: the data to deallocate

Function type xmlListWalker

int	xmlListWalker			(const void * data, 
void * user)

Callback function used when walking a list with xmlListWalk().

data: the data found in the list
user: extra user provided data to the walker
Returns: 0 to stop walking the list, 1 otherwise.

xmlLinkGetData ()

void *	xmlLinkGetData			(xmlLinkPtr lk)

See Returns.

lk: a link
Returns: a pointer to the data referenced from this link

xmlListAppend ()

int	xmlListAppend			(xmlListPtr l, 
void * data)

Insert data in the ordered list at the end for this value

l: a list
data: the data
Returns: 0 in case of success, 1 in case of failure

xmlListClear ()

void	xmlListClear			(xmlListPtr l)

Remove the all data in the list

l: a list

xmlListCopy ()

int	xmlListCopy			(xmlListPtr cur, 
xmlListPtr old)

Move all the element from the old list in the new list

cur: the new list
old: the old list
Returns: 0 in case of success 1 in case of error

xmlListCreate ()

xmlListPtr	xmlListCreate		(xmlListDeallocator deallocator, 
xmlListDataCompare compare)

Create a new list

deallocator: an optional deallocator function
compare: an optional comparison function
Returns: the new list or NULL in case of error

xmlListDelete ()

void	xmlListDelete			(xmlListPtr l)

Deletes the list and its associated data

l: a list

xmlListDup ()

xmlListPtr	xmlListDup		(xmlListPtr old)

Duplicate the list

old: the list
Returns: a new copy of the list or NULL in case of error

xmlListEmpty ()

int	xmlListEmpty			(xmlListPtr l)

Is the list empty ?

l: a list
Returns: 1 if the list is empty, 0 if not empty and -1 in case of error

xmlListEnd ()

xmlLinkPtr	xmlListEnd		(xmlListPtr l)

Get the last element in the list

l: a list
Returns: the last element in the list, or NULL

xmlListFront ()

xmlLinkPtr	xmlListFront		(xmlListPtr l)

Get the first element in the list

l: a list
Returns: the first element in the list, or NULL

xmlListInsert ()

int	xmlListInsert			(xmlListPtr l, 
void * data)

Insert data in the ordered list at the beginning for this value

l: a list
data: the data
Returns: 0 in case of success, 1 in case of failure

xmlListMerge ()

void	xmlListMerge			(xmlListPtr l1, 
xmlListPtr l2)

include all the elements of the second list in the first one and clear the second list

l1: the original list
l2: the new list

xmlListPopBack ()

void	xmlListPopBack			(xmlListPtr l)

Removes the last element in the list

l: a list

xmlListPopFront ()

void	xmlListPopFront			(xmlListPtr l)

Removes the first element in the list

l: a list

xmlListPushBack ()

int	xmlListPushBack			(xmlListPtr l, 
void * data)

add the new data at the end of the list

l: a list
data: new data
Returns: 1 if successful, 0 otherwise

xmlListPushFront ()

int	xmlListPushFront		(xmlListPtr l, 
void * data)

add the new data at the beginning of the list

l: a list
data: new data
Returns: 1 if successful, 0 otherwise

xmlListRemoveAll ()

int	xmlListRemoveAll		(xmlListPtr l, 
void * data)

Remove the all instance associated to data in the list

l: a list
data: list data
Returns: the number of deallocation, or 0 if not found

xmlListRemoveFirst ()

int	xmlListRemoveFirst		(xmlListPtr l, 
void * data)

Remove the first instance associated to data in the list

l: a list
data: list data
Returns: 1 if a deallocation occurred, or 0 if not found

xmlListRemoveLast ()

int	xmlListRemoveLast		(xmlListPtr l, 
void * data)

Remove the last instance associated to data in the list

l: a list
data: list data
Returns: 1 if a deallocation occurred, or 0 if not found

xmlListReverse ()

void	xmlListReverse			(xmlListPtr l)

Reverse the order of the elements in the list

l: a list

xmlListReverseSearch ()

void *	xmlListReverseSearch		(xmlListPtr l, 
void * data)

Search the list in reverse order for an existing value of @data

l: a list
data: a search value
Returns: the value associated to @data or NULL in case of error

xmlListReverseWalk ()

void	xmlListReverseWalk		(xmlListPtr l, 
xmlListWalker walker,
void * user)

Walk all the element of the list in reverse order and apply the walker function to it

l: a list
walker: a processing function
user: a user parameter passed to the walker function

xmlListSearch ()

void *	xmlListSearch			(xmlListPtr l, 
void * data)

Search the list for an existing value of @data

l: a list
data: a search value
Returns: the value associated to @data or NULL in case of error

xmlListSize ()

int	xmlListSize			(xmlListPtr l)

Get the number of elements in the list

l: a list
Returns: the number of elements in the list or -1 in case of error

xmlListSort ()

void	xmlListSort			(xmlListPtr l)

Sort all the elements in the list

l: a list

xmlListWalk ()

void	xmlListWalk			(xmlListPtr l, 
xmlListWalker walker,
void * user)

Walk all the element of the first from first to last and apply the walker function to it

l: a list
walker: a processing function
user: a user parameter passed to the walker function