mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-10-23 01:52:48 +03:00
* xmlwriter.c include/libxml/xmlwriter.h: applied patch from Alfred Mickautsch, bugfixes and comments * doc/examples/*: added his test as the xmlWriter example * doc/html/ doc/*.html: this resulted in some improvements * include/libxml/hash.h: fixed an inclusion problem when <libxml/hash.h> wasn't preceeded by <xml/parser.h> Daniel
207 lines
5.6 KiB
C
207 lines
5.6 KiB
C
/*
|
|
* Summary: chained hash tables
|
|
* description: this module implement the hash table support used in
|
|
* various place in the library.
|
|
*
|
|
* Copy: See Copyright for the status of this software.
|
|
*
|
|
* Author: Bjorn Reese <bjorn.reese@systematic.dk>
|
|
*/
|
|
|
|
#ifndef __XML_HASH_H__
|
|
#define __XML_HASH_H__
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*
|
|
* The hash table.
|
|
*/
|
|
typedef struct _xmlHashTable xmlHashTable;
|
|
typedef xmlHashTable *xmlHashTablePtr;
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#include <libxml/xmlversion.h>
|
|
#include <libxml/parser.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*
|
|
* function types:
|
|
*/
|
|
/**
|
|
* xmlHashDeallocator:
|
|
* @payload: the data in the hash
|
|
* @name: the name associated
|
|
*
|
|
* Callback to free data from a hash.
|
|
*/
|
|
typedef void (*xmlHashDeallocator)(void *payload, xmlChar *name);
|
|
/**
|
|
* xmlHashCopier:
|
|
* @payload: the data in the hash
|
|
* @name: the name associated
|
|
*
|
|
* Callback to copy data from a hash.
|
|
*
|
|
* Returns a copy of the data or NULL in case of error.
|
|
*/
|
|
typedef void *(*xmlHashCopier)(void *payload, xmlChar *name);
|
|
/**
|
|
* xmlHashScanner:
|
|
* @payload: the data in the hash
|
|
* @data: extra scannner data
|
|
* @name: the name associated
|
|
*
|
|
* Callback when scanning data in a hash with the simple scanner.
|
|
*/
|
|
typedef void (*xmlHashScanner)(void *payload, void *data, xmlChar *name);
|
|
/**
|
|
* xmlHashScannerFull:
|
|
* @payload: the data in the hash
|
|
* @data: extra scannner data
|
|
* @name: the name associated
|
|
* @name2: the second name associated
|
|
* @name3: the third name associated
|
|
*
|
|
* Callback when scanning data in a hash with the full scanner.
|
|
*/
|
|
typedef void (*xmlHashScannerFull)(void *payload, void *data,
|
|
const xmlChar *name, const xmlChar *name2,
|
|
const xmlChar *name3);
|
|
|
|
/*
|
|
* Constructor and destructor.
|
|
*/
|
|
XMLPUBFUN xmlHashTablePtr XMLCALL
|
|
xmlHashCreate (int size);
|
|
XMLPUBFUN void XMLCALL
|
|
xmlHashFree (xmlHashTablePtr table,
|
|
xmlHashDeallocator f);
|
|
|
|
/*
|
|
* Add a new entry to the hash table.
|
|
*/
|
|
XMLPUBFUN int XMLCALL
|
|
xmlHashAddEntry (xmlHashTablePtr table,
|
|
const xmlChar *name,
|
|
void *userdata);
|
|
XMLPUBFUN int XMLCALL
|
|
xmlHashUpdateEntry(xmlHashTablePtr table,
|
|
const xmlChar *name,
|
|
void *userdata,
|
|
xmlHashDeallocator f);
|
|
XMLPUBFUN int XMLCALL
|
|
xmlHashAddEntry2(xmlHashTablePtr table,
|
|
const xmlChar *name,
|
|
const xmlChar *name2,
|
|
void *userdata);
|
|
XMLPUBFUN int XMLCALL
|
|
xmlHashUpdateEntry2(xmlHashTablePtr table,
|
|
const xmlChar *name,
|
|
const xmlChar *name2,
|
|
void *userdata,
|
|
xmlHashDeallocator f);
|
|
XMLPUBFUN int XMLCALL
|
|
xmlHashAddEntry3(xmlHashTablePtr table,
|
|
const xmlChar *name,
|
|
const xmlChar *name2,
|
|
const xmlChar *name3,
|
|
void *userdata);
|
|
XMLPUBFUN int XMLCALL
|
|
xmlHashUpdateEntry3(xmlHashTablePtr table,
|
|
const xmlChar *name,
|
|
const xmlChar *name2,
|
|
const xmlChar *name3,
|
|
void *userdata,
|
|
xmlHashDeallocator f);
|
|
|
|
/*
|
|
* Remove an entry from the hash table.
|
|
*/
|
|
XMLPUBFUN int XMLCALL
|
|
xmlHashRemoveEntry(xmlHashTablePtr table, const xmlChar *name,
|
|
xmlHashDeallocator f);
|
|
XMLPUBFUN int XMLCALL
|
|
xmlHashRemoveEntry2(xmlHashTablePtr table, const xmlChar *name,
|
|
const xmlChar *name2, xmlHashDeallocator f);
|
|
XMLPUBFUN int XMLCALL
|
|
xmlHashRemoveEntry3(xmlHashTablePtr table, const xmlChar *name,
|
|
const xmlChar *name2, const xmlChar *name3,
|
|
xmlHashDeallocator f);
|
|
|
|
/*
|
|
* Retrieve the userdata.
|
|
*/
|
|
XMLPUBFUN void * XMLCALL
|
|
xmlHashLookup (xmlHashTablePtr table,
|
|
const xmlChar *name);
|
|
XMLPUBFUN void * XMLCALL
|
|
xmlHashLookup2 (xmlHashTablePtr table,
|
|
const xmlChar *name,
|
|
const xmlChar *name2);
|
|
XMLPUBFUN void * XMLCALL
|
|
xmlHashLookup3 (xmlHashTablePtr table,
|
|
const xmlChar *name,
|
|
const xmlChar *name2,
|
|
const xmlChar *name3);
|
|
XMLPUBFUN void * XMLCALL
|
|
xmlHashQLookup (xmlHashTablePtr table,
|
|
const xmlChar *name,
|
|
const xmlChar *prefix);
|
|
XMLPUBFUN void * XMLCALL
|
|
xmlHashQLookup2 (xmlHashTablePtr table,
|
|
const xmlChar *name,
|
|
const xmlChar *prefix,
|
|
const xmlChar *name2,
|
|
const xmlChar *prefix2);
|
|
XMLPUBFUN void * XMLCALL
|
|
xmlHashQLookup3 (xmlHashTablePtr table,
|
|
const xmlChar *name,
|
|
const xmlChar *prefix,
|
|
const xmlChar *name2,
|
|
const xmlChar *prefix2,
|
|
const xmlChar *name3,
|
|
const xmlChar *prefix3);
|
|
|
|
/*
|
|
* Helpers.
|
|
*/
|
|
XMLPUBFUN xmlHashTablePtr XMLCALL
|
|
xmlHashCopy (xmlHashTablePtr table,
|
|
xmlHashCopier f);
|
|
XMLPUBFUN int XMLCALL
|
|
xmlHashSize (xmlHashTablePtr table);
|
|
XMLPUBFUN void XMLCALL
|
|
xmlHashScan (xmlHashTablePtr table,
|
|
xmlHashScanner f,
|
|
void *data);
|
|
XMLPUBFUN void XMLCALL
|
|
xmlHashScan3 (xmlHashTablePtr table,
|
|
const xmlChar *name,
|
|
const xmlChar *name2,
|
|
const xmlChar *name3,
|
|
xmlHashScanner f,
|
|
void *data);
|
|
XMLPUBFUN void XMLCALL
|
|
xmlHashScanFull (xmlHashTablePtr table,
|
|
xmlHashScannerFull f,
|
|
void *data);
|
|
XMLPUBFUN void XMLCALL
|
|
xmlHashScanFull3(xmlHashTablePtr table,
|
|
const xmlChar *name,
|
|
const xmlChar *name2,
|
|
const xmlChar *name3,
|
|
xmlHashScannerFull f,
|
|
void *data);
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* ! __XML_HASH_H__ */
|