Eneboo - Documentación para desarrolladores
src/libdigidoc/libxml2/include/libxml/hash.h
Ir a la documentación de este archivo.
00001 /*
00002  * Summary: Chained hash tables
00003  * Description: This module implements the hash table support used in 
00004  *              various places in the library.
00005  *
00006  * Copy: See Copyright for the status of this software.
00007  *
00008  * Author: Bjorn Reese <bjorn.reese@systematic.dk>
00009  */
00010 
00011 #ifndef __XML_HASH_H__
00012 #define __XML_HASH_H__
00013 
00014 #ifdef __cplusplus
00015 extern "C" {
00016 #endif
00017 
00018 /*
00019  * The hash table.
00020  */
00021 typedef struct _xmlHashTable xmlHashTable;
00022 typedef xmlHashTable *xmlHashTablePtr;
00023 
00024 #ifdef __cplusplus
00025 }
00026 #endif
00027 
00028 #include <libxml/xmlversion.h>
00029 #include <libxml/parser.h>
00030 #include <libxml/dict.h>
00031 
00032 #ifdef __cplusplus
00033 extern "C" {
00034 #endif
00035 
00036 /*
00037  * Recent version of gcc produce a warning when a function pointer is assigned
00038  * to an object pointer, or vice versa.  The following macro is a dirty hack
00039  * to allow suppression of the warning.  If your architecture has function
00040  * pointers which are a different size than a void pointer, there may be some
00041  * serious trouble within the library.
00042  */
00056 #define XML_CAST_FPTR(fptr) fptr
00057 
00058 
00059 /*
00060  * function types:
00061  */
00069 typedef void (*xmlHashDeallocator)(void *payload, xmlChar *name);
00079 typedef void *(*xmlHashCopier)(void *payload, xmlChar *name);
00088 typedef void (*xmlHashScanner)(void *payload, void *data, xmlChar *name);
00099 typedef void (*xmlHashScannerFull)(void *payload, void *data,
00100                                    const xmlChar *name, const xmlChar *name2,
00101                                    const xmlChar *name3);
00102 
00103 /*
00104  * Constructor and destructor.
00105  */
00106 XMLPUBFUN xmlHashTablePtr XMLCALL
00107                         xmlHashCreate   (int size);
00108 XMLPUBFUN xmlHashTablePtr XMLCALL
00109                         xmlHashCreateDict(int size,
00110                                          xmlDictPtr dict);
00111 XMLPUBFUN void XMLCALL                  
00112                         xmlHashFree     (xmlHashTablePtr table,
00113                                          xmlHashDeallocator f);
00114 
00115 /*
00116  * Add a new entry to the hash table.
00117  */
00118 XMLPUBFUN int XMLCALL                   
00119                         xmlHashAddEntry (xmlHashTablePtr table,
00120                                          const xmlChar *name,
00121                                          void *userdata);
00122 XMLPUBFUN int XMLCALL                   
00123                         xmlHashUpdateEntry(xmlHashTablePtr table,
00124                                          const xmlChar *name,
00125                                          void *userdata,
00126                                          xmlHashDeallocator f);
00127 XMLPUBFUN int XMLCALL               
00128                         xmlHashAddEntry2(xmlHashTablePtr table,
00129                                          const xmlChar *name,
00130                                          const xmlChar *name2,
00131                                          void *userdata);
00132 XMLPUBFUN int XMLCALL                   
00133                         xmlHashUpdateEntry2(xmlHashTablePtr table,
00134                                          const xmlChar *name,
00135                                          const xmlChar *name2,
00136                                          void *userdata,
00137                                          xmlHashDeallocator f);
00138 XMLPUBFUN int XMLCALL                   
00139                         xmlHashAddEntry3(xmlHashTablePtr table,
00140                                          const xmlChar *name,
00141                                          const xmlChar *name2,
00142                                          const xmlChar *name3,
00143                                          void *userdata);
00144 XMLPUBFUN int XMLCALL                   
00145                         xmlHashUpdateEntry3(xmlHashTablePtr table,
00146                                          const xmlChar *name,
00147                                          const xmlChar *name2,
00148                                          const xmlChar *name3,
00149                                          void *userdata,
00150                                          xmlHashDeallocator f);
00151 
00152 /*
00153  * Remove an entry from the hash table.
00154  */
00155 XMLPUBFUN int XMLCALL     
00156                         xmlHashRemoveEntry(xmlHashTablePtr table, const xmlChar *name,
00157                            xmlHashDeallocator f);
00158 XMLPUBFUN int XMLCALL     
00159                         xmlHashRemoveEntry2(xmlHashTablePtr table, const xmlChar *name,
00160                             const xmlChar *name2, xmlHashDeallocator f);
00161 XMLPUBFUN int  XMLCALL    
00162                         xmlHashRemoveEntry3(xmlHashTablePtr table, const xmlChar *name,
00163                             const xmlChar *name2, const xmlChar *name3,
00164                             xmlHashDeallocator f);
00165 
00166 /*
00167  * Retrieve the userdata.
00168  */
00169 XMLPUBFUN void * XMLCALL                        
00170                         xmlHashLookup   (xmlHashTablePtr table,
00171                                          const xmlChar *name);
00172 XMLPUBFUN void * XMLCALL                        
00173                         xmlHashLookup2  (xmlHashTablePtr table,
00174                                          const xmlChar *name,
00175                                          const xmlChar *name2);
00176 XMLPUBFUN void * XMLCALL                        
00177                         xmlHashLookup3  (xmlHashTablePtr table,
00178                                          const xmlChar *name,
00179                                          const xmlChar *name2,
00180                                          const xmlChar *name3);
00181 XMLPUBFUN void * XMLCALL                        
00182                         xmlHashQLookup  (xmlHashTablePtr table,
00183                                          const xmlChar *name,
00184                                          const xmlChar *prefix);
00185 XMLPUBFUN void * XMLCALL                        
00186                         xmlHashQLookup2 (xmlHashTablePtr table,
00187                                          const xmlChar *name,
00188                                          const xmlChar *prefix,
00189                                          const xmlChar *name2,
00190                                          const xmlChar *prefix2);
00191 XMLPUBFUN void * XMLCALL                        
00192                         xmlHashQLookup3 (xmlHashTablePtr table,
00193                                          const xmlChar *name,
00194                                          const xmlChar *prefix,
00195                                          const xmlChar *name2,
00196                                          const xmlChar *prefix2,
00197                                          const xmlChar *name3,
00198                                          const xmlChar *prefix3);
00199 
00200 /*
00201  * Helpers.
00202  */
00203 XMLPUBFUN xmlHashTablePtr XMLCALL               
00204                         xmlHashCopy     (xmlHashTablePtr table,
00205                                          xmlHashCopier f);
00206 XMLPUBFUN int XMLCALL                   
00207                         xmlHashSize     (xmlHashTablePtr table);
00208 XMLPUBFUN void XMLCALL                  
00209                         xmlHashScan     (xmlHashTablePtr table,
00210                                          xmlHashScanner f,
00211                                          void *data);
00212 XMLPUBFUN void XMLCALL                  
00213                         xmlHashScan3    (xmlHashTablePtr table,
00214                                          const xmlChar *name,
00215                                          const xmlChar *name2,
00216                                          const xmlChar *name3,
00217                                          xmlHashScanner f,
00218                                          void *data);
00219 XMLPUBFUN void XMLCALL                  
00220                         xmlHashScanFull (xmlHashTablePtr table,
00221                                          xmlHashScannerFull f,
00222                                          void *data);
00223 XMLPUBFUN void XMLCALL                  
00224                         xmlHashScanFull3(xmlHashTablePtr table,
00225                                          const xmlChar *name,
00226                                          const xmlChar *name2,
00227                                          const xmlChar *name3,
00228                                          xmlHashScannerFull f,
00229                                          void *data);
00230 #ifdef __cplusplus
00231 }
00232 #endif
00233 #endif /* ! __XML_HASH_H__ */
 Todo Clases Namespaces Archivos Funciones Variables 'typedefs' Enumeraciones Valores de enumeraciones Propiedades Amigas 'defines'