1/*
2 * Summary: string dictionary
3 * Description: dictionary of reusable strings, just used to avoid allocation
4 *         and freeing operations.
5 *
6 * Copy: See Copyright for the status of this software.
7 *
8 * Author: Daniel Veillard
9 */
10
11#ifndef __XML_DICT_H__
12#define __XML_DICT_H__
13
14#ifdef __cplusplus
15#define __XML_EXTERNC	extern "C"
16#else
17#define __XML_EXTERNC
18#endif
19
20/*
21 * The dictionary.
22 */
23__XML_EXTERNC typedef struct _xmlDict xmlDict;
24__XML_EXTERNC typedef xmlDict *xmlDictPtr;
25
26#include <limits.h>
27#include <libxml/xmlversion.h>
28#include <libxml/tree.h>
29
30#ifdef __cplusplus
31extern "C" {
32#endif
33
34/*
35 * Initializer
36 */
37XMLPUBFUN int XMLCALL  xmlInitializeDict(void);
38
39/*
40 * Constructor and destructor.
41 */
42XMLPUBFUN xmlDictPtr XMLCALL
43			xmlDictCreate	(void);
44XMLPUBFUN size_t XMLCALL
45			xmlDictSetLimit	(xmlDictPtr dict,
46                                         size_t limit);
47XMLPUBFUN size_t XMLCALL
48			xmlDictGetUsage (xmlDictPtr dict);
49XMLPUBFUN xmlDictPtr XMLCALL
50			xmlDictCreateSub(xmlDictPtr sub);
51XMLPUBFUN int XMLCALL
52			xmlDictReference(xmlDictPtr dict);
53XMLPUBFUN void XMLCALL
54			xmlDictFree	(xmlDictPtr dict);
55
56/*
57 * Lookup of entry in the dictionary.
58 */
59XMLPUBFUN const xmlChar * XMLCALL
60			xmlDictLookup	(xmlDictPtr dict,
61		                         const xmlChar *name,
62		                         int len);
63XMLPUBFUN const xmlChar * XMLCALL
64			xmlDictExists	(xmlDictPtr dict,
65		                         const xmlChar *name,
66		                         int len);
67XMLPUBFUN const xmlChar * XMLCALL
68			xmlDictQLookup	(xmlDictPtr dict,
69		                         const xmlChar *prefix,
70		                         const xmlChar *name);
71XMLPUBFUN int XMLCALL
72			xmlDictOwns	(xmlDictPtr dict,
73					 const xmlChar *str);
74XMLPUBFUN int XMLCALL
75			xmlDictSize	(xmlDictPtr dict);
76
77/*
78 * Cleanup function
79 */
80XMLPUBFUN void XMLCALL
81                        xmlDictCleanup  (void);
82
83#ifdef __cplusplus
84}
85#endif
86#endif /* ! __XML_DICT_H__ */
87