imgtools/imgcheck/libxml/list.h
changeset 2 39c28ec933dd
equal deleted inserted replaced
1:820b22e13ff1 2:39c28ec933dd
       
     1 /*
       
     2  * Summary: lists interfaces
       
     3  * Description: this module implement the list support used in 
       
     4  * various place in the library.
       
     5  *
       
     6  * Copy: See Copyright for the status of this software.
       
     7  *
       
     8  * Author: Gary Pennington <Gary.Pennington@uk.sun.com>
       
     9  */
       
    10 
       
    11 #ifndef __XML_LINK_INCLUDE__
       
    12 #define __XML_LINK_INCLUDE__
       
    13 
       
    14 #include <libxml/xmlversion.h>
       
    15 
       
    16 #ifdef __cplusplus
       
    17 extern "C" {
       
    18 #endif
       
    19 
       
    20 typedef struct _xmlLink xmlLink;
       
    21 typedef xmlLink *xmlLinkPtr;
       
    22 
       
    23 typedef struct _xmlList xmlList;
       
    24 typedef xmlList *xmlListPtr;
       
    25 
       
    26 /**
       
    27  * xmlListDeallocator:
       
    28  * @lk:  the data to deallocate
       
    29  *
       
    30  * Callback function used to free data from a list.
       
    31  */
       
    32 typedef void (*xmlListDeallocator) (xmlLinkPtr lk);
       
    33 /**
       
    34  * xmlListDataCompare:
       
    35  * @data0: the first data
       
    36  * @data1: the second data
       
    37  *
       
    38  * Callback function used to compare 2 data.
       
    39  *
       
    40  * Returns 0 is equality, -1 or 1 otherwise depending on the ordering.
       
    41  */
       
    42 typedef int  (*xmlListDataCompare) (const void *data0, const void *data1);
       
    43 /**
       
    44  * xmlListWalker:
       
    45  * @data: the data found in the list
       
    46  * @user: extra user provided data to the walker
       
    47  *
       
    48  * Callback function used when walking a list with xmlListWalk().
       
    49  *
       
    50  * Returns 0 to stop walking the list, 1 otherwise.
       
    51  */
       
    52 typedef int (*xmlListWalker) (const void *data, const void *user);
       
    53 
       
    54 /* Creation/Deletion */
       
    55 XMLPUBFUN xmlListPtr XMLCALL
       
    56 		xmlListCreate		(xmlListDeallocator deallocator,
       
    57 	                                 xmlListDataCompare compare);
       
    58 XMLPUBFUN void XMLCALL		
       
    59 		xmlListDelete		(xmlListPtr l);
       
    60 
       
    61 /* Basic Operators */
       
    62 XMLPUBFUN void * XMLCALL		
       
    63 		xmlListSearch		(xmlListPtr l,
       
    64 					 void *data);
       
    65 XMLPUBFUN void * XMLCALL		
       
    66 		xmlListReverseSearch	(xmlListPtr l,
       
    67 					 void *data);
       
    68 XMLPUBFUN int XMLCALL		
       
    69 		xmlListInsert		(xmlListPtr l,
       
    70 					 void *data) ;
       
    71 XMLPUBFUN int XMLCALL		
       
    72 		xmlListAppend		(xmlListPtr l,
       
    73 					 void *data) ;
       
    74 XMLPUBFUN int XMLCALL		
       
    75 		xmlListRemoveFirst	(xmlListPtr l,
       
    76 					 void *data);
       
    77 XMLPUBFUN int XMLCALL		
       
    78 		xmlListRemoveLast	(xmlListPtr l,
       
    79 					 void *data);
       
    80 XMLPUBFUN int XMLCALL		
       
    81 		xmlListRemoveAll	(xmlListPtr l,
       
    82 					 void *data);
       
    83 XMLPUBFUN void XMLCALL		
       
    84 		xmlListClear		(xmlListPtr l);
       
    85 XMLPUBFUN int XMLCALL		
       
    86 		xmlListEmpty		(xmlListPtr l);
       
    87 XMLPUBFUN xmlLinkPtr XMLCALL	
       
    88 		xmlListFront		(xmlListPtr l);
       
    89 XMLPUBFUN xmlLinkPtr XMLCALL	
       
    90 		xmlListEnd		(xmlListPtr l);
       
    91 XMLPUBFUN int XMLCALL		
       
    92 		xmlListSize		(xmlListPtr l);
       
    93 
       
    94 XMLPUBFUN void XMLCALL		
       
    95 		xmlListPopFront		(xmlListPtr l);
       
    96 XMLPUBFUN void XMLCALL		
       
    97 		xmlListPopBack		(xmlListPtr l);
       
    98 XMLPUBFUN int XMLCALL		
       
    99 		xmlListPushFront	(xmlListPtr l,
       
   100 					 void *data);
       
   101 XMLPUBFUN int XMLCALL		
       
   102 		xmlListPushBack		(xmlListPtr l,
       
   103 					 void *data);
       
   104 
       
   105 /* Advanced Operators */
       
   106 XMLPUBFUN void XMLCALL		
       
   107 		xmlListReverse		(xmlListPtr l);
       
   108 XMLPUBFUN void XMLCALL		
       
   109 		xmlListSort		(xmlListPtr l);
       
   110 XMLPUBFUN void XMLCALL		
       
   111 		xmlListWalk		(xmlListPtr l,
       
   112 					 xmlListWalker walker,
       
   113 					 const void *user);
       
   114 XMLPUBFUN void XMLCALL		
       
   115 		xmlListReverseWalk	(xmlListPtr l,
       
   116 					 xmlListWalker walker,
       
   117 					 const void *user);
       
   118 XMLPUBFUN void XMLCALL		
       
   119 		xmlListMerge		(xmlListPtr l1,
       
   120 					 xmlListPtr l2);
       
   121 XMLPUBFUN xmlListPtr XMLCALL	
       
   122 		xmlListDup		(const xmlListPtr old);
       
   123 XMLPUBFUN int XMLCALL		
       
   124 		xmlListCopy		(xmlListPtr cur,
       
   125 					 const xmlListPtr old);
       
   126 /* Link operators */
       
   127 XMLPUBFUN void * XMLCALL          
       
   128 		xmlLinkGetData          (xmlLinkPtr lk);
       
   129 
       
   130 /* xmlListUnique() */
       
   131 /* xmlListSwap */
       
   132 
       
   133 #ifdef __cplusplus
       
   134 }
       
   135 #endif
       
   136 
       
   137 #endif /* __XML_LINK_INCLUDE__ */