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