1 * Summary: the XMLReader implementation 2 * Description: API of the XML streaming API based on C# interfaces. 3 * 4 * Copy: See Copyright for the status of this software. 5 * 6 * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A. 7 8 /if not defined(XML_XMLREADER_H__) 9 /define XML_XMLREADER_H__ 10 11 /include "libxmlrpg/xmlversion" 12 /include "libxmlrpg/xmlTypesC" 13 /include "libxmlrpg/tree" 14 /include "libxmlrpg/xmlIO" 15 16 /if defined(LIBXML_SCHEMAS_ENABLED) 17 /include "libxmlrpg/relaxng" 18 /include "libxmlrpg/xmlschemas" 19 /endif 20 21 * xmlParserSeverities: 22 * 23 * How severe an error callback is when the per-reader error callback API 24 * is used. 25 26 d xmlParserSeverities... 27 d s based(######typedef######) 28 d like(xmlCenum) 29 d XML_PARSER_SEVERITY_VALIDITY_WARNING... 30 d c 1 31 d XML_PARSER_SEVERITY_VALIDITY_ERROR... 32 d c 2 33 d XML_PARSER_SEVERITY_WARNING... 34 d c 3 35 d XML_PARSER_SEVERITY_ERROR... 36 d c 4 37 38 /if defined(LIBXML_READER_ENABLED) 39 40 * xmlTextReaderMode: 41 * 42 * Internal state values for the reader. 43 44 d xmlTextReaderMode... 45 d s based(######typedef######) 46 d like(xmlCenum) 47 d XML_TEXTREADER_MODE_INITIAL... 48 d c 0 49 d XML_TEXTREADER_MODE_INTERACTIVE... 50 d c 1 51 d XML_TEXTREADER_MODE_ERROR... 52 d c 2 53 d XML_TEXTREADER_MODE_EOF... 54 d c 3 55 d XML_TEXTREADER_MODE_CLOSED... 56 d c 4 57 d XML_TEXTREADER_MODE_READING... 58 d c 5 59 60 * xmlParserProperties: 61 * 62 * Some common options to use with xmlTextReaderSetParserProp, but it 63 * is better to use xmlParserOption and the xmlReaderNewxxx and 64 * xmlReaderForxxx APIs now. 65 66 d xmlParserProperties... 67 d s based(######typedef######) 68 d like(xmlCenum) 69 d XML_PARSER_LOADDTD... 70 d c 1 71 d XML_PARSER_DEFAULTATTRS... 72 d c 2 73 d XML_PARSER_VALIDATE... 74 d c 3 75 d XML_PARSER_SUBST_ENTITIES... 76 d c 4 77 78 * xmlReaderTypes: 79 * 80 * Predefined constants for the different types of nodes. 81 82 d xmlReaderTypes s based(######typedef######) 83 d like(xmlCenum) 84 d XML_READER_TYPE_NONE... 85 d c 0 86 d XML_READER_TYPE_ELEMENT... 87 d c 1 88 d XML_READER_TYPE_ATTRIBUTE... 89 d c 2 90 d XML_READER_TYPE_TEXT... 91 d c 3 92 d XML_READER_TYPE_CDATA... 93 d c 4 94 d XML_READER_TYPE_ENTITY_REFERENCE... 95 d c 5 96 d XML_READER_TYPE_ENTITY... 97 d c 6 98 d XML_READER_TYPE_PROCESSING_INSTRUCTION... 99 d c 7 100 d XML_READER_TYPE_COMMENT... 101 d c 8 102 d XML_READER_TYPE_DOCUMENT... 103 d c 9 104 d XML_READER_TYPE_DOCUMENT_TYPE... 105 d c 10 106 d XML_READER_TYPE_DOCUMENT_FRAGMENT... 107 d c 11 108 d XML_READER_TYPE_NOTATION... 109 d c 12 110 d XML_READER_TYPE_WHITESPACE... 111 d c 13 112 d XML_READER_TYPE_SIGNIFICANT_WHITESPACE... 113 d c 14 114 d XML_READER_TYPE_END_ELEMENT... 115 d c 15 116 d XML_READER_TYPE_END_ENTITY... 117 d c 16 118 d XML_READER_TYPE_XML_DECLARATION... 119 d c 17 120 121 * xmlTextReaderPtr: 122 * 123 * Pointer to an xmlReader context. 124 125 d xmlTextReaderPtr... 126 d s * based(######typedef######) 127 128 * Constructors & Destructor 129 130 d xmlNewTextReader... 131 d pr extproc('xmlNewTextReader') 132 d like(xmlTextReaderPtr) 133 d input value like(xmlParserInputBufferPtr) 134 d URI * value options(*string) const char * 135 136 d xmlNewTextReaderFilename... 137 d pr extproc('xmlNewTextReaderFilename') 138 d like(xmlTextReaderPtr) 139 d URI * value options(*string) const char * 140 141 d xmlFreeTextReader... 142 d pr extproc('xmlFreeTextReader') 143 d reader value like(xmlTextReaderPtr) 144 145 d xmlTextReaderSetup... 146 d pr extproc('xmlTextReaderSetup') 147 d like(xmlCint) 148 d reader value like(xmlTextReaderPtr) 149 d input value like(xmlParserInputBufferPtr) 150 d URL * value options(*string) const char * 151 d encoding * value options(*string) const char * 152 d options value like(xmlCint) 153 154 * Iterators 155 156 d xmlTextReaderRead... 157 d pr extproc('xmlTextReaderRead') 158 d like(xmlCint) 159 d reader value like(xmlTextReaderPtr) 160 161 /if defined(LIBXML_WRITER_ENABLED) 162 d xmlTextReaderReadInnerXml... 163 d pr * extproc('xmlTextReaderReadInnerXml') xmlChar * 164 d reader value like(xmlTextReaderPtr) 165 166 d xmlTextReaderReadOuterXml... 167 d pr * extproc('xmlTextReaderReadOuterXml') xmlChar * 168 d reader value like(xmlTextReaderPtr) 169 /endif 170 171 d xmlTextReaderReadString... 172 d pr * extproc('xmlTextReaderReadString') xmlChar * 173 d reader value like(xmlTextReaderPtr) 174 175 d xmlTextReaderReadAttributeValue... 176 d pr extproc( 177 d 'xmlTextReaderReadAttributeValue') 178 d like(xmlCint) 179 d reader value like(xmlTextReaderPtr) 180 181 * Attributes of the node 182 183 d xmlTextReaderAttributeCount... 184 d pr extproc( 185 d 'xmlTextReaderAttributeCount') 186 d like(xmlCint) 187 d reader value like(xmlTextReaderPtr) 188 189 d xmlTextReaderDepth... 190 d pr extproc('xmlTextReaderDepth') 191 d like(xmlCint) 192 d reader value like(xmlTextReaderPtr) 193 194 d xmlTextReaderHasAttributes... 195 d pr extproc('xmlTextReaderHasAttributes') 196 d like(xmlCint) 197 d reader value like(xmlTextReaderPtr) 198 199 d xmlTextReaderHasValue... 200 d pr extproc('xmlTextReaderHasValue') 201 d like(xmlCint) 202 d reader value like(xmlTextReaderPtr) 203 204 d xmlTextReaderIsDefault... 205 d pr extproc('xmlTextReaderIsDefault') 206 d like(xmlCint) 207 d reader value like(xmlTextReaderPtr) 208 209 d xmlTextReaderIsEmptyElement... 210 d pr extproc( 211 d 'xmlTextReaderIsEmptyElement') 212 d like(xmlCint) 213 d reader value like(xmlTextReaderPtr) 214 215 d xmlTextReaderNodeType... 216 d pr extproc('xmlTextReaderNodeType') 217 d like(xmlCint) 218 d reader value like(xmlTextReaderPtr) 219 220 d xmlTextReaderQuoteChar... 221 d pr extproc('xmlTextReaderQuoteChar') 222 d like(xmlCint) 223 d reader value like(xmlTextReaderPtr) 224 225 d xmlTextReaderReadState... 226 d pr extproc('xmlTextReaderReadState') 227 d like(xmlCint) 228 d reader value like(xmlTextReaderPtr) 229 230 d xmlTextReaderIsNamespaceDecl... 231 d pr extproc( 232 d 'xmlTextReaderIsNamespaceDecl') 233 d like(xmlCint) 234 d reader value like(xmlTextReaderPtr) 235 236 d xmlTextReaderConstBaseUri... 237 d pr * extproc('xmlTextReaderConstBaseUri') const xmlChar * 238 d reader value like(xmlTextReaderPtr) 239 240 d xmlTextReaderConstLocalName... 241 d pr * extproc( const xmlChar * 242 d 'xmlTextReaderConstLocalName') 243 d reader value like(xmlTextReaderPtr) 244 245 d xmlTextReaderConstName... 246 d pr * extproc('xmlTextReaderConstName') const xmlChar * 247 d reader value like(xmlTextReaderPtr) 248 249 d xmlTextReaderConstNamespaceUri... 250 d pr * extproc( const xmlChar * 251 d 'xmlTextReaderConstNamespaceUri') 252 d reader value like(xmlTextReaderPtr) 253 254 d xmlTextReaderConstPrefix... 255 d pr * extproc('xmlTextReaderConstPrefix') const xmlChar * 256 d reader value like(xmlTextReaderPtr) 257 258 d xmlTextReaderConstXmlLang... 259 d pr * extproc('xmlTextReaderConstXmlLang') const xmlChar * 260 d reader value like(xmlTextReaderPtr) 261 262 d xmlTextReaderConstString... 263 d pr * extproc('xmlTextReaderConstString') const xmlChar * 264 d reader value like(xmlTextReaderPtr) 265 d str * value options(*string) const xmlChar * 266 267 d xmlTextReaderConstValue... 268 d pr * extproc('xmlTextReaderConstValue') const xmlChar * 269 d reader value like(xmlTextReaderPtr) 270 271 * use the Const version of the routine for 272 * better performance and simpler code 273 274 d xmlTextReaderBaseUri... 275 d pr * extproc('xmlTextReaderBaseUri') xmlChar * 276 d reader value like(xmlTextReaderPtr) 277 278 d xmlTextReaderLocalName... 279 d pr * extproc('xmlTextReaderLocalName') xmlChar * 280 d reader value like(xmlTextReaderPtr) 281 282 d xmlTextReaderName... 283 d pr * extproc('xmlTextReaderName') xmlChar * 284 d reader value like(xmlTextReaderPtr) 285 286 d xmlTextReaderNamespaceUri... 287 d pr * extproc('xmlTextReaderNamespaceUri') xmlChar * 288 d reader value like(xmlTextReaderPtr) 289 290 d xmlTextReaderPrefix... 291 d pr * extproc('xmlTextReaderPrefix') xmlChar * 292 d reader value like(xmlTextReaderPtr) 293 294 d xmlTextReaderXmlLang... 295 d pr * extproc('xmlTextReaderXmlLang') xmlChar * 296 d reader value like(xmlTextReaderPtr) 297 298 d xmlTextReaderValue... 299 d pr * extproc('xmlTextReaderValue') xmlChar * 300 d reader value like(xmlTextReaderPtr) 301 302 * Methods of the XmlTextReader 303 304 d xmlTextReaderClose... 305 d pr extproc('xmlTextReaderClose') 306 d like(xmlCint) 307 d reader value like(xmlTextReaderPtr) 308 309 d xmlTextReaderGetAttributeNo... 310 d pr * extproc( xmlChar * 311 d 'xmlTextReaderGetAttributeNo') 312 d reader value like(xmlTextReaderPtr) 313 d no value like(xmlCint) 314 315 d xmlTextReaderGetAttribute... 316 d pr * extproc('xmlTextReaderGetAttribute') xmlChar * 317 d reader value like(xmlTextReaderPtr) 318 d name * value options(*string) const xmlChar * 319 320 d xmlTextReaderGetAttributeNs... 321 d pr * extproc( xmlChar * 322 d 'xmlTextReaderGetAttributeNs') 323 d reader value like(xmlTextReaderPtr) 324 d localName * value options(*string) const xmlChar * 325 d namespaceURI * value options(*string) const xmlChar * 326 327 d xmlTextReaderGetRemainder... 328 d pr extproc('xmlTextReaderGetRemainder') 329 d like(xmlParserInputBufferPtr) 330 d reader value like(xmlTextReaderPtr) 331 332 d xmlTextReaderLookupNamespace... 333 d pr * extproc( xmlChar * 334 d 'xmlTextReaderLookupNamespace') 335 d reader value like(xmlTextReaderPtr) 336 d prefix * value options(*string) const xmlChar * 337 338 d xmlTextReaderMoveToAttributeNo... 339 d pr extproc( 340 d 'xmlTextReaderMoveToAttributeNo') 341 d like(xmlCint) 342 d reader value like(xmlTextReaderPtr) 343 d no value like(xmlCint) 344 345 d xmlTextReaderMoveToAttribute... 346 d pr extproc( 347 d 'xmlTextReaderMoveToAttribute') 348 d like(xmlCint) 349 d reader value like(xmlTextReaderPtr) 350 d name * value options(*string) const xmlChar * 351 352 d xmlTextReaderMoveToAttributeNs... 353 d pr extproc( 354 d 'xmlTextReaderMoveToAttributeNs') 355 d like(xmlCint) 356 d reader value like(xmlTextReaderPtr) 357 d localName * value options(*string) const xmlChar * 358 d namespaceURI * value options(*string) const xmlChar * 359 360 d xmlTextReaderMoveToFirstAttribute... 361 d pr extproc( 362 d 'xmlTextReaderMoveToFirstAttribute') 363 d like(xmlCint) 364 d reader value like(xmlTextReaderPtr) 365 366 d xmlTextReaderMoveToNextAttribute... 367 d pr extproc( 368 d 'xmlTextReaderMoveToNextAttribute') 369 d like(xmlCint) 370 d reader value like(xmlTextReaderPtr) 371 372 d xmlTextReaderMoveToElement... 373 d pr extproc('xmlTextReaderMoveToElement') 374 d like(xmlCint) 375 d reader value like(xmlTextReaderPtr) 376 377 d xmlTextReaderNormalization... 378 d pr extproc('xmlTextReaderNormalization') 379 d like(xmlCint) 380 d reader value like(xmlTextReaderPtr) 381 382 d xmlTextReaderConstEncoding... 383 d pr * extproc('xmlTextReaderConstEncoding')const xmlChar * 384 d reader value like(xmlTextReaderPtr) 385 386 * Extensions 387 388 d xmlTextReaderSetParserProp... 389 d pr extproc('xmlTextReaderSetParserProp') 390 d like(xmlCint) 391 d reader value like(xmlTextReaderPtr) 392 d prop value like(xmlCint) 393 d value value like(xmlCint) 394 395 d xmlTextReaderGetParserProp... 396 d pr extproc('xmlTextReaderGetParserProp') 397 d like(xmlCint) 398 d reader value like(xmlTextReaderPtr) 399 d prop value like(xmlCint) 400 401 d xmlTextReaderCurrentNode... 402 d pr extproc('xmlTextReaderCurrentNode') 403 d like(xmlNodePtr) 404 d reader value like(xmlTextReaderPtr) 405 406 d xmlTextReaderGetParserLineNumber... 407 d pr extproc( 408 d 'xmlTextReaderGetParserLineNumber') 409 d like(xmlCint) 410 d reader value like(xmlTextReaderPtr) 411 412 d xmlTextReaderGetParserColumnNumber... 413 d pr extproc( 414 d 'xmlTextReaderGetParserColumnNumber') 415 d like(xmlCint) 416 d reader value like(xmlTextReaderPtr) 417 418 d xmlTextReaderPreserve... 419 d pr extproc('xmlTextReaderPreserve') 420 d like(xmlNodePtr) 421 d reader value like(xmlTextReaderPtr) 422 423 /if defined(LIBXML_PATTERN_ENABLED) 424 d xmlTextReaderPreservePattern... 425 d pr extproc( 426 d 'xmlTextReaderPreservePattern') 427 d like(xmlCint) 428 d reader value like(xmlTextReaderPtr) 429 d pattern * value options(*string) const xmlChar * 430 d namespaces * const xmlChar *(*) 431 /endif LIBXML_PATTERN_ENBLD 432 433 d xmlTextReaderCurrentDoc... 434 d pr extproc('xmlTextReaderCurrentDoc') 435 d like(xmlDocPtr) 436 d reader value like(xmlTextReaderPtr) 437 438 d xmlTextReaderExpand... 439 d pr extproc('xmlTextReaderExpand') 440 d like(xmlNodePtr) 441 d reader value like(xmlTextReaderPtr) 442 443 d xmlTextReaderNext... 444 d pr extproc('xmlTextReaderNext') 445 d like(xmlCint) 446 d reader value like(xmlTextReaderPtr) 447 448 d xmlTextReaderNextSibling... 449 d pr extproc('xmlTextReaderNextSibling') 450 d like(xmlCint) 451 d reader value like(xmlTextReaderPtr) 452 453 d xmlTextReaderIsValid... 454 d pr extproc('xmlTextReaderIsValid') 455 d like(xmlCint) 456 d reader value like(xmlTextReaderPtr) 457 458 /if defined(LIBXML_SCHEMAS_ENABLED) 459 d xmlTextReaderRelaxNGValidate... 460 d pr extproc( 461 d 'xmlTextReaderRelaxNGValidate') 462 d like(xmlCint) 463 d reader value like(xmlTextReaderPtr) 464 d rng * value options(*string) const char * 465 466 d xmlTextReaderRelaxNGValidateCtxt... 467 d pr extproc( 468 d 'xmlTextReaderRelaxNGValidateCtxt') 469 d like(xmlCint) 470 d reader value like(xmlTextReaderPtr) 471 d ctxt value like(xmlRelaxNGValidCtxtPtr) 472 d options value like(xmlCint) 473 474 d xmlTextReaderRelaxNGSetSchema... 475 d pr extproc( 476 d 'xmlTextReaderRelaxNGSetSchema') 477 d like(xmlCint) 478 d reader value like(xmlTextReaderPtr) 479 d schema value like(xmlRelaxNGPtr) 480 481 d xmlTextReaderSchemaValidate... 482 d pr extproc( 483 d 'xmlTextReaderSchemaValidate') 484 d like(xmlCint) 485 d reader value like(xmlTextReaderPtr) 486 d xsd * value options(*string) const char * 487 488 d xmlTextReaderSchemaValidateCtxt... 489 d pr extproc( 490 d 'xmlTextReaderSchemaValidateCtxt') 491 d like(xmlCint) 492 d reader value like(xmlTextReaderPtr) 493 d ctxt value like(xmlSchemaValidCtxtPtr) 494 d options value like(xmlCint) 495 496 d xmlTextReaderSetSchema... 497 d pr extproc('xmlTextReaderSetSchema') 498 d like(xmlCint) 499 d reader value like(xmlTextReaderPtr) 500 d schema value like(xmlSchemaPtr) 501 /endif 502 503 d xmlTextReaderConstXmlVersion... 504 d pr * extproc( const xmlChar * 505 d 'xmlTextReaderConstXmlVersion') 506 d reader value like(xmlTextReaderPtr) 507 508 d xmlTextReaderStandalone... 509 d pr extproc('xmlTextReaderStandalone') 510 d like(xmlCint) 511 d reader value like(xmlTextReaderPtr) 512 513 * Index lookup 514 515 d xmlTextReaderByteConsumed... 516 d pr extproc('xmlTextReaderByteConsumed') 517 d like(xmlClong) 518 d reader value like(xmlTextReaderPtr) 519 520 * New more complete APIs for simpler creation and reuse of readers 521 522 d xmlReaderWalker... 523 d pr extproc('xmlReaderWalker') 524 d like(xmlTextReaderPtr) 525 d doc value like(xmlDocPtr) 526 527 d xmlReaderForDoc... 528 d pr extproc('xmlReaderForDoc') 529 d like(xmlTextReaderPtr) 530 d cur * value options(*string) const xmlChar * 531 d URL * value options(*string) const char * 532 d encoding * value options(*string) const char * 533 d options value like(xmlCint) 534 535 d xmlReaderForFile... 536 d pr extproc('xmlReaderForFile') 537 d like(xmlTextReaderPtr) 538 d filename * value options(*string) const char * 539 d encoding * value options(*string) const char * 540 d options value like(xmlCint) 541 542 d xmlReaderForMemory... 543 d pr extproc('xmlReaderForMemory') 544 d like(xmlTextReaderPtr) 545 d buffer * value options(*string) const char * 546 d size value like(xmlCint) 547 d URL * value options(*string) const char * 548 d encoding * value options(*string) const char * 549 d options value like(xmlCint) 550 551 d xmlReaderForFd pr extproc('xmlReaderForFd') 552 d like(xmlTextReaderPtr) 553 d fd value like(xmlCint) 554 d URL * value options(*string) const char * 555 d encoding * value options(*string) const char * 556 d options value like(xmlCint) 557 558 d xmlReaderForIO pr extproc('xmlReaderForIO') 559 d like(xmlTextReaderPtr) 560 d ioread value like(xmlInputReadCallback) 561 d ioclose value like(xmlInputCloseCallback) 562 d ioctx * value void * 563 d URL * value options(*string) const char * 564 d encoding * value options(*string) const char * 565 d options value like(xmlCint) 566 567 d xmlReaderNewWalker... 568 d pr extproc('xmlReaderNewWalker') 569 d like(xmlCint) 570 d reader value like(xmlTextReaderPtr) 571 d doc value like(xmlDocPtr) 572 573 d xmlReaderNewDoc... 574 d pr extproc('xmlReaderNewDoc') 575 d like(xmlCint) 576 d reader value like(xmlTextReaderPtr) 577 d cur * value options(*string) const xmlChar * 578 d URL * value options(*string) const char * 579 d encoding * value options(*string) const char * 580 d options value like(xmlCint) 581 582 d xmlReaderNewFile... 583 d pr extproc('xmlReaderNewFile') 584 d like(xmlCint) 585 d reader value like(xmlTextReaderPtr) 586 d filename * value options(*string) const char * 587 d encoding * value options(*string) const char * 588 d options value like(xmlCint) 589 590 d xmlReaderNewMemory... 591 d pr extproc('xmlReaderNewMemory') 592 d like(xmlCint) 593 d reader value like(xmlTextReaderPtr) 594 d buffer * value options(*string) const char * 595 d size value like(xmlCint) 596 d URL * value options(*string) const char * 597 d encoding * value options(*string) const char * 598 d options value like(xmlCint) 599 600 d xmlReaderNewFd pr extproc('xmlReaderNewFd') 601 d like(xmlCint) 602 d reader value like(xmlTextReaderPtr) 603 d fd value like(xmlCint) 604 d URL * value options(*string) const char * 605 d encoding * value options(*string) const char * 606 d options value like(xmlCint) 607 608 d xmlReaderNewIO pr extproc('xmlReaderNewIO') 609 d like(xmlCint) 610 d reader value like(xmlTextReaderPtr) 611 d ioread value like(xmlInputReadCallback) 612 d ioclose value like(xmlInputCloseCallback) 613 d ioctx * value void * 614 d URL * value options(*string) const char * 615 d encoding * value options(*string) const char * 616 d options value like(xmlCint) 617 618 * Error handling extensions 619 620 d xmlTextReaderLocatorPtr... 621 d s * based(######typedef######) void * 622 623 * xmlTextReaderErrorFunc: 624 * @arg: the user argument 625 * @msg: the message 626 * @severity: the severity of the error 627 * @locator: a locator indicating where the error occurred 628 * 629 * Signature of an error callback from a reader parser 630 631 d xmlTextReaderErrorFunc... 632 d s * based(######typedef######) 633 d procptr 634 635 d xmlTextReaderLocatorLineNumber... 636 d pr extproc( 637 d 'xmlTextReaderLocatorLineNumber') 638 d like(xmlCint) 639 d locator value like(xmlTextReaderLocatorPtr) 640 641 d xmlTextReaderLocatorBaseURI... 642 d pr * extproc( xmlChar * 643 d 'xmlTextReaderLocatorBaseURI') 644 d locator value like(xmlTextReaderLocatorPtr) 645 646 d xmlTextReaderSetErrorHandler... 647 d pr extproc( 648 d 'xmlTextReaderSetErrorHandler') 649 d reader value like(xmlTextReaderPtr) 650 d f value like(xmlTextReaderErrorFunc) 651 d arg * value void * 652 653 d xmlTextReaderSetStructuredErrorHandler... 654 d pr extproc('xmlTextReaderSetStructuredE- 655 d rrorHandler') 656 d reader value like(xmlTextReaderPtr) 657 d f value like(xmlStructuredErrorFunc) 658 d arg * value void * 659 660 d xmlTextReaderGetErrorHandler... 661 d pr extproc( 662 d 'xmlTextReaderGetErrorHandler') 663 d reader value like(xmlTextReaderPtr) 664 d f like(xmlTextReaderErrorFunc) 665 d arg * void *(*) 666 667 /endif LIBXML_READER_ENABLD 668 /endif XML_XMLREADER_H__ 669