Annotation of win32/gnome/gnome-xml/include/libxml/hash.h, revision 1.1
1.1 ! paf 1: /*
! 2: * hash.h: chained hash tables
! 3: *
! 4: * Copyright (C) 2000 Bjorn Reese and Daniel Veillard.
! 5: *
! 6: * Permission to use, copy, modify, and distribute this software for any
! 7: * purpose with or without fee is hereby granted, provided that the above
! 8: * copyright notice and this permission notice appear in all copies.
! 9: *
! 10: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
! 11: * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
! 12: * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND
! 13: * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER.
! 14: *
! 15: * Author: bjorn.reese@systematic.dk
! 16: */
! 17:
! 18: #ifndef __XML_HASH_H__
! 19: #define __XML_HASH_H__
! 20:
! 21: #include <libxml/parser.h>
! 22:
! 23: #ifdef __cplusplus
! 24: extern "C" {
! 25: #endif
! 26:
! 27: /*
! 28: * The hash table.
! 29: */
! 30: typedef struct _xmlHashTable xmlHashTable;
! 31: typedef xmlHashTable *xmlHashTablePtr;
! 32:
! 33: /*
! 34: * function types:
! 35: */
! 36: /**
! 37: * xmlHashDeallocator:
! 38: * @payload: the data in the hash
! 39: * @name: the name associated
! 40: *
! 41: * Callback to free data from a hash.
! 42: */
! 43: typedef void (*xmlHashDeallocator)(void *payload, xmlChar *name);
! 44: /**
! 45: * xmlHashCopier:
! 46: * @payload: the data in the hash
! 47: * @name: the name associated
! 48: *
! 49: * Callback to copy data from a hash.
! 50: *
! 51: * Returns a copy of the data or NULL in case of error.
! 52: */
! 53: typedef void *(*xmlHashCopier)(void *payload, xmlChar *name);
! 54: /**
! 55: * xmlHashScanner:
! 56: * @payload: the data in the hash
! 57: * @data: extra scannner data
! 58: * @name: the name associated
! 59: *
! 60: * Callback when scanning data in a hash with the simple scanner.
! 61: */
! 62: typedef void (*xmlHashScanner)(void *payload, void *data, xmlChar *name);
! 63: /**
! 64: * xmlHashScannerFull:
! 65: * @payload: the data in the hash
! 66: * @data: extra scannner data
! 67: * @name: the name associated
! 68: * @name2: the second name associated
! 69: * @name3: the third name associated
! 70: *
! 71: * Callback when scanning data in a hash with the full scanner.
! 72: */
! 73: typedef void (*xmlHashScannerFull)(void *payload, void *data,
! 74: const xmlChar *name, const xmlChar *name2,
! 75: const xmlChar *name3);
! 76:
! 77: /*
! 78: * Constructor and destructor.
! 79: */
! 80: xmlHashTablePtr xmlHashCreate (int size);
! 81: void xmlHashFree (xmlHashTablePtr table,
! 82: xmlHashDeallocator f);
! 83:
! 84: /*
! 85: * Add a new entry to the hash table.
! 86: */
! 87: int xmlHashAddEntry (xmlHashTablePtr table,
! 88: const xmlChar *name,
! 89: void *userdata);
! 90: int xmlHashUpdateEntry(xmlHashTablePtr table,
! 91: const xmlChar *name,
! 92: void *userdata,
! 93: xmlHashDeallocator f);
! 94: int xmlHashAddEntry2(xmlHashTablePtr table,
! 95: const xmlChar *name,
! 96: const xmlChar *name2,
! 97: void *userdata);
! 98: int xmlHashUpdateEntry2(xmlHashTablePtr table,
! 99: const xmlChar *name,
! 100: const xmlChar *name2,
! 101: void *userdata,
! 102: xmlHashDeallocator f);
! 103: int xmlHashAddEntry3(xmlHashTablePtr table,
! 104: const xmlChar *name,
! 105: const xmlChar *name2,
! 106: const xmlChar *name3,
! 107: void *userdata);
! 108: int xmlHashUpdateEntry3(xmlHashTablePtr table,
! 109: const xmlChar *name,
! 110: const xmlChar *name2,
! 111: const xmlChar *name3,
! 112: void *userdata,
! 113: xmlHashDeallocator f);
! 114:
! 115: /*
! 116: * Remove an entry from the hash table.
! 117: */
! 118: int xmlHashRemoveEntry(xmlHashTablePtr table, const xmlChar *name,
! 119: xmlHashDeallocator f);
! 120: int xmlHashRemoveEntry2(xmlHashTablePtr table, const xmlChar *name,
! 121: const xmlChar *name2, xmlHashDeallocator f);
! 122: int xmlHashRemoveEntry3(xmlHashTablePtr table, const xmlChar *name,
! 123: const xmlChar *name2, const xmlChar *name3,
! 124: xmlHashDeallocator f);
! 125:
! 126: /*
! 127: * Retrieve the userdata.
! 128: */
! 129: void * xmlHashLookup (xmlHashTablePtr table,
! 130: const xmlChar *name);
! 131: void * xmlHashLookup2 (xmlHashTablePtr table,
! 132: const xmlChar *name,
! 133: const xmlChar *name2);
! 134: void * xmlHashLookup3 (xmlHashTablePtr table,
! 135: const xmlChar *name,
! 136: const xmlChar *name2,
! 137: const xmlChar *name3);
! 138:
! 139: /*
! 140: * Helpers.
! 141: */
! 142: xmlHashTablePtr xmlHashCopy (xmlHashTablePtr table,
! 143: xmlHashCopier f);
! 144: int xmlHashSize (xmlHashTablePtr table);
! 145: void xmlHashScan (xmlHashTablePtr table,
! 146: xmlHashScanner f,
! 147: void *data);
! 148: void xmlHashScan3 (xmlHashTablePtr table,
! 149: const xmlChar *name,
! 150: const xmlChar *name2,
! 151: const xmlChar *name3,
! 152: xmlHashScanner f,
! 153: void *data);
! 154: void xmlHashScanFull (xmlHashTablePtr table,
! 155: xmlHashScannerFull f,
! 156: void *data);
! 157: void xmlHashScanFull3(xmlHashTablePtr table,
! 158: const xmlChar *name,
! 159: const xmlChar *name2,
! 160: const xmlChar *name3,
! 161: xmlHashScannerFull f,
! 162: void *data);
! 163: #ifdef __cplusplus
! 164: }
! 165: #endif
! 166: #endif /* ! __XML_HASH_H__ */
E-mail: