1 /*
2  * Summary: interface for all global variables of the library
3  * Description: all the global variables and thread handling for
4  *              those variables is handled by this module.
5  *
6  * The bottom of this file is automatically generated by build_glob.py
7  * based on the description file global.data
8  *
9  * Copy: See Copyright for the status of this software.
10  *
11  * Author: Gary Pennington <Gary.Pennington@uk.sun.com>, Daniel Veillard
12  */
13 
14 #ifndef __XML_GLOBALS_H
15 #define __XML_GLOBALS_H
16 
17 #include <libxml/xmlversion.h>
18 #include <libxml/parser.h>
19 #include <libxml/xmlerror.h>
20 #include <libxml/SAX2.h>
21 #include <libxml/xmlmemory.h>
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 XML_DEPRECATED
28 XMLPUBFUN void XMLCALL xmlInitGlobals(void);
29 XML_DEPRECATED
30 XMLPUBFUN void XMLCALL xmlCleanupGlobals(void);
31 
32 /**
33  * xmlParserInputBufferCreateFilenameFunc:
34  * @URI: the URI to read from
35  * @enc: the requested source encoding
36  *
37  * Signature for the function doing the lookup for a suitable input method
38  * corresponding to an URI.
39  *
40  * Returns the new xmlParserInputBufferPtr in case of success or NULL if no
41  *         method was found.
42  */
43 typedef xmlParserInputBufferPtr (*xmlParserInputBufferCreateFilenameFunc) (const char *URI,
44 									   xmlCharEncoding enc);
45 
46 
47 /**
48  * xmlOutputBufferCreateFilenameFunc:
49  * @URI: the URI to write to
50  * @enc: the requested target encoding
51  *
52  * Signature for the function doing the lookup for a suitable output method
53  * corresponding to an URI.
54  *
55  * Returns the new xmlOutputBufferPtr in case of success or NULL if no
56  *         method was found.
57  */
58 typedef xmlOutputBufferPtr (*xmlOutputBufferCreateFilenameFunc) (const char *URI,
59 								 xmlCharEncodingHandlerPtr encoder,
60 								 int compression);
61 
62 XMLPUBFUN xmlParserInputBufferCreateFilenameFunc
63 XMLCALL xmlParserInputBufferCreateFilenameDefault (xmlParserInputBufferCreateFilenameFunc func);
64 XMLPUBFUN xmlOutputBufferCreateFilenameFunc
65 XMLCALL xmlOutputBufferCreateFilenameDefault (xmlOutputBufferCreateFilenameFunc func);
66 
67 /*
68  * Externally global symbols which need to be protected for backwards
69  * compatibility support.
70  */
71 
72 #undef	htmlDefaultSAXHandler
73 #undef	oldXMLWDcompatibility
74 #undef	xmlBufferAllocScheme
75 #undef	xmlDefaultBufferSize
76 #undef	xmlDefaultSAXHandler
77 #undef	xmlDefaultSAXLocator
78 #undef	xmlDoValidityCheckingDefaultValue
79 #undef	xmlFree
80 #undef	xmlGenericError
81 #undef	xmlStructuredError
82 #undef	xmlGenericErrorContext
83 #undef	xmlStructuredErrorContext
84 #undef	xmlGetWarningsDefaultValue
85 #undef	xmlIndentTreeOutput
86 #undef  xmlTreeIndentString
87 #undef	xmlKeepBlanksDefaultValue
88 #undef	xmlLineNumbersDefaultValue
89 #undef	xmlLoadExtDtdDefaultValue
90 #undef	xmlMalloc
91 #undef	xmlMallocAtomic
92 #undef	xmlMemStrdup
93 #undef	xmlParserDebugEntities
94 #undef	xmlParserVersion
95 #undef	xmlPedanticParserDefaultValue
96 #undef	xmlRealloc
97 #undef	xmlSaveNoEmptyTags
98 #undef	xmlSubstituteEntitiesDefaultValue
99 #undef  xmlRegisterNodeDefaultValue
100 #undef  xmlDeregisterNodeDefaultValue
101 #undef  xmlLastError
102 #undef  xmlParserInputBufferCreateFilenameValue
103 #undef  xmlOutputBufferCreateFilenameValue
104 
105 /**
106  * xmlRegisterNodeFunc:
107  * @node: the current node
108  *
109  * Signature for the registration callback of a created node
110  */
111 typedef void (*xmlRegisterNodeFunc) (xmlNodePtr node);
112 /**
113  * xmlDeregisterNodeFunc:
114  * @node: the current node
115  *
116  * Signature for the deregistration callback of a discarded node
117  */
118 typedef void (*xmlDeregisterNodeFunc) (xmlNodePtr node);
119 
120 typedef struct _xmlGlobalState xmlGlobalState;
121 typedef xmlGlobalState *xmlGlobalStatePtr;
122 struct _xmlGlobalState
123 {
124 	const char *xmlParserVersion;
125 
126 	xmlSAXLocator xmlDefaultSAXLocator;
127 	xmlSAXHandlerV1 xmlDefaultSAXHandler;
128 	xmlSAXHandlerV1 docbDefaultSAXHandler; /* unused */
129 	xmlSAXHandlerV1 htmlDefaultSAXHandler;
130 
131 	xmlFreeFunc xmlFree;
132 	xmlMallocFunc xmlMalloc;
133 	xmlStrdupFunc xmlMemStrdup;
134 	xmlReallocFunc xmlRealloc;
135 
136 	xmlGenericErrorFunc xmlGenericError;
137 	xmlStructuredErrorFunc xmlStructuredError;
138 	void *xmlGenericErrorContext;
139 
140 	int oldXMLWDcompatibility;
141 
142 	xmlBufferAllocationScheme xmlBufferAllocScheme;
143 	int xmlDefaultBufferSize;
144 
145 	int xmlSubstituteEntitiesDefaultValue;
146 	int xmlDoValidityCheckingDefaultValue;
147 	int xmlGetWarningsDefaultValue;
148 	int xmlKeepBlanksDefaultValue;
149 	int xmlLineNumbersDefaultValue;
150 	int xmlLoadExtDtdDefaultValue;
151 	int xmlParserDebugEntities;
152 	int xmlPedanticParserDefaultValue;
153 
154 	int xmlSaveNoEmptyTags;
155 	int xmlIndentTreeOutput;
156 	const char *xmlTreeIndentString;
157 
158 	xmlRegisterNodeFunc xmlRegisterNodeDefaultValue;
159 	xmlDeregisterNodeFunc xmlDeregisterNodeDefaultValue;
160 
161 	xmlMallocFunc xmlMallocAtomic;
162 	xmlError xmlLastError;
163 
164 	xmlParserInputBufferCreateFilenameFunc xmlParserInputBufferCreateFilenameValue;
165 	xmlOutputBufferCreateFilenameFunc xmlOutputBufferCreateFilenameValue;
166 
167 	void *xmlStructuredErrorContext;
168 };
169 
170 #ifdef __cplusplus
171 }
172 #endif
173 #include <libxml/threads.h>
174 #ifdef __cplusplus
175 extern "C" {
176 #endif
177 
178 XMLPUBFUN void XMLCALL	xmlInitializeGlobalState(xmlGlobalStatePtr gs);
179 
180 XMLPUBFUN void XMLCALL xmlThrDefSetGenericErrorFunc(void *ctx, xmlGenericErrorFunc handler);
181 
182 XMLPUBFUN void XMLCALL xmlThrDefSetStructuredErrorFunc(void *ctx, xmlStructuredErrorFunc handler);
183 
184 XMLPUBFUN xmlRegisterNodeFunc XMLCALL xmlRegisterNodeDefault(xmlRegisterNodeFunc func);
185 XMLPUBFUN xmlRegisterNodeFunc XMLCALL xmlThrDefRegisterNodeDefault(xmlRegisterNodeFunc func);
186 XMLPUBFUN xmlDeregisterNodeFunc XMLCALL xmlDeregisterNodeDefault(xmlDeregisterNodeFunc func);
187 XMLPUBFUN xmlDeregisterNodeFunc XMLCALL xmlThrDefDeregisterNodeDefault(xmlDeregisterNodeFunc func);
188 
189 XMLPUBFUN xmlOutputBufferCreateFilenameFunc XMLCALL
190 	xmlThrDefOutputBufferCreateFilenameDefault(xmlOutputBufferCreateFilenameFunc func);
191 XMLPUBFUN xmlParserInputBufferCreateFilenameFunc XMLCALL
192 	xmlThrDefParserInputBufferCreateFilenameDefault(
193 				xmlParserInputBufferCreateFilenameFunc func);
194 
195 /** DOC_DISABLE */
196 /*
197  * In general the memory allocation entry points are not kept
198  * thread specific but this can be overridden by LIBXML_THREAD_ALLOC_ENABLED
199  *    - xmlMalloc
200  *    - xmlMallocAtomic
201  *    - xmlRealloc
202  *    - xmlMemStrdup
203  *    - xmlFree
204  */
205 
206 #ifdef LIBXML_THREAD_ALLOC_ENABLED
207 #ifdef LIBXML_THREAD_ENABLED
208 XMLPUBFUN  xmlMallocFunc * XMLCALL __xmlMalloc(void);
209 #define xmlMalloc \
210 (*(__xmlMalloc()))
211 #else
212 XMLPUBVAR xmlMallocFunc xmlMalloc;
213 #endif
214 
215 #ifdef LIBXML_THREAD_ENABLED
216 XMLPUBFUN  xmlMallocFunc * XMLCALL __xmlMallocAtomic(void);
217 #define xmlMallocAtomic \
218 (*(__xmlMallocAtomic()))
219 #else
220 XMLPUBVAR xmlMallocFunc xmlMallocAtomic;
221 #endif
222 
223 #ifdef LIBXML_THREAD_ENABLED
224 XMLPUBFUN  xmlReallocFunc * XMLCALL __xmlRealloc(void);
225 #define xmlRealloc \
226 (*(__xmlRealloc()))
227 #else
228 XMLPUBVAR xmlReallocFunc xmlRealloc;
229 #endif
230 
231 #ifdef LIBXML_THREAD_ENABLED
232 XMLPUBFUN  xmlFreeFunc * XMLCALL __xmlFree(void);
233 #define xmlFree \
234 (*(__xmlFree()))
235 #else
236 XMLPUBVAR xmlFreeFunc xmlFree;
237 #endif
238 
239 #ifdef LIBXML_THREAD_ENABLED
240 XMLPUBFUN  xmlStrdupFunc * XMLCALL __xmlMemStrdup(void);
241 #define xmlMemStrdup \
242 (*(__xmlMemStrdup()))
243 #else
244 XMLPUBVAR xmlStrdupFunc xmlMemStrdup;
245 #endif
246 
247 #else /* !LIBXML_THREAD_ALLOC_ENABLED */
248 XMLPUBVAR xmlMallocFunc xmlMalloc;
249 XMLPUBVAR xmlMallocFunc xmlMallocAtomic;
250 XMLPUBVAR xmlReallocFunc xmlRealloc;
251 XMLPUBVAR xmlFreeFunc xmlFree;
252 XMLPUBVAR xmlStrdupFunc xmlMemStrdup;
253 #endif /* LIBXML_THREAD_ALLOC_ENABLED */
254 
255 #ifdef LIBXML_HTML_ENABLED
256 XMLPUBFUN xmlSAXHandlerV1 * XMLCALL __htmlDefaultSAXHandler(void);
257 #ifdef LIBXML_THREAD_ENABLED
258 #define htmlDefaultSAXHandler \
259 (*(__htmlDefaultSAXHandler()))
260 #else
261 XMLPUBVAR xmlSAXHandlerV1 htmlDefaultSAXHandler;
262 #endif
263 #endif
264 
265 XMLPUBFUN xmlError * XMLCALL __xmlLastError(void);
266 #ifdef LIBXML_THREAD_ENABLED
267 #define xmlLastError \
268 (*(__xmlLastError()))
269 #else
270 XMLPUBVAR xmlError xmlLastError;
271 #endif
272 
273 /*
274  * Everything starting from the line below is
275  * Automatically generated by build_glob.py.
276  * Do not modify the previous line.
277  */
278 
279 
280 XMLPUBFUN int * XMLCALL __oldXMLWDcompatibility(void);
281 #ifdef LIBXML_THREAD_ENABLED
282 #define oldXMLWDcompatibility \
283 (*(__oldXMLWDcompatibility()))
284 #else
285 XMLPUBVAR int oldXMLWDcompatibility;
286 #endif
287 
288 XMLPUBFUN xmlBufferAllocationScheme * XMLCALL __xmlBufferAllocScheme(void);
289 #ifdef LIBXML_THREAD_ENABLED
290 #define xmlBufferAllocScheme \
291 (*(__xmlBufferAllocScheme()))
292 #else
293 XMLPUBVAR xmlBufferAllocationScheme xmlBufferAllocScheme;
294 #endif
295 XMLPUBFUN xmlBufferAllocationScheme XMLCALL
296 	xmlThrDefBufferAllocScheme(xmlBufferAllocationScheme v);
297 
298 XMLPUBFUN int * XMLCALL __xmlDefaultBufferSize(void);
299 #ifdef LIBXML_THREAD_ENABLED
300 #define xmlDefaultBufferSize \
301 (*(__xmlDefaultBufferSize()))
302 #else
303 XMLPUBVAR int xmlDefaultBufferSize;
304 #endif
305 XMLPUBFUN int XMLCALL xmlThrDefDefaultBufferSize(int v);
306 
307 XMLPUBFUN xmlSAXHandlerV1 * XMLCALL __xmlDefaultSAXHandler(void);
308 #ifdef LIBXML_THREAD_ENABLED
309 #define xmlDefaultSAXHandler \
310 (*(__xmlDefaultSAXHandler()))
311 #else
312 XMLPUBVAR xmlSAXHandlerV1 xmlDefaultSAXHandler;
313 #endif
314 
315 XMLPUBFUN xmlSAXLocator * XMLCALL __xmlDefaultSAXLocator(void);
316 #ifdef LIBXML_THREAD_ENABLED
317 #define xmlDefaultSAXLocator \
318 (*(__xmlDefaultSAXLocator()))
319 #else
320 XMLPUBVAR xmlSAXLocator xmlDefaultSAXLocator;
321 #endif
322 
323 XMLPUBFUN int * XMLCALL __xmlDoValidityCheckingDefaultValue(void);
324 #ifdef LIBXML_THREAD_ENABLED
325 #define xmlDoValidityCheckingDefaultValue \
326 (*(__xmlDoValidityCheckingDefaultValue()))
327 #else
328 XMLPUBVAR int xmlDoValidityCheckingDefaultValue;
329 #endif
330 XMLPUBFUN int XMLCALL xmlThrDefDoValidityCheckingDefaultValue(int v);
331 
332 XMLPUBFUN xmlGenericErrorFunc * XMLCALL __xmlGenericError(void);
333 #ifdef LIBXML_THREAD_ENABLED
334 #define xmlGenericError \
335 (*(__xmlGenericError()))
336 #else
337 XMLPUBVAR xmlGenericErrorFunc xmlGenericError;
338 #endif
339 
340 XMLPUBFUN xmlStructuredErrorFunc * XMLCALL __xmlStructuredError(void);
341 #ifdef LIBXML_THREAD_ENABLED
342 #define xmlStructuredError \
343 (*(__xmlStructuredError()))
344 #else
345 XMLPUBVAR xmlStructuredErrorFunc xmlStructuredError;
346 #endif
347 
348 XMLPUBFUN void * * XMLCALL __xmlGenericErrorContext(void);
349 #ifdef LIBXML_THREAD_ENABLED
350 #define xmlGenericErrorContext \
351 (*(__xmlGenericErrorContext()))
352 #else
353 XMLPUBVAR void * xmlGenericErrorContext;
354 #endif
355 
356 XMLPUBFUN void * * XMLCALL __xmlStructuredErrorContext(void);
357 #ifdef LIBXML_THREAD_ENABLED
358 #define xmlStructuredErrorContext \
359 (*(__xmlStructuredErrorContext()))
360 #else
361 XMLPUBVAR void * xmlStructuredErrorContext;
362 #endif
363 
364 XMLPUBFUN int * XMLCALL __xmlGetWarningsDefaultValue(void);
365 #ifdef LIBXML_THREAD_ENABLED
366 #define xmlGetWarningsDefaultValue \
367 (*(__xmlGetWarningsDefaultValue()))
368 #else
369 XMLPUBVAR int xmlGetWarningsDefaultValue;
370 #endif
371 XMLPUBFUN int XMLCALL xmlThrDefGetWarningsDefaultValue(int v);
372 
373 XMLPUBFUN int * XMLCALL __xmlIndentTreeOutput(void);
374 #ifdef LIBXML_THREAD_ENABLED
375 #define xmlIndentTreeOutput \
376 (*(__xmlIndentTreeOutput()))
377 #else
378 XMLPUBVAR int xmlIndentTreeOutput;
379 #endif
380 XMLPUBFUN int XMLCALL xmlThrDefIndentTreeOutput(int v);
381 
382 XMLPUBFUN const char * * XMLCALL __xmlTreeIndentString(void);
383 #ifdef LIBXML_THREAD_ENABLED
384 #define xmlTreeIndentString \
385 (*(__xmlTreeIndentString()))
386 #else
387 XMLPUBVAR const char * xmlTreeIndentString;
388 #endif
389 XMLPUBFUN const char * XMLCALL xmlThrDefTreeIndentString(const char * v);
390 
391 XMLPUBFUN int * XMLCALL __xmlKeepBlanksDefaultValue(void);
392 #ifdef LIBXML_THREAD_ENABLED
393 #define xmlKeepBlanksDefaultValue \
394 (*(__xmlKeepBlanksDefaultValue()))
395 #else
396 XMLPUBVAR int xmlKeepBlanksDefaultValue;
397 #endif
398 XMLPUBFUN int XMLCALL xmlThrDefKeepBlanksDefaultValue(int v);
399 
400 XMLPUBFUN int * XMLCALL __xmlLineNumbersDefaultValue(void);
401 #ifdef LIBXML_THREAD_ENABLED
402 #define xmlLineNumbersDefaultValue \
403 (*(__xmlLineNumbersDefaultValue()))
404 #else
405 XMLPUBVAR int xmlLineNumbersDefaultValue;
406 #endif
407 XMLPUBFUN int XMLCALL xmlThrDefLineNumbersDefaultValue(int v);
408 
409 XMLPUBFUN int * XMLCALL __xmlLoadExtDtdDefaultValue(void);
410 #ifdef LIBXML_THREAD_ENABLED
411 #define xmlLoadExtDtdDefaultValue \
412 (*(__xmlLoadExtDtdDefaultValue()))
413 #else
414 XMLPUBVAR int xmlLoadExtDtdDefaultValue;
415 #endif
416 XMLPUBFUN int XMLCALL xmlThrDefLoadExtDtdDefaultValue(int v);
417 
418 XMLPUBFUN int * XMLCALL __xmlParserDebugEntities(void);
419 #ifdef LIBXML_THREAD_ENABLED
420 #define xmlParserDebugEntities \
421 (*(__xmlParserDebugEntities()))
422 #else
423 XMLPUBVAR int xmlParserDebugEntities;
424 #endif
425 XMLPUBFUN int XMLCALL xmlThrDefParserDebugEntities(int v);
426 
427 XMLPUBFUN const char * * XMLCALL __xmlParserVersion(void);
428 #ifdef LIBXML_THREAD_ENABLED
429 #define xmlParserVersion \
430 (*(__xmlParserVersion()))
431 #else
432 XMLPUBVAR const char * xmlParserVersion;
433 #endif
434 
435 XMLPUBFUN int * XMLCALL __xmlPedanticParserDefaultValue(void);
436 #ifdef LIBXML_THREAD_ENABLED
437 #define xmlPedanticParserDefaultValue \
438 (*(__xmlPedanticParserDefaultValue()))
439 #else
440 XMLPUBVAR int xmlPedanticParserDefaultValue;
441 #endif
442 XMLPUBFUN int XMLCALL xmlThrDefPedanticParserDefaultValue(int v);
443 
444 XMLPUBFUN int * XMLCALL __xmlSaveNoEmptyTags(void);
445 #ifdef LIBXML_THREAD_ENABLED
446 #define xmlSaveNoEmptyTags \
447 (*(__xmlSaveNoEmptyTags()))
448 #else
449 XMLPUBVAR int xmlSaveNoEmptyTags;
450 #endif
451 XMLPUBFUN int XMLCALL xmlThrDefSaveNoEmptyTags(int v);
452 
453 XMLPUBFUN int * XMLCALL __xmlSubstituteEntitiesDefaultValue(void);
454 #ifdef LIBXML_THREAD_ENABLED
455 #define xmlSubstituteEntitiesDefaultValue \
456 (*(__xmlSubstituteEntitiesDefaultValue()))
457 #else
458 XMLPUBVAR int xmlSubstituteEntitiesDefaultValue;
459 #endif
460 XMLPUBFUN int XMLCALL xmlThrDefSubstituteEntitiesDefaultValue(int v);
461 
462 XMLPUBFUN xmlRegisterNodeFunc * XMLCALL __xmlRegisterNodeDefaultValue(void);
463 #ifdef LIBXML_THREAD_ENABLED
464 #define xmlRegisterNodeDefaultValue \
465 (*(__xmlRegisterNodeDefaultValue()))
466 #else
467 XMLPUBVAR xmlRegisterNodeFunc xmlRegisterNodeDefaultValue;
468 #endif
469 
470 XMLPUBFUN xmlDeregisterNodeFunc * XMLCALL __xmlDeregisterNodeDefaultValue(void);
471 #ifdef LIBXML_THREAD_ENABLED
472 #define xmlDeregisterNodeDefaultValue \
473 (*(__xmlDeregisterNodeDefaultValue()))
474 #else
475 XMLPUBVAR xmlDeregisterNodeFunc xmlDeregisterNodeDefaultValue;
476 #endif
477 
478 XMLPUBFUN xmlParserInputBufferCreateFilenameFunc * XMLCALL \
479 				__xmlParserInputBufferCreateFilenameValue(void);
480 #ifdef LIBXML_THREAD_ENABLED
481 #define xmlParserInputBufferCreateFilenameValue \
482 (*(__xmlParserInputBufferCreateFilenameValue()))
483 #else
484 XMLPUBVAR xmlParserInputBufferCreateFilenameFunc xmlParserInputBufferCreateFilenameValue;
485 #endif
486 
487 XMLPUBFUN xmlOutputBufferCreateFilenameFunc * XMLCALL __xmlOutputBufferCreateFilenameValue(void);
488 #ifdef LIBXML_THREAD_ENABLED
489 #define xmlOutputBufferCreateFilenameValue \
490 (*(__xmlOutputBufferCreateFilenameValue()))
491 #else
492 XMLPUBVAR xmlOutputBufferCreateFilenameFunc xmlOutputBufferCreateFilenameValue;
493 #endif
494 
495 #ifdef __cplusplus
496 }
497 #endif
498 
499 #endif /* __XML_GLOBALS_H */
500