1 module expat; 2 3 import core.stdc.config : c_long, c_ulong; 4 5 version (XML_UNICODE_WCHAR_T) { 6 version = XML_UNICODE; 7 } 8 9 version (XML_UNICODE) { 10 version (XML_UNICODE_WCHAR_T) { 11 alias XML_Char = wchar; 12 alias XML_LChar = wchar; 13 } else { 14 alias XML_Char = ushort; 15 alias XML_LChar = char; 16 } 17 } else { 18 alias XML_Char = char; 19 alias XML_LChar = char; 20 } 21 22 version (XML_LARGE_SIZE) { 23 alias XML_Index = long; 24 alias XML_Size = ulong; 25 } else { 26 alias XML_Index = c_long; 27 alias XML_Size = c_ulong; 28 } 29 30 // 31 32 struct XML_ParserStruct {} 33 alias XML_Parser = XML_ParserStruct*; 34 35 alias XML_Bool = bool; 36 37 alias XML_Status = uint; 38 enum : XML_Status { 39 XML_STATUS_ERROR = 0, 40 XML_STATUS_OK = 1, 41 XML_STATUS_SUSPENDED = 2 42 } 43 44 alias XML_Error = uint; 45 enum : XML_Error { 46 XML_ERROR_NONE, 47 XML_ERROR_NO_MEMORY, 48 XML_ERROR_SYNTAX, 49 XML_ERROR_NO_ELEMENTS, 50 XML_ERROR_INVALID_TOKEN, 51 XML_ERROR_UNCLOSED_TOKEN, 52 XML_ERROR_PARTIAL_CHAR, 53 XML_ERROR_TAG_MISMATCH, 54 XML_ERROR_DUPLICATE_ATTRIBUTE, 55 XML_ERROR_JUNK_AFTER_DOC_ELEMENT, 56 XML_ERROR_PARAM_ENTITY_REF, 57 XML_ERROR_UNDEFINED_ENTITY, 58 XML_ERROR_RECURSIVE_ENTITY_REF, 59 XML_ERROR_ASYNC_ENTITY, 60 XML_ERROR_BAD_CHAR_REF, 61 XML_ERROR_BINARY_ENTITY_REF, 62 XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF, 63 XML_ERROR_MISPLACED_XML_PI, 64 XML_ERROR_UNKNOWN_ENCODING, 65 XML_ERROR_INCORRECT_ENCODING, 66 XML_ERROR_UNCLOSED_CDATA_SECTION, 67 XML_ERROR_EXTERNAL_ENTITY_HANDLING, 68 XML_ERROR_NOT_STANDALONE, 69 XML_ERROR_UNEXPECTED_STATE, 70 XML_ERROR_ENTITY_DECLARED_IN_PE, 71 XML_ERROR_FEATURE_REQUIRES_XML_DTD, 72 XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING, 73 /* Added in 1.95.7. */ 74 XML_ERROR_UNBOUND_PREFIX, 75 /* Added in 1.95.8. */ 76 XML_ERROR_UNDECLARING_PREFIX, 77 XML_ERROR_INCOMPLETE_PE, 78 XML_ERROR_XML_DECL, 79 XML_ERROR_TEXT_DECL, 80 XML_ERROR_PUBLICID, 81 XML_ERROR_SUSPENDED, 82 XML_ERROR_NOT_SUSPENDED, 83 XML_ERROR_ABORTED, 84 XML_ERROR_FINISHED, 85 XML_ERROR_SUSPEND_PE, 86 /* Added in 2.0. */ 87 XML_ERROR_RESERVED_PREFIX_XML, 88 XML_ERROR_RESERVED_PREFIX_XMLNS, 89 XML_ERROR_RESERVED_NAMESPACE_URI 90 } 91 92 alias XML_Content_Type = uint; 93 enum : XML_Content_Type { 94 XML_CTYPE_EMPTY = 1, 95 XML_CTYPE_ANY, 96 XML_CTYPE_MIXED, 97 XML_CTYPE_NAME, 98 XML_CTYPE_CHOICE, 99 XML_CTYPE_SEQ 100 } 101 102 alias XML_Content_Quant = uint; 103 enum : XML_Content_Quant { 104 XML_CQUANT_NONE, 105 XML_CQUANT_OPT, 106 XML_CQUANT_REP, 107 XML_CQUANT_PLUS 108 } 109 110 struct XML_Content { 111 XML_Content_Type type; 112 XML_Content_Quant quant; 113 XML_Char* name; 114 uint numchildren; 115 XML_Content* children; 116 } 117 118 alias XML_ElementDeclHandler = extern(C) nothrow void function(void* userData, 119 const(XML_Char)* name, 120 XML_Content* model); 121 122 123 extern(C) nothrow void 124 XML_SetElementDeclHandler(XML_Parser parser, 125 XML_ElementDeclHandler eldecl); 126 127 /* The Attlist declaration handler is called for *each* attribute. So 128 a single Attlist declaration with multiple attributes declared will 129 generate multiple calls to this handler. The "default" parameter 130 may be NULL in the case of the "#IMPLIED" or "#REQUIRED" 131 keyword. The "isrequired" parameter will be true and the default 132 value will be NULL in the case of "#REQUIRED". If "isrequired" is 133 true and default is non-NULL, then this is a "#FIXED" default. 134 */ 135 alias XML_AttlistDeclHandler = extern(C) nothrow void function(void* userData, 136 const(XML_Char)* elname, 137 const(XML_Char)* attname, 138 const(XML_Char)* att_type, 139 const(XML_Char)* dflt, 140 int isrequired); 141 142 extern(C) nothrow void 143 XML_SetAttlistDeclHandler(XML_Parser parser, 144 XML_AttlistDeclHandler attdecl); 145 146 alias XML_XmlDeclHandler = extern(C) nothrow void function(void *userData, 147 const(XML_Char)* version_, 148 const(XML_Char)* encoding, 149 int standalone); 150 151 extern(C) nothrow void 152 XML_SetXmlDeclHandler(XML_Parser parser, 153 XML_XmlDeclHandler xmldecl); 154 155 156 struct XML_Memory_Handling_Suite { 157 extern(C) nothrow void function(size_t size) malloc_fcn; 158 extern(C) nothrow void function(void* ptr, size_t size) realloc_fcn; 159 extern(C) nothrow void function(void* ptr) free_fcn; 160 } 161 162 extern(C) nothrow XML_Parser 163 XML_ParserCreate(const(XML_Char)* encoding); 164 165 extern(C) nothrow XML_Parser 166 XML_ParserCreateNS(const(XML_Char)* encoding, XML_Char namespaceSeparator); 167 168 169 extern(C) nothrow XML_Parser 170 XML_ParserCreate_MM(const(XML_Char)* encoding, 171 const(XML_Memory_Handling_Suite)* memsuite, 172 const(XML_Char)* namespaceSeparator); 173 174 175 extern(C) nothrow XML_Bool 176 XML_ParserReset(XML_Parser parser, const(XML_Char)* encoding); 177 178 alias XML_StartElementHandler = extern(C) nothrow void function(void* userData, 179 const(XML_Char)* name, 180 const(XML_Char*)* atts); 181 182 alias XML_EndElementHandler = extern(C) nothrow void function(void* userData, 183 const(XML_Char)* name); 184 185 alias XML_CharacterDataHandler = extern(C) nothrow void function(void* userData, 186 const(XML_Char)* s, 187 int len); 188 189 alias XML_ProcessingInstructionHandler = extern(C) nothrow void function( 190 void* userData, 191 const(XML_Char)* target, 192 const(XML_Char)* data); 193 194 alias XML_CommentHandler = extern(C) nothrow void function(void* userData, 195 const(XML_Char)* data); 196 197 alias XML_StartCdataSectionHandler = extern(C) nothrow void function(void* userData); 198 alias XML_EndCdataSectionHandler = extern(C) nothrow void function(void* userData); 199 200 alias XML_DefaultHandler = extern(C) nothrow void function(void* userData, 201 const(XML_Char)* s, 202 int len); 203 204 alias XML_StartDoctypeDeclHandler = extern(C) nothrow void function( 205 void* userData, 206 const(XML_Char)* doctypeName, 207 const(XML_Char)* sysid, 208 const(XML_Char)* pubid, 209 int has_internal_subset); 210 211 alias XML_EndDoctypeDeclHandler = extern(C) nothrow void function(void* userData); 212 213 alias XML_EntityDeclHandler = extern(C) nothrow void function( 214 void* userData, 215 const(XML_Char)* entityName, 216 int is_parameter_entity, 217 const(XML_Char)* value, 218 int value_length, 219 const(XML_Char)* base, 220 const(XML_Char)* systemId, 221 const(XML_Char)* publicId, 222 const(XML_Char)* notationName); 223 224 extern(C) nothrow void 225 XML_SetEntityDeclHandler(XML_Parser parser, 226 XML_EntityDeclHandler handler); 227 228 alias XML_UnparsedEntityDeclHandler = extern(C) nothrow void function( 229 void* userData, 230 const(XML_Char)* entityName, 231 const(XML_Char)* base, 232 const(XML_Char)* systemId, 233 const(XML_Char)* publicId, 234 const(XML_Char)* notationName); 235 236 alias XML_NotationDeclHandler = extern(C) nothrow void function( 237 void* userData, 238 const(XML_Char)* notationName, 239 const(XML_Char)* base, 240 const(XML_Char)* systemId, 241 const(XML_Char)* publicId); 242 243 alias XML_StartNamespaceDeclHandler = extern(C) nothrow void function( 244 void* userData, 245 const(XML_Char)* prefix, 246 const(XML_Char)* uri); 247 248 alias XML_EndNamespaceDeclHandler = extern(C) nothrow void function( 249 void* userData, 250 const(XML_Char)* prefix); 251 252 alias XML_NotStandaloneHandler = extern(C) nothrow int function(void* userData); 253 254 alias XML_ExternalEntityRefHandler = extern(C) nothrow int function( 255 XML_Parser parser, 256 const(XML_Char)* context, 257 const(XML_Char)* base, 258 const(XML_Char)* systemId, 259 const(XML_Char)* publicId); 260 261 alias XML_SkippedEntityHandler = extern(C) nothrow void function( 262 void* userData, 263 const(XML_Char)* entityName, 264 int is_parameter_entity); 265 266 struct XML_Encoding { 267 int[256] map; 268 void* data; 269 extern(C) nothrow int function(void* data, const(char)* s) convert; 270 extern(C) nothrow void function(void* data) release; 271 } 272 273 alias XML_UnknownEncodingHandler = extern(C) nothrow int function( 274 void* encodingHandlerData, 275 const(XML_Char)* name, 276 XML_Encoding *info); 277 278 extern(C) nothrow void 279 XML_SetElementHandler(XML_Parser parser, 280 XML_StartElementHandler start, 281 XML_EndElementHandler end); 282 283 extern(C) nothrow void 284 XML_SetStartElementHandler(XML_Parser parser, 285 XML_StartElementHandler handler); 286 287 extern(C) nothrow void 288 XML_SetEndElementHandler(XML_Parser parser, 289 XML_EndElementHandler handler); 290 291 extern(C) nothrow void 292 XML_SetCharacterDataHandler(XML_Parser parser, 293 XML_CharacterDataHandler handler); 294 295 extern(C) nothrow void 296 XML_SetProcessingInstructionHandler(XML_Parser parser, 297 XML_ProcessingInstructionHandler handler); 298 extern(C) nothrow void 299 XML_SetCommentHandler(XML_Parser parser, 300 XML_CommentHandler handler); 301 302 extern(C) nothrow void 303 XML_SetCdataSectionHandler(XML_Parser parser, 304 XML_StartCdataSectionHandler start, 305 XML_EndCdataSectionHandler end); 306 307 extern(C) nothrow void 308 XML_SetStartCdataSectionHandler(XML_Parser parser, 309 XML_StartCdataSectionHandler start); 310 311 extern(C) nothrow void 312 XML_SetEndCdataSectionHandler(XML_Parser parser, 313 XML_EndCdataSectionHandler end); 314 315 extern(C) nothrow void 316 XML_SetDefaultHandler(XML_Parser parser, 317 XML_DefaultHandler handler); 318 319 extern(C) nothrow void 320 XML_SetDefaultHandlerExpand(XML_Parser parser, 321 XML_DefaultHandler handler); 322 323 extern(C) nothrow void 324 XML_SetDoctypeDeclHandler(XML_Parser parser, 325 XML_StartDoctypeDeclHandler start, 326 XML_EndDoctypeDeclHandler end); 327 328 extern(C) nothrow void 329 XML_SetStartDoctypeDeclHandler(XML_Parser parser, 330 XML_StartDoctypeDeclHandler start); 331 332 extern(C) nothrow void 333 XML_SetEndDoctypeDeclHandler(XML_Parser parser, 334 XML_EndDoctypeDeclHandler end); 335 336 extern(C) nothrow void 337 XML_SetUnparsedEntityDeclHandler(XML_Parser parser, 338 XML_UnparsedEntityDeclHandler handler); 339 340 extern(C) nothrow void 341 XML_SetNotationDeclHandler(XML_Parser parser, 342 XML_NotationDeclHandler handler); 343 344 extern(C) nothrow void 345 XML_SetNamespaceDeclHandler(XML_Parser parser, 346 XML_StartNamespaceDeclHandler start, 347 XML_EndNamespaceDeclHandler end); 348 349 extern(C) nothrow void 350 XML_SetStartNamespaceDeclHandler(XML_Parser parser, 351 XML_StartNamespaceDeclHandler start); 352 353 extern(C) nothrow void 354 XML_SetEndNamespaceDeclHandler(XML_Parser parser, 355 XML_EndNamespaceDeclHandler end); 356 357 extern(C) nothrow void 358 XML_SetNotStandaloneHandler(XML_Parser parser, 359 XML_NotStandaloneHandler handler); 360 361 extern(C) nothrow void 362 XML_SetExternalEntityRefHandler(XML_Parser parser, 363 XML_ExternalEntityRefHandler handler); 364 365 extern(C) nothrow void 366 XML_SetExternalEntityRefHandlerArg(XML_Parser parser, 367 void* arg); 368 369 extern(C) nothrow void 370 XML_SetSkippedEntityHandler(XML_Parser parser, 371 XML_SkippedEntityHandler handler); 372 373 extern(C) nothrow void 374 XML_SetUnknownEncodingHandler(XML_Parser parser, 375 XML_UnknownEncodingHandler handler, 376 void* encodingHandlerData); 377 378 extern(C) nothrow void 379 XML_DefaultCurrent(XML_Parser parser); 380 381 extern(C) nothrow void 382 XML_SetReturnNSTriplet(XML_Parser parser, int do_nst); 383 384 extern(C) nothrow void 385 XML_SetUserData(XML_Parser parser, void* userData); 386 387 auto XML_GetUserData(XML_Parser parser) { return cast(void*) parser; } 388 389 extern(C) nothrow XML_Status 390 XML_SetEncoding(XML_Parser parser, const(XML_Char)* encoding); 391 392 extern(C) nothrow void 393 XML_UseParserAsHandlerArg(XML_Parser parser); 394 395 extern(C) nothrow XML_Error 396 XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD); 397 398 extern(C) nothrow XML_Status 399 XML_SetBase(XML_Parser parser, const(XML_Char)* base); 400 401 extern(C) nothrow const(XML_Char)* 402 XML_GetBase(XML_Parser parser); 403 404 extern(C) nothrow int 405 XML_GetSpecifiedAttributeCount(XML_Parser parser); 406 407 extern(C) nothrow int 408 XML_GetIdAttributeIndex(XML_Parser parser); 409 410 struct XML_AttrInfo { 411 XML_Index nameStart; /* Offset to beginning of the attribute name. */ 412 XML_Index nameEnd; /* Offset after the attribute name's last byte. */ 413 XML_Index valueStart; /* Offset to beginning of the attribute value. */ 414 XML_Index valueEnd; /* Offset after the attribute value's last byte. */ 415 } 416 417 extern(C) nothrow const(XML_AttrInfo)* 418 XML_GetAttributeInfo(XML_Parser parser); 419 420 extern(C) nothrow XML_Status 421 XML_Parse(XML_Parser parser, const(char)* s, int len, int isFinal); 422 423 extern(C) nothrow void* 424 XML_GetBuffer(XML_Parser parser, int len); 425 426 extern(C) nothrow XML_Status 427 XML_ParseBuffer(XML_Parser parser, int len, int isFinal); 428 429 extern(C) nothrow XML_Status 430 XML_StopParser(XML_Parser parser, XML_Bool resumable); 431 432 extern(C) nothrow XML_Status 433 XML_ResumeParser(XML_Parser parser); 434 435 alias XML_Parsing = uint; 436 enum : XML_Parsing { 437 XML_INITIALIZED, 438 XML_PARSING, 439 XML_FINISHED, 440 XML_SUSPENDED 441 } 442 443 struct XML_ParsingStatus { 444 XML_Parsing parsing; 445 XML_Bool finalBuffer; 446 } 447 448 extern(C) nothrow void 449 XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status); 450 451 extern(C) nothrow XML_Parser 452 XML_ExternalEntityParserCreate(XML_Parser parser, 453 const(XML_Char)* context, 454 const(XML_Char)* encoding); 455 456 alias XML_ParamEntityParsing = uint; 457 enum : XML_ParamEntityParsing { 458 XML_PARAM_ENTITY_PARSING_NEVER, 459 XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE, 460 XML_PARAM_ENTITY_PARSING_ALWAYS 461 } 462 463 extern(C) nothrow int 464 XML_SetParamEntityParsing(XML_Parser parser, 465 XML_ParamEntityParsing parsing); 466 467 extern(C) nothrow int 468 XML_SetHashSalt(XML_Parser parser, 469 c_ulong hash_salt); 470 471 extern(C) nothrow XML_Error 472 XML_GetErrorCode(XML_Parser parser); 473 474 extern(C) nothrow XML_Size XML_GetCurrentLineNumber(XML_Parser parser); 475 extern(C) nothrow XML_Size XML_GetCurrentColumnNumber(XML_Parser parser); 476 extern(C) nothrow XML_Index XML_GetCurrentByteIndex(XML_Parser parser); 477 478 extern(C) nothrow int 479 XML_GetCurrentByteCount(XML_Parser parser); 480 481 extern(C) nothrow const(char)* 482 XML_GetInputContext(XML_Parser parser, 483 int *offset, 484 int *size); 485 486 extern(C) nothrow void 487 XML_FreeContentModel(XML_Parser parser, XML_Content* model); 488 489 extern(C) nothrow void* 490 XML_MemMalloc(XML_Parser parser, size_t size); 491 492 extern(C) nothrow void* 493 XML_MemRealloc(XML_Parser parser, void* ptr, size_t size); 494 495 extern(C) nothrow void 496 XML_MemFree(XML_Parser parser, void* ptr); 497 498 extern(C) nothrow void 499 XML_ParserFree(XML_Parser parser); 500 501 extern(C) nothrow const(XML_LChar)* 502 XML_ErrorString(XML_Error code); 503 504 extern(C) nothrow const(XML_LChar)* 505 XML_ExpatVersion(); 506 507 struct XML_Expat_Version { 508 int major; 509 int minor; 510 int micro; 511 } 512 513 extern(C) nothrow XML_Expat_Version 514 XML_ExpatVersionInfo(); 515 516 alias XML_FeatureEnum = uint; 517 enum : XML_FeatureEnum { 518 XML_FEATURE_END = 0, 519 XML_FEATURE_UNICODE, 520 XML_FEATURE_UNICODE_WCHAR_T, 521 XML_FEATURE_DTD, 522 XML_FEATURE_CONTEXT_BYTES, 523 XML_FEATURE_MIN_SIZE, 524 XML_FEATURE_SIZEOF_XML_CHAR, 525 XML_FEATURE_SIZEOF_XML_LCHAR, 526 XML_FEATURE_NS, 527 XML_FEATURE_LARGE_SIZE, 528 XML_FEATURE_ATTR_INFO 529 } 530 531 struct XML_Feature { 532 XML_FeatureEnum feature; 533 const(XML_LChar)* name; 534 c_long value; 535 } 536 537 extern(C) nothrow const(XML_Feature)* 538 XML_GetFeatureList();