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