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,
43									   xmlCharEncoding enc);
44
45
46/**
47 * xmlOutputBufferCreateFilenameFunc:
48 * @URI: the URI to write to
49 * @enc: the requested target encoding
50 *
51 * Signature for the function doing the lookup for a suitable output method
52 * corresponding to an URI.
53 *
54 * Returns the new xmlOutputBufferPtr in case of success or NULL if no
55 *         method was found.
56 */
57typedef xmlOutputBufferPtr (*xmlOutputBufferCreateFilenameFunc) (const char *URI,
58								 xmlCharEncodingHandlerPtr encoder,
59								 int compression);
60
61XMLPUBFUN xmlParserInputBufferCreateFilenameFunc
62XMLCALL xmlParserInputBufferCreateFilenameDefault (xmlParserInputBufferCreateFilenameFunc func);
63XMLPUBFUN xmlOutputBufferCreateFilenameFunc
64XMLCALL xmlOutputBufferCreateFilenameDefault (xmlOutputBufferCreateFilenameFunc func);
65
66/*
67 * Externally global symbols which need to be protected for backwards
68 * compatibility support.
69 */
70
71#undef	docbDefaultSAXHandler
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 */
111typedef void (*xmlRegisterNodeFunc) (xmlNodePtr node);
112/**
113 * xmlDeregisterNodeFunc:
114 * @node: the current node
115 *
116 * Signature for the deregistration callback of a discarded node
117 */
118typedef void (*xmlDeregisterNodeFunc) (xmlNodePtr node);
119
120typedef struct _xmlGlobalState xmlGlobalState;
121typedef xmlGlobalState *xmlGlobalStatePtr;
122struct _xmlGlobalState
123{
124	const char *xmlParserVersion;
125
126	xmlSAXLocator xmlDefaultSAXLocator;
127	xmlSAXHandlerV1 xmlDefaultSAXHandler;
128	xmlSAXHandlerV1 docbDefaultSAXHandler;
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
175extern "C" {
176#endif
177
178XMLPUBFUN void XMLCALL	xmlInitializeGlobalState(xmlGlobalStatePtr gs);
179
180XMLPUBFUN void XMLCALL xmlThrDefSetGenericErrorFunc(void *ctx, xmlGenericErrorFunc handler);
181
182XMLPUBFUN void XMLCALL xmlThrDefSetStructuredErrorFunc(void *ctx, xmlStructuredErrorFunc handler);
183
184XMLPUBFUN xmlRegisterNodeFunc XMLCALL xmlRegisterNodeDefault(xmlRegisterNodeFunc func);
185XMLPUBFUN xmlRegisterNodeFunc XMLCALL xmlThrDefRegisterNodeDefault(xmlRegisterNodeFunc func);
186XMLPUBFUN xmlDeregisterNodeFunc XMLCALL xmlDeregisterNodeDefault(xmlDeregisterNodeFunc func);
187XMLPUBFUN xmlDeregisterNodeFunc XMLCALL xmlThrDefDeregisterNodeDefault(xmlDeregisterNodeFunc func);
188
189XMLPUBFUN xmlOutputBufferCreateFilenameFunc XMLCALL
190	xmlThrDefOutputBufferCreateFilenameDefault(xmlOutputBufferCreateFilenameFunc func);
191XMLPUBFUN 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
208XMLPUBFUN  xmlMallocFunc * XMLCALL __xmlMalloc(void);
209#define xmlMalloc \
210(*(__xmlMalloc()))
211#else
212XMLPUBVAR xmlMallocFunc xmlMalloc;
213#endif
214
215#ifdef LIBXML_THREAD_ENABLED
216XMLPUBFUN  xmlMallocFunc * XMLCALL __xmlMallocAtomic(void);
217#define xmlMallocAtomic \
218(*(__xmlMallocAtomic()))
219#else
220XMLPUBVAR xmlMallocFunc xmlMallocAtomic;
221#endif
222
223#ifdef LIBXML_THREAD_ENABLED
224XMLPUBFUN  xmlReallocFunc * XMLCALL __xmlRealloc(void);
225#define xmlRealloc \
226(*(__xmlRealloc()))
227#else
228XMLPUBVAR xmlReallocFunc xmlRealloc;
229#endif
230
231#ifdef LIBXML_THREAD_ENABLED
232XMLPUBFUN  xmlFreeFunc * XMLCALL __xmlFree(void);
233#define xmlFree \
234(*(__xmlFree()))
235#else
236XMLPUBVAR xmlFreeFunc xmlFree;
237#endif
238
239#ifdef LIBXML_THREAD_ENABLED
240XMLPUBFUN  xmlStrdupFunc * XMLCALL __xmlMemStrdup(void);
241#define xmlMemStrdup \
242(*(__xmlMemStrdup()))
243#else
244XMLPUBVAR xmlStrdupFunc xmlMemStrdup;
245#endif
246
247#else /* !LIBXML_THREAD_ALLOC_ENABLED */
248XMLPUBVAR xmlMallocFunc xmlMalloc;
249XMLPUBVAR xmlMallocFunc xmlMallocAtomic;
250XMLPUBVAR xmlReallocFunc xmlRealloc;
251XMLPUBVAR xmlFreeFunc xmlFree;
252XMLPUBVAR xmlStrdupFunc xmlMemStrdup;
253#endif /* LIBXML_THREAD_ALLOC_ENABLED */
254
255#ifdef LIBXML_DOCB_ENABLED
256XMLPUBFUN  xmlSAXHandlerV1 * XMLCALL __docbDefaultSAXHandler(void);
257#ifdef LIBXML_THREAD_ENABLED
258#define docbDefaultSAXHandler \
259(*(__docbDefaultSAXHandler()))
260#else
261XMLPUBVAR xmlSAXHandlerV1 docbDefaultSAXHandler;
262#endif
263#endif
264
265#ifdef LIBXML_HTML_ENABLED
266XMLPUBFUN xmlSAXHandlerV1 * XMLCALL __htmlDefaultSAXHandler(void);
267#ifdef LIBXML_THREAD_ENABLED
268#define htmlDefaultSAXHandler \
269(*(__htmlDefaultSAXHandler()))
270#else
271XMLPUBVAR xmlSAXHandlerV1 htmlDefaultSAXHandler;
272#endif
273#endif
274
275XMLPUBFUN xmlError * XMLCALL __xmlLastError(void);
276#ifdef LIBXML_THREAD_ENABLED
277#define xmlLastError \
278(*(__xmlLastError()))
279#else
280XMLPUBVAR xmlError xmlLastError;
281#endif
282
283/*
284 * Everything starting from the line below is
285 * Automatically generated by build_glob.py.
286 * Do not modify the previous line.
287 */
288
289
290XMLPUBFUN int * XMLCALL __oldXMLWDcompatibility(void);
291#ifdef LIBXML_THREAD_ENABLED
292#define oldXMLWDcompatibility \
293(*(__oldXMLWDcompatibility()))
294#else
295XMLPUBVAR int oldXMLWDcompatibility;
296#endif
297
298XMLPUBFUN xmlBufferAllocationScheme * XMLCALL __xmlBufferAllocScheme(void);
299#ifdef LIBXML_THREAD_ENABLED
300#define xmlBufferAllocScheme \
301(*(__xmlBufferAllocScheme()))
302#else
303XMLPUBVAR xmlBufferAllocationScheme xmlBufferAllocScheme;
304#endif
305XMLPUBFUN xmlBufferAllocationScheme XMLCALL
306	xmlThrDefBufferAllocScheme(xmlBufferAllocationScheme v);
307
308XMLPUBFUN int * XMLCALL __xmlDefaultBufferSize(void);
309#ifdef LIBXML_THREAD_ENABLED
310#define xmlDefaultBufferSize \
311(*(__xmlDefaultBufferSize()))
312#else
313XMLPUBVAR int xmlDefaultBufferSize;
314#endif
315XMLPUBFUN int XMLCALL xmlThrDefDefaultBufferSize(int v);
316
317XMLPUBFUN xmlSAXHandlerV1 * XMLCALL __xmlDefaultSAXHandler(void);
318#ifdef LIBXML_THREAD_ENABLED
319#define xmlDefaultSAXHandler \
320(*(__xmlDefaultSAXHandler()))
321#else
322XMLPUBVAR xmlSAXHandlerV1 xmlDefaultSAXHandler;
323#endif
324
325XMLPUBFUN xmlSAXLocator * XMLCALL __xmlDefaultSAXLocator(void);
326#ifdef LIBXML_THREAD_ENABLED
327#define xmlDefaultSAXLocator \
328(*(__xmlDefaultSAXLocator()))
329#else
330XMLPUBVAR xmlSAXLocator xmlDefaultSAXLocator;
331#endif
332
333XMLPUBFUN int * XMLCALL __xmlDoValidityCheckingDefaultValue(void);
334#ifdef LIBXML_THREAD_ENABLED
335#define xmlDoValidityCheckingDefaultValue \
336(*(__xmlDoValidityCheckingDefaultValue()))
337#else
338XMLPUBVAR int xmlDoValidityCheckingDefaultValue;
339#endif
340XMLPUBFUN int XMLCALL xmlThrDefDoValidityCheckingDefaultValue(int v);
341
342XMLPUBFUN xmlGenericErrorFunc * XMLCALL __xmlGenericError(void);
343#ifdef LIBXML_THREAD_ENABLED
344#define xmlGenericError \
345(*(__xmlGenericError()))
346#else
347XMLPUBVAR xmlGenericErrorFunc xmlGenericError;
348#endif
349
350XMLPUBFUN xmlStructuredErrorFunc * XMLCALL __xmlStructuredError(void);
351#ifdef LIBXML_THREAD_ENABLED
352#define xmlStructuredError \
353(*(__xmlStructuredError()))
354#else
355XMLPUBVAR xmlStructuredErrorFunc xmlStructuredError;
356#endif
357
358XMLPUBFUN void * * XMLCALL __xmlGenericErrorContext(void);
359#ifdef LIBXML_THREAD_ENABLED
360#define xmlGenericErrorContext \
361(*(__xmlGenericErrorContext()))
362#else
363XMLPUBVAR void * xmlGenericErrorContext;
364#endif
365
366XMLPUBFUN void * * XMLCALL __xmlStructuredErrorContext(void);
367#ifdef LIBXML_THREAD_ENABLED
368#define xmlStructuredErrorContext \
369(*(__xmlStructuredErrorContext()))
370#else
371XMLPUBVAR void * xmlStructuredErrorContext;
372#endif
373
374XMLPUBFUN int * XMLCALL __xmlGetWarningsDefaultValue(void);
375#ifdef LIBXML_THREAD_ENABLED
376#define xmlGetWarningsDefaultValue \
377(*(__xmlGetWarningsDefaultValue()))
378#else
379XMLPUBVAR int xmlGetWarningsDefaultValue;
380#endif
381XMLPUBFUN int XMLCALL xmlThrDefGetWarningsDefaultValue(int v);
382
383XMLPUBFUN int * XMLCALL __xmlIndentTreeOutput(void);
384#ifdef LIBXML_THREAD_ENABLED
385#define xmlIndentTreeOutput \
386(*(__xmlIndentTreeOutput()))
387#else
388XMLPUBVAR int xmlIndentTreeOutput;
389#endif
390XMLPUBFUN int XMLCALL xmlThrDefIndentTreeOutput(int v);
391
392XMLPUBFUN const char * * XMLCALL __xmlTreeIndentString(void);
393#ifdef LIBXML_THREAD_ENABLED
394#define xmlTreeIndentString \
395(*(__xmlTreeIndentString()))
396#else
397XMLPUBVAR const char * xmlTreeIndentString;
398#endif
399XMLPUBFUN const char * XMLCALL xmlThrDefTreeIndentString(const char * v);
400
401XMLPUBFUN int * XMLCALL __xmlKeepBlanksDefaultValue(void);
402#ifdef LIBXML_THREAD_ENABLED
403#define xmlKeepBlanksDefaultValue \
404(*(__xmlKeepBlanksDefaultValue()))
405#else
406XMLPUBVAR int xmlKeepBlanksDefaultValue;
407#endif
408XMLPUBFUN int XMLCALL xmlThrDefKeepBlanksDefaultValue(int v);
409
410XMLPUBFUN int * XMLCALL __xmlLineNumbersDefaultValue(void);
411#ifdef LIBXML_THREAD_ENABLED
412#define xmlLineNumbersDefaultValue \
413(*(__xmlLineNumbersDefaultValue()))
414#else
415XMLPUBVAR int xmlLineNumbersDefaultValue;
416#endif
417XMLPUBFUN int XMLCALL xmlThrDefLineNumbersDefaultValue(int v);
418
419XMLPUBFUN int * XMLCALL __xmlLoadExtDtdDefaultValue(void);
420#ifdef LIBXML_THREAD_ENABLED
421#define xmlLoadExtDtdDefaultValue \
422(*(__xmlLoadExtDtdDefaultValue()))
423#else
424XMLPUBVAR int xmlLoadExtDtdDefaultValue;
425#endif
426XMLPUBFUN int XMLCALL xmlThrDefLoadExtDtdDefaultValue(int v);
427
428XMLPUBFUN int * XMLCALL __xmlParserDebugEntities(void);
429#ifdef LIBXML_THREAD_ENABLED
430#define xmlParserDebugEntities \
431(*(__xmlParserDebugEntities()))
432#else
433XMLPUBVAR int xmlParserDebugEntities;
434#endif
435XMLPUBFUN int XMLCALL xmlThrDefParserDebugEntities(int v);
436
437XMLPUBFUN const char * * XMLCALL __xmlParserVersion(void);
438#ifdef LIBXML_THREAD_ENABLED
439#define xmlParserVersion \
440(*(__xmlParserVersion()))
441#else
442XMLPUBVAR const char * xmlParserVersion;
443#endif
444
445XMLPUBFUN int * XMLCALL __xmlPedanticParserDefaultValue(void);
446#ifdef LIBXML_THREAD_ENABLED
447#define xmlPedanticParserDefaultValue \
448(*(__xmlPedanticParserDefaultValue()))
449#else
450XMLPUBVAR int xmlPedanticParserDefaultValue;
451#endif
452XMLPUBFUN int XMLCALL xmlThrDefPedanticParserDefaultValue(int v);
453
454XMLPUBFUN int * XMLCALL __xmlSaveNoEmptyTags(void);
455#ifdef LIBXML_THREAD_ENABLED
456#define xmlSaveNoEmptyTags \
457(*(__xmlSaveNoEmptyTags()))
458#else
459XMLPUBVAR int xmlSaveNoEmptyTags;
460#endif
461XMLPUBFUN int XMLCALL xmlThrDefSaveNoEmptyTags(int v);
462
463XMLPUBFUN int * XMLCALL __xmlSubstituteEntitiesDefaultValue(void);
464#ifdef LIBXML_THREAD_ENABLED
465#define xmlSubstituteEntitiesDefaultValue \
466(*(__xmlSubstituteEntitiesDefaultValue()))
467#else
468XMLPUBVAR int xmlSubstituteEntitiesDefaultValue;
469#endif
470XMLPUBFUN int XMLCALL xmlThrDefSubstituteEntitiesDefaultValue(int v);
471
472XMLPUBFUN xmlRegisterNodeFunc * XMLCALL __xmlRegisterNodeDefaultValue(void);
473#ifdef LIBXML_THREAD_ENABLED
474#define xmlRegisterNodeDefaultValue \
475(*(__xmlRegisterNodeDefaultValue()))
476#else
477XMLPUBVAR xmlRegisterNodeFunc xmlRegisterNodeDefaultValue;
478#endif
479
480XMLPUBFUN xmlDeregisterNodeFunc * XMLCALL __xmlDeregisterNodeDefaultValue(void);
481#ifdef LIBXML_THREAD_ENABLED
482#define xmlDeregisterNodeDefaultValue \
483(*(__xmlDeregisterNodeDefaultValue()))
484#else
485XMLPUBVAR xmlDeregisterNodeFunc xmlDeregisterNodeDefaultValue;
486#endif
487
488XMLPUBFUN xmlParserInputBufferCreateFilenameFunc * XMLCALL \
489				__xmlParserInputBufferCreateFilenameValue(void);
490#ifdef LIBXML_THREAD_ENABLED
491#define xmlParserInputBufferCreateFilenameValue \
492(*(__xmlParserInputBufferCreateFilenameValue()))
493#else
494XMLPUBVAR xmlParserInputBufferCreateFilenameFunc xmlParserInputBufferCreateFilenameValue;
495#endif
496
497XMLPUBFUN xmlOutputBufferCreateFilenameFunc * XMLCALL __xmlOutputBufferCreateFilenameValue(void);
498#ifdef LIBXML_THREAD_ENABLED
499#define xmlOutputBufferCreateFilenameValue \
500(*(__xmlOutputBufferCreateFilenameValue()))
501#else
502XMLPUBVAR xmlOutputBufferCreateFilenameFunc xmlOutputBufferCreateFilenameValue;
503#endif
504
505#ifdef __cplusplus
506}
507#endif
508
509#endif /* __XML_GLOBALS_H */
510