Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-22 10:41:49

0001 /*
0002  * Summary: lists interfaces
0003  * Description: this module implement the list support used in
0004  * various place in the library.
0005  *
0006  * Copy: See Copyright for the status of this software.
0007  *
0008  * Author: Gary Pennington <Gary.Pennington@uk.sun.com>
0009  */
0010 
0011 #ifndef __XML_LINK_INCLUDE__
0012 #define __XML_LINK_INCLUDE__
0013 
0014 #include <libxml/xmlversion.h>
0015 
0016 #ifdef __cplusplus
0017 extern "C" {
0018 #endif
0019 
0020 typedef struct _xmlLink xmlLink;
0021 typedef xmlLink *xmlLinkPtr;
0022 
0023 typedef struct _xmlList xmlList;
0024 typedef xmlList *xmlListPtr;
0025 
0026 /**
0027  * xmlListDeallocator:
0028  * @lk:  the data to deallocate
0029  *
0030  * Callback function used to free data from a list.
0031  */
0032 typedef void (*xmlListDeallocator) (xmlLinkPtr lk);
0033 /**
0034  * xmlListDataCompare:
0035  * @data0: the first data
0036  * @data1: the second data
0037  *
0038  * Callback function used to compare 2 data.
0039  *
0040  * Returns 0 is equality, -1 or 1 otherwise depending on the ordering.
0041  */
0042 typedef int  (*xmlListDataCompare) (const void *data0, const void *data1);
0043 /**
0044  * xmlListWalker:
0045  * @data: the data found in the list
0046  * @user: extra user provided data to the walker
0047  *
0048  * Callback function used when walking a list with xmlListWalk().
0049  *
0050  * Returns 0 to stop walking the list, 1 otherwise.
0051  */
0052 typedef int (*xmlListWalker) (const void *data, void *user);
0053 
0054 /* Creation/Deletion */
0055 XMLPUBFUN xmlListPtr
0056         xmlListCreate       (xmlListDeallocator deallocator,
0057                                      xmlListDataCompare compare);
0058 XMLPUBFUN void
0059         xmlListDelete       (xmlListPtr l);
0060 
0061 /* Basic Operators */
0062 XMLPUBFUN void *
0063         xmlListSearch       (xmlListPtr l,
0064                      void *data);
0065 XMLPUBFUN void *
0066         xmlListReverseSearch    (xmlListPtr l,
0067                      void *data);
0068 XMLPUBFUN int
0069         xmlListInsert       (xmlListPtr l,
0070                      void *data) ;
0071 XMLPUBFUN int
0072         xmlListAppend       (xmlListPtr l,
0073                      void *data) ;
0074 XMLPUBFUN int
0075         xmlListRemoveFirst  (xmlListPtr l,
0076                      void *data);
0077 XMLPUBFUN int
0078         xmlListRemoveLast   (xmlListPtr l,
0079                      void *data);
0080 XMLPUBFUN int
0081         xmlListRemoveAll    (xmlListPtr l,
0082                      void *data);
0083 XMLPUBFUN void
0084         xmlListClear        (xmlListPtr l);
0085 XMLPUBFUN int
0086         xmlListEmpty        (xmlListPtr l);
0087 XMLPUBFUN xmlLinkPtr
0088         xmlListFront        (xmlListPtr l);
0089 XMLPUBFUN xmlLinkPtr
0090         xmlListEnd      (xmlListPtr l);
0091 XMLPUBFUN int
0092         xmlListSize     (xmlListPtr l);
0093 
0094 XMLPUBFUN void
0095         xmlListPopFront     (xmlListPtr l);
0096 XMLPUBFUN void
0097         xmlListPopBack      (xmlListPtr l);
0098 XMLPUBFUN int
0099         xmlListPushFront    (xmlListPtr l,
0100                      void *data);
0101 XMLPUBFUN int
0102         xmlListPushBack     (xmlListPtr l,
0103                      void *data);
0104 
0105 /* Advanced Operators */
0106 XMLPUBFUN void
0107         xmlListReverse      (xmlListPtr l);
0108 XMLPUBFUN void
0109         xmlListSort     (xmlListPtr l);
0110 XMLPUBFUN void
0111         xmlListWalk     (xmlListPtr l,
0112                      xmlListWalker walker,
0113                      void *user);
0114 XMLPUBFUN void
0115         xmlListReverseWalk  (xmlListPtr l,
0116                      xmlListWalker walker,
0117                      void *user);
0118 XMLPUBFUN void
0119         xmlListMerge        (xmlListPtr l1,
0120                      xmlListPtr l2);
0121 XMLPUBFUN xmlListPtr
0122         xmlListDup      (xmlListPtr old);
0123 XMLPUBFUN int
0124         xmlListCopy     (xmlListPtr cur,
0125                      xmlListPtr old);
0126 /* Link operators */
0127 XMLPUBFUN void *
0128         xmlLinkGetData          (xmlLinkPtr lk);
0129 
0130 /* xmlListUnique() */
0131 /* xmlListSwap */
0132 
0133 #ifdef __cplusplus
0134 }
0135 #endif
0136 
0137 #endif /* __XML_LINK_INCLUDE__ */