libxml-rs 0.1.0-alpha.2

Phase 1: Compatibility skeleton complete. Native-Rust forensic reimplementation of libxml2+libxslt with C ABI drop-in replacement. 62 tests passing, ABI courts verified, C headers compatible, Docker oracle built.
Documentation
/**
 * @file
 *
 * Hash table API for libxml-rs
 */

#ifndef __XML_HASH_H__
#define __XML_HASH_H__

#include <libxml/xmlversion.h>
#include <libxml/xmlstring.h>

#ifdef __cplusplus
extern "C" {
#endif

typedef struct _xmlHashTable xmlHashTable;
typedef xmlHashTable *xmlHashTablePtr;

typedef void (*xmlHashDeallocator)(void *payload, xmlChar *name);
typedef void *(*xmlHashCopier)(void *payload, xmlChar *name);
typedef void (*xmlHashScanner)(void *payload, void *data, xmlChar *name);
typedef void (*xmlHashScannerFull)(void *payload, void *data, xmlChar *name, xmlChar *name2, xmlChar *name3);

XMLPUBFUN xmlHashTablePtr xmlHashCreate(int size);
XMLPUBFUN xmlHashTablePtr xmlHashCreateDict(int size, xmlDictPtr dict);
XMLPUBFUN void xmlHashFree(xmlHashTablePtr table, xmlHashDeallocator f);
XMLPUBFUN int xmlHashAddEntry(xmlHashTablePtr table, const xmlChar *name, void *userdata);
XMLPUBFUN int xmlHashAddEntry2(xmlHashTablePtr table, const xmlChar *name,
                                const xmlChar *name2, void *userdata);
XMLPUBFUN int xmlHashAddEntry3(xmlHashTablePtr table, const xmlChar *name,
                                const xmlChar *name2, const xmlChar *name3, void *userdata);
XMLPUBFUN int xmlHashUpdateEntry(xmlHashTablePtr table, const xmlChar *name,
                                  void *userdata, xmlHashDeallocator f);
XMLPUBFUN int xmlHashUpdateEntry2(xmlHashTablePtr table, const xmlChar *name,
                                   const xmlChar *name2, void *userdata, xmlHashDeallocator f);
XMLPUBFUN int xmlHashUpdateEntry3(xmlHashTablePtr table, const xmlChar *name,
                                   const xmlChar *name2, const xmlChar *name3,
                                   void *userdata, xmlHashDeallocator f);
XMLPUBFUN void *xmlHashLookup(xmlHashTablePtr table, const xmlChar *name);
XMLPUBFUN void *xmlHashLookup2(xmlHashTablePtr table, const xmlChar *name,
                                const xmlChar *name2);
XMLPUBFUN void *xmlHashLookup3(xmlHashTablePtr table, const xmlChar *name,
                                const xmlChar *name2, const xmlChar *name3);
XMLPUBFUN int xmlHashSize(xmlHashTablePtr table);
XMLPUBFUN int xmlHashRemoveEntry(xmlHashTablePtr table, const xmlChar *name,
                                  xmlHashDeallocator f);
XMLPUBFUN int xmlHashRemoveEntry2(xmlHashTablePtr table, const xmlChar *name,
                                   const xmlChar *name2, xmlHashDeallocator f);
XMLPUBFUN int xmlHashRemoveEntry3(xmlHashTablePtr table, const xmlChar *name,
                                   const xmlChar *name2, const xmlChar *name3,
                                   xmlHashDeallocator f);
XMLPUBFUN void xmlHashScan(xmlHashTablePtr table, xmlHashScanner f, void *data);
XMLPUBFUN void xmlHashScanFull(xmlHashTablePtr table, xmlHashScannerFull f, void *data);
XMLPUBFUN xmlHashTablePtr xmlHashCopy(xmlHashTablePtr table, xmlHashCopier f);

#ifdef __cplusplus
}
#endif

#endif /* __XML_HASH_H__ */