Annotation of embedaddon/libxml2/include/libxml/hash.h, revision 1.1
1.1 ! misho 1: /*
! 2: * Summary: Chained hash tables
! 3: * Description: This module implements the hash table support used in
! 4: * various places in the library.
! 5: *
! 6: * Copy: See Copyright for the status of this software.
! 7: *
! 8: * Author: Bjorn Reese <bjorn.reese@systematic.dk>
! 9: */
! 10:
! 11: #ifndef __XML_HASH_H__
! 12: #define __XML_HASH_H__
! 13:
! 14: #ifdef __cplusplus
! 15: extern "C" {
! 16: #endif
! 17:
! 18: /*
! 19: * The hash table.
! 20: */
! 21: typedef struct _xmlHashTable xmlHashTable;
! 22: typedef xmlHashTable *xmlHashTablePtr;
! 23:
! 24: #ifdef __cplusplus
! 25: }
! 26: #endif
! 27:
! 28: #include <libxml/xmlversion.h>
! 29: #include <libxml/parser.h>
! 30: #include <libxml/dict.h>
! 31:
! 32: #ifdef __cplusplus
! 33: extern "C" {
! 34: #endif
! 35:
! 36: /*
! 37: * Recent version of gcc produce a warning when a function pointer is assigned
! 38: * to an object pointer, or vice versa. The following macro is a dirty hack
! 39: * to allow suppression of the warning. If your architecture has function
! 40: * pointers which are a different size than a void pointer, there may be some
! 41: * serious trouble within the library.
! 42: */
! 43: /**
! 44: * XML_CAST_FPTR:
! 45: * @fptr: pointer to a function
! 46: *
! 47: * Macro to do a casting from an object pointer to a
! 48: * function pointer without encountering a warning from
! 49: * gcc
! 50: *
! 51: * #define XML_CAST_FPTR(fptr) (*(void **)(&fptr))
! 52: * This macro violated ISO C aliasing rules (gcc4 on s390 broke)
! 53: * so it is disabled now
! 54: */
! 55:
! 56: #define XML_CAST_FPTR(fptr) fptr
! 57:
! 58:
! 59: /*
! 60: * function types:
! 61: */
! 62: /**
! 63: * xmlHashDeallocator:
! 64: * @payload: the data in the hash
! 65: * @name: the name associated
! 66: *
! 67: * Callback to free data from a hash.
! 68: */
! 69: typedef void (*xmlHashDeallocator)(void *payload, xmlChar *name);
! 70: /**
! 71: * xmlHashCopier:
! 72: * @payload: the data in the hash
! 73: * @name: the name associated
! 74: *
! 75: * Callback to copy data from a hash.
! 76: *
! 77: * Returns a copy of the data or NULL in case of error.
! 78: */
! 79: typedef void *(*xmlHashCopier)(void *payload, xmlChar *name);
! 80: /**
! 81: * xmlHashScanner:
! 82: * @payload: the data in the hash
! 83: * @data: extra scannner data
! 84: * @name: the name associated
! 85: *
! 86: * Callback when scanning data in a hash with the simple scanner.
! 87: */
! 88: typedef void (*xmlHashScanner)(void *payload, void *data, xmlChar *name);
! 89: /**
! 90: * xmlHashScannerFull:
! 91: * @payload: the data in the hash
! 92: * @data: extra scannner data
! 93: * @name: the name associated
! 94: * @name2: the second name associated
! 95: * @name3: the third name associated
! 96: *
! 97: * Callback when scanning data in a hash with the full scanner.
! 98: */
! 99: typedef void (*xmlHashScannerFull)(void *payload, void *data,
! 100: const xmlChar *name, const xmlChar *name2,
! 101: const xmlChar *name3);
! 102:
! 103: /*
! 104: * Constructor and destructor.
! 105: */
! 106: XMLPUBFUN xmlHashTablePtr XMLCALL
! 107: xmlHashCreate (int size);
! 108: XMLPUBFUN xmlHashTablePtr XMLCALL
! 109: xmlHashCreateDict(int size,
! 110: xmlDictPtr dict);
! 111: XMLPUBFUN void XMLCALL
! 112: xmlHashFree (xmlHashTablePtr table,
! 113: xmlHashDeallocator f);
! 114:
! 115: /*
! 116: * Add a new entry to the hash table.
! 117: */
! 118: XMLPUBFUN int XMLCALL
! 119: xmlHashAddEntry (xmlHashTablePtr table,
! 120: const xmlChar *name,
! 121: void *userdata);
! 122: XMLPUBFUN int XMLCALL
! 123: xmlHashUpdateEntry(xmlHashTablePtr table,
! 124: const xmlChar *name,
! 125: void *userdata,
! 126: xmlHashDeallocator f);
! 127: XMLPUBFUN int XMLCALL
! 128: xmlHashAddEntry2(xmlHashTablePtr table,
! 129: const xmlChar *name,
! 130: const xmlChar *name2,
! 131: void *userdata);
! 132: XMLPUBFUN int XMLCALL
! 133: xmlHashUpdateEntry2(xmlHashTablePtr table,
! 134: const xmlChar *name,
! 135: const xmlChar *name2,
! 136: void *userdata,
! 137: xmlHashDeallocator f);
! 138: XMLPUBFUN int XMLCALL
! 139: xmlHashAddEntry3(xmlHashTablePtr table,
! 140: const xmlChar *name,
! 141: const xmlChar *name2,
! 142: const xmlChar *name3,
! 143: void *userdata);
! 144: XMLPUBFUN int XMLCALL
! 145: xmlHashUpdateEntry3(xmlHashTablePtr table,
! 146: const xmlChar *name,
! 147: const xmlChar *name2,
! 148: const xmlChar *name3,
! 149: void *userdata,
! 150: xmlHashDeallocator f);
! 151:
! 152: /*
! 153: * Remove an entry from the hash table.
! 154: */
! 155: XMLPUBFUN int XMLCALL
! 156: xmlHashRemoveEntry(xmlHashTablePtr table, const xmlChar *name,
! 157: xmlHashDeallocator f);
! 158: XMLPUBFUN int XMLCALL
! 159: xmlHashRemoveEntry2(xmlHashTablePtr table, const xmlChar *name,
! 160: const xmlChar *name2, xmlHashDeallocator f);
! 161: XMLPUBFUN int XMLCALL
! 162: xmlHashRemoveEntry3(xmlHashTablePtr table, const xmlChar *name,
! 163: const xmlChar *name2, const xmlChar *name3,
! 164: xmlHashDeallocator f);
! 165:
! 166: /*
! 167: * Retrieve the userdata.
! 168: */
! 169: XMLPUBFUN void * XMLCALL
! 170: xmlHashLookup (xmlHashTablePtr table,
! 171: const xmlChar *name);
! 172: XMLPUBFUN void * XMLCALL
! 173: xmlHashLookup2 (xmlHashTablePtr table,
! 174: const xmlChar *name,
! 175: const xmlChar *name2);
! 176: XMLPUBFUN void * XMLCALL
! 177: xmlHashLookup3 (xmlHashTablePtr table,
! 178: const xmlChar *name,
! 179: const xmlChar *name2,
! 180: const xmlChar *name3);
! 181: XMLPUBFUN void * XMLCALL
! 182: xmlHashQLookup (xmlHashTablePtr table,
! 183: const xmlChar *name,
! 184: const xmlChar *prefix);
! 185: XMLPUBFUN void * XMLCALL
! 186: xmlHashQLookup2 (xmlHashTablePtr table,
! 187: const xmlChar *name,
! 188: const xmlChar *prefix,
! 189: const xmlChar *name2,
! 190: const xmlChar *prefix2);
! 191: XMLPUBFUN void * XMLCALL
! 192: xmlHashQLookup3 (xmlHashTablePtr table,
! 193: const xmlChar *name,
! 194: const xmlChar *prefix,
! 195: const xmlChar *name2,
! 196: const xmlChar *prefix2,
! 197: const xmlChar *name3,
! 198: const xmlChar *prefix3);
! 199:
! 200: /*
! 201: * Helpers.
! 202: */
! 203: XMLPUBFUN xmlHashTablePtr XMLCALL
! 204: xmlHashCopy (xmlHashTablePtr table,
! 205: xmlHashCopier f);
! 206: XMLPUBFUN int XMLCALL
! 207: xmlHashSize (xmlHashTablePtr table);
! 208: XMLPUBFUN void XMLCALL
! 209: xmlHashScan (xmlHashTablePtr table,
! 210: xmlHashScanner f,
! 211: void *data);
! 212: XMLPUBFUN void XMLCALL
! 213: xmlHashScan3 (xmlHashTablePtr table,
! 214: const xmlChar *name,
! 215: const xmlChar *name2,
! 216: const xmlChar *name3,
! 217: xmlHashScanner f,
! 218: void *data);
! 219: XMLPUBFUN void XMLCALL
! 220: xmlHashScanFull (xmlHashTablePtr table,
! 221: xmlHashScannerFull f,
! 222: void *data);
! 223: XMLPUBFUN void XMLCALL
! 224: xmlHashScanFull3(xmlHashTablePtr table,
! 225: const xmlChar *name,
! 226: const xmlChar *name2,
! 227: const xmlChar *name3,
! 228: xmlHashScannerFull f,
! 229: void *data);
! 230: #ifdef __cplusplus
! 231: }
! 232: #endif
! 233: #endif /* ! __XML_HASH_H__ */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>