Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
hhhrrrttt222111
GitHub Repository: hhhrrrttt222111/Dorkify
Path: blob/master/venv/Lib/site-packages/lxml/includes/libxml/hash.h
811 views
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 <[email protected]>
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__ */
234
235