15bb6a25fSPoul-Henning Kamp /* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd 25bb6a25fSPoul-Henning Kamp See the file COPYING for copying permission. 35bb6a25fSPoul-Henning Kamp */ 45bb6a25fSPoul-Henning Kamp 55bb6a25fSPoul-Henning Kamp #ifndef XmlTok_INCLUDED 65bb6a25fSPoul-Henning Kamp #define XmlTok_INCLUDED 1 75bb6a25fSPoul-Henning Kamp 85bb6a25fSPoul-Henning Kamp #ifdef __cplusplus 95bb6a25fSPoul-Henning Kamp extern "C" { 105bb6a25fSPoul-Henning Kamp #endif 115bb6a25fSPoul-Henning Kamp 125bb6a25fSPoul-Henning Kamp /* The following token may be returned by XmlContentTok */ 135bb6a25fSPoul-Henning Kamp #define XML_TOK_TRAILING_RSQB -5 /* ] or ]] at the end of the scan; might be 145bb6a25fSPoul-Henning Kamp start of illegal ]]> sequence */ 155bb6a25fSPoul-Henning Kamp /* The following tokens may be returned by both XmlPrologTok and 165bb6a25fSPoul-Henning Kamp XmlContentTok. 175bb6a25fSPoul-Henning Kamp */ 185bb6a25fSPoul-Henning Kamp #define XML_TOK_NONE -4 /* The string to be scanned is empty */ 195bb6a25fSPoul-Henning Kamp #define XML_TOK_TRAILING_CR -3 /* A CR at the end of the scan; 205bb6a25fSPoul-Henning Kamp might be part of CRLF sequence */ 215bb6a25fSPoul-Henning Kamp #define XML_TOK_PARTIAL_CHAR -2 /* only part of a multibyte sequence */ 225bb6a25fSPoul-Henning Kamp #define XML_TOK_PARTIAL -1 /* only part of a token */ 235bb6a25fSPoul-Henning Kamp #define XML_TOK_INVALID 0 245bb6a25fSPoul-Henning Kamp 255bb6a25fSPoul-Henning Kamp /* The following tokens are returned by XmlContentTok; some are also 265bb6a25fSPoul-Henning Kamp returned by XmlAttributeValueTok, XmlEntityTok, XmlCdataSectionTok. 275bb6a25fSPoul-Henning Kamp */ 285bb6a25fSPoul-Henning Kamp #define XML_TOK_START_TAG_WITH_ATTS 1 295bb6a25fSPoul-Henning Kamp #define XML_TOK_START_TAG_NO_ATTS 2 305bb6a25fSPoul-Henning Kamp #define XML_TOK_EMPTY_ELEMENT_WITH_ATTS 3 /* empty element tag <e/> */ 315bb6a25fSPoul-Henning Kamp #define XML_TOK_EMPTY_ELEMENT_NO_ATTS 4 325bb6a25fSPoul-Henning Kamp #define XML_TOK_END_TAG 5 335bb6a25fSPoul-Henning Kamp #define XML_TOK_DATA_CHARS 6 345bb6a25fSPoul-Henning Kamp #define XML_TOK_DATA_NEWLINE 7 355bb6a25fSPoul-Henning Kamp #define XML_TOK_CDATA_SECT_OPEN 8 365bb6a25fSPoul-Henning Kamp #define XML_TOK_ENTITY_REF 9 375bb6a25fSPoul-Henning Kamp #define XML_TOK_CHAR_REF 10 /* numeric character reference */ 385bb6a25fSPoul-Henning Kamp 395bb6a25fSPoul-Henning Kamp /* The following tokens may be returned by both XmlPrologTok and 405bb6a25fSPoul-Henning Kamp XmlContentTok. 415bb6a25fSPoul-Henning Kamp */ 425bb6a25fSPoul-Henning Kamp #define XML_TOK_PI 11 /* processing instruction */ 435bb6a25fSPoul-Henning Kamp #define XML_TOK_XML_DECL 12 /* XML decl or text decl */ 445bb6a25fSPoul-Henning Kamp #define XML_TOK_COMMENT 13 455bb6a25fSPoul-Henning Kamp #define XML_TOK_BOM 14 /* Byte order mark */ 465bb6a25fSPoul-Henning Kamp 475bb6a25fSPoul-Henning Kamp /* The following tokens are returned only by XmlPrologTok */ 485bb6a25fSPoul-Henning Kamp #define XML_TOK_PROLOG_S 15 495bb6a25fSPoul-Henning Kamp #define XML_TOK_DECL_OPEN 16 /* <!foo */ 505bb6a25fSPoul-Henning Kamp #define XML_TOK_DECL_CLOSE 17 /* > */ 515bb6a25fSPoul-Henning Kamp #define XML_TOK_NAME 18 525bb6a25fSPoul-Henning Kamp #define XML_TOK_NMTOKEN 19 535bb6a25fSPoul-Henning Kamp #define XML_TOK_POUND_NAME 20 /* #name */ 545bb6a25fSPoul-Henning Kamp #define XML_TOK_OR 21 /* | */ 555bb6a25fSPoul-Henning Kamp #define XML_TOK_PERCENT 22 565bb6a25fSPoul-Henning Kamp #define XML_TOK_OPEN_PAREN 23 575bb6a25fSPoul-Henning Kamp #define XML_TOK_CLOSE_PAREN 24 585bb6a25fSPoul-Henning Kamp #define XML_TOK_OPEN_BRACKET 25 595bb6a25fSPoul-Henning Kamp #define XML_TOK_CLOSE_BRACKET 26 605bb6a25fSPoul-Henning Kamp #define XML_TOK_LITERAL 27 615bb6a25fSPoul-Henning Kamp #define XML_TOK_PARAM_ENTITY_REF 28 625bb6a25fSPoul-Henning Kamp #define XML_TOK_INSTANCE_START 29 635bb6a25fSPoul-Henning Kamp 645bb6a25fSPoul-Henning Kamp /* The following occur only in element type declarations */ 655bb6a25fSPoul-Henning Kamp #define XML_TOK_NAME_QUESTION 30 /* name? */ 665bb6a25fSPoul-Henning Kamp #define XML_TOK_NAME_ASTERISK 31 /* name* */ 675bb6a25fSPoul-Henning Kamp #define XML_TOK_NAME_PLUS 32 /* name+ */ 685bb6a25fSPoul-Henning Kamp #define XML_TOK_COND_SECT_OPEN 33 /* <![ */ 695bb6a25fSPoul-Henning Kamp #define XML_TOK_COND_SECT_CLOSE 34 /* ]]> */ 705bb6a25fSPoul-Henning Kamp #define XML_TOK_CLOSE_PAREN_QUESTION 35 /* )? */ 715bb6a25fSPoul-Henning Kamp #define XML_TOK_CLOSE_PAREN_ASTERISK 36 /* )* */ 725bb6a25fSPoul-Henning Kamp #define XML_TOK_CLOSE_PAREN_PLUS 37 /* )+ */ 735bb6a25fSPoul-Henning Kamp #define XML_TOK_COMMA 38 745bb6a25fSPoul-Henning Kamp 755bb6a25fSPoul-Henning Kamp /* The following token is returned only by XmlAttributeValueTok */ 765bb6a25fSPoul-Henning Kamp #define XML_TOK_ATTRIBUTE_VALUE_S 39 775bb6a25fSPoul-Henning Kamp 785bb6a25fSPoul-Henning Kamp /* The following token is returned only by XmlCdataSectionTok */ 795bb6a25fSPoul-Henning Kamp #define XML_TOK_CDATA_SECT_CLOSE 40 805bb6a25fSPoul-Henning Kamp 815bb6a25fSPoul-Henning Kamp /* With namespace processing this is returned by XmlPrologTok for a 825bb6a25fSPoul-Henning Kamp name with a colon. 835bb6a25fSPoul-Henning Kamp */ 845bb6a25fSPoul-Henning Kamp #define XML_TOK_PREFIXED_NAME 41 855bb6a25fSPoul-Henning Kamp 865bb6a25fSPoul-Henning Kamp #ifdef XML_DTD 875bb6a25fSPoul-Henning Kamp #define XML_TOK_IGNORE_SECT 42 885bb6a25fSPoul-Henning Kamp #endif /* XML_DTD */ 895bb6a25fSPoul-Henning Kamp 905bb6a25fSPoul-Henning Kamp #ifdef XML_DTD 915bb6a25fSPoul-Henning Kamp #define XML_N_STATES 4 925bb6a25fSPoul-Henning Kamp #else /* not XML_DTD */ 935bb6a25fSPoul-Henning Kamp #define XML_N_STATES 3 945bb6a25fSPoul-Henning Kamp #endif /* not XML_DTD */ 955bb6a25fSPoul-Henning Kamp 965bb6a25fSPoul-Henning Kamp #define XML_PROLOG_STATE 0 975bb6a25fSPoul-Henning Kamp #define XML_CONTENT_STATE 1 985bb6a25fSPoul-Henning Kamp #define XML_CDATA_SECTION_STATE 2 995bb6a25fSPoul-Henning Kamp #ifdef XML_DTD 1005bb6a25fSPoul-Henning Kamp #define XML_IGNORE_SECTION_STATE 3 1015bb6a25fSPoul-Henning Kamp #endif /* XML_DTD */ 1025bb6a25fSPoul-Henning Kamp 1035bb6a25fSPoul-Henning Kamp #define XML_N_LITERAL_TYPES 2 1045bb6a25fSPoul-Henning Kamp #define XML_ATTRIBUTE_VALUE_LITERAL 0 1055bb6a25fSPoul-Henning Kamp #define XML_ENTITY_VALUE_LITERAL 1 1065bb6a25fSPoul-Henning Kamp 1075bb6a25fSPoul-Henning Kamp /* The size of the buffer passed to XmlUtf8Encode must be at least this. */ 1085bb6a25fSPoul-Henning Kamp #define XML_UTF8_ENCODE_MAX 4 1095bb6a25fSPoul-Henning Kamp /* The size of the buffer passed to XmlUtf16Encode must be at least this. */ 1105bb6a25fSPoul-Henning Kamp #define XML_UTF16_ENCODE_MAX 2 1115bb6a25fSPoul-Henning Kamp 1125bb6a25fSPoul-Henning Kamp typedef struct position { 1135bb6a25fSPoul-Henning Kamp /* first line and first column are 0 not 1 */ 114220ed979SColeman Kane XML_Size lineNumber; 115220ed979SColeman Kane XML_Size columnNumber; 1165bb6a25fSPoul-Henning Kamp } POSITION; 1175bb6a25fSPoul-Henning Kamp 1185bb6a25fSPoul-Henning Kamp typedef struct { 1195bb6a25fSPoul-Henning Kamp const char *name; 1205bb6a25fSPoul-Henning Kamp const char *valuePtr; 1215bb6a25fSPoul-Henning Kamp const char *valueEnd; 1225bb6a25fSPoul-Henning Kamp char normalized; 1235bb6a25fSPoul-Henning Kamp } ATTRIBUTE; 1245bb6a25fSPoul-Henning Kamp 1255bb6a25fSPoul-Henning Kamp struct encoding; 1265bb6a25fSPoul-Henning Kamp typedef struct encoding ENCODING; 1275bb6a25fSPoul-Henning Kamp 128220ed979SColeman Kane typedef int (PTRCALL *SCANNER)(const ENCODING *, 1295bb6a25fSPoul-Henning Kamp const char *, 1305bb6a25fSPoul-Henning Kamp const char *, 1315bb6a25fSPoul-Henning Kamp const char **); 1325bb6a25fSPoul-Henning Kamp 133be8aff81SXin LI enum XML_Convert_Result { 134be8aff81SXin LI XML_CONVERT_COMPLETED = 0, 135be8aff81SXin LI XML_CONVERT_INPUT_INCOMPLETE = 1, 136be8aff81SXin LI XML_CONVERT_OUTPUT_EXHAUSTED = 2 /* and therefore potentially input remaining as well */ 137be8aff81SXin LI }; 138be8aff81SXin LI 1395bb6a25fSPoul-Henning Kamp struct encoding { 1405bb6a25fSPoul-Henning Kamp SCANNER scanners[XML_N_STATES]; 1415bb6a25fSPoul-Henning Kamp SCANNER literalScanners[XML_N_LITERAL_TYPES]; 142220ed979SColeman Kane int (PTRCALL *sameName)(const ENCODING *, 1435bb6a25fSPoul-Henning Kamp const char *, 1445bb6a25fSPoul-Henning Kamp const char *); 145220ed979SColeman Kane int (PTRCALL *nameMatchesAscii)(const ENCODING *, 1465bb6a25fSPoul-Henning Kamp const char *, 1475bb6a25fSPoul-Henning Kamp const char *, 1485bb6a25fSPoul-Henning Kamp const char *); 149220ed979SColeman Kane int (PTRFASTCALL *nameLength)(const ENCODING *, const char *); 150220ed979SColeman Kane const char *(PTRFASTCALL *skipS)(const ENCODING *, const char *); 151220ed979SColeman Kane int (PTRCALL *getAtts)(const ENCODING *enc, 1525bb6a25fSPoul-Henning Kamp const char *ptr, 1535bb6a25fSPoul-Henning Kamp int attsMax, 1545bb6a25fSPoul-Henning Kamp ATTRIBUTE *atts); 155220ed979SColeman Kane int (PTRFASTCALL *charRefNumber)(const ENCODING *enc, const char *ptr); 156220ed979SColeman Kane int (PTRCALL *predefinedEntityName)(const ENCODING *, 1575bb6a25fSPoul-Henning Kamp const char *, 1585bb6a25fSPoul-Henning Kamp const char *); 159220ed979SColeman Kane void (PTRCALL *updatePosition)(const ENCODING *, 1605bb6a25fSPoul-Henning Kamp const char *ptr, 1615bb6a25fSPoul-Henning Kamp const char *end, 1625bb6a25fSPoul-Henning Kamp POSITION *); 163220ed979SColeman Kane int (PTRCALL *isPublicId)(const ENCODING *enc, 1645bb6a25fSPoul-Henning Kamp const char *ptr, 1655bb6a25fSPoul-Henning Kamp const char *end, 1665bb6a25fSPoul-Henning Kamp const char **badPtr); 167be8aff81SXin LI enum XML_Convert_Result (PTRCALL *utf8Convert)(const ENCODING *enc, 1685bb6a25fSPoul-Henning Kamp const char **fromP, 1695bb6a25fSPoul-Henning Kamp const char *fromLim, 1705bb6a25fSPoul-Henning Kamp char **toP, 1715bb6a25fSPoul-Henning Kamp const char *toLim); 172be8aff81SXin LI enum XML_Convert_Result (PTRCALL *utf16Convert)(const ENCODING *enc, 1735bb6a25fSPoul-Henning Kamp const char **fromP, 1745bb6a25fSPoul-Henning Kamp const char *fromLim, 1755bb6a25fSPoul-Henning Kamp unsigned short **toP, 1765bb6a25fSPoul-Henning Kamp const unsigned short *toLim); 1775bb6a25fSPoul-Henning Kamp int minBytesPerChar; 1785bb6a25fSPoul-Henning Kamp char isUtf8; 1795bb6a25fSPoul-Henning Kamp char isUtf16; 1805bb6a25fSPoul-Henning Kamp }; 1815bb6a25fSPoul-Henning Kamp 1825bb6a25fSPoul-Henning Kamp /* Scan the string starting at ptr until the end of the next complete 1835bb6a25fSPoul-Henning Kamp token, but do not scan past eptr. Return an integer giving the 1845bb6a25fSPoul-Henning Kamp type of token. 1855bb6a25fSPoul-Henning Kamp 1865bb6a25fSPoul-Henning Kamp Return XML_TOK_NONE when ptr == eptr; nextTokPtr will not be set. 1875bb6a25fSPoul-Henning Kamp 1885bb6a25fSPoul-Henning Kamp Return XML_TOK_PARTIAL when the string does not contain a complete 1895bb6a25fSPoul-Henning Kamp token; nextTokPtr will not be set. 1905bb6a25fSPoul-Henning Kamp 1915bb6a25fSPoul-Henning Kamp Return XML_TOK_INVALID when the string does not start a valid 1925bb6a25fSPoul-Henning Kamp token; nextTokPtr will be set to point to the character which made 1935bb6a25fSPoul-Henning Kamp the token invalid. 1945bb6a25fSPoul-Henning Kamp 1955bb6a25fSPoul-Henning Kamp Otherwise the string starts with a valid token; nextTokPtr will be 1965bb6a25fSPoul-Henning Kamp set to point to the character following the end of that token. 1975bb6a25fSPoul-Henning Kamp 1985bb6a25fSPoul-Henning Kamp Each data character counts as a single token, but adjacent data 1995bb6a25fSPoul-Henning Kamp characters may be returned together. Similarly for characters in 2005bb6a25fSPoul-Henning Kamp the prolog outside literals, comments and processing instructions. 2015bb6a25fSPoul-Henning Kamp */ 2025bb6a25fSPoul-Henning Kamp 2035bb6a25fSPoul-Henning Kamp 2045bb6a25fSPoul-Henning Kamp #define XmlTok(enc, state, ptr, end, nextTokPtr) \ 2055bb6a25fSPoul-Henning Kamp (((enc)->scanners[state])(enc, ptr, end, nextTokPtr)) 2065bb6a25fSPoul-Henning Kamp 2075bb6a25fSPoul-Henning Kamp #define XmlPrologTok(enc, ptr, end, nextTokPtr) \ 2085bb6a25fSPoul-Henning Kamp XmlTok(enc, XML_PROLOG_STATE, ptr, end, nextTokPtr) 2095bb6a25fSPoul-Henning Kamp 2105bb6a25fSPoul-Henning Kamp #define XmlContentTok(enc, ptr, end, nextTokPtr) \ 2115bb6a25fSPoul-Henning Kamp XmlTok(enc, XML_CONTENT_STATE, ptr, end, nextTokPtr) 2125bb6a25fSPoul-Henning Kamp 2135bb6a25fSPoul-Henning Kamp #define XmlCdataSectionTok(enc, ptr, end, nextTokPtr) \ 2145bb6a25fSPoul-Henning Kamp XmlTok(enc, XML_CDATA_SECTION_STATE, ptr, end, nextTokPtr) 2155bb6a25fSPoul-Henning Kamp 2165bb6a25fSPoul-Henning Kamp #ifdef XML_DTD 2175bb6a25fSPoul-Henning Kamp 2185bb6a25fSPoul-Henning Kamp #define XmlIgnoreSectionTok(enc, ptr, end, nextTokPtr) \ 2195bb6a25fSPoul-Henning Kamp XmlTok(enc, XML_IGNORE_SECTION_STATE, ptr, end, nextTokPtr) 2205bb6a25fSPoul-Henning Kamp 2215bb6a25fSPoul-Henning Kamp #endif /* XML_DTD */ 2225bb6a25fSPoul-Henning Kamp 2235bb6a25fSPoul-Henning Kamp /* This is used for performing a 2nd-level tokenization on the content 2245bb6a25fSPoul-Henning Kamp of a literal that has already been returned by XmlTok. 2255bb6a25fSPoul-Henning Kamp */ 2265bb6a25fSPoul-Henning Kamp #define XmlLiteralTok(enc, literalType, ptr, end, nextTokPtr) \ 2275bb6a25fSPoul-Henning Kamp (((enc)->literalScanners[literalType])(enc, ptr, end, nextTokPtr)) 2285bb6a25fSPoul-Henning Kamp 2295bb6a25fSPoul-Henning Kamp #define XmlAttributeValueTok(enc, ptr, end, nextTokPtr) \ 2305bb6a25fSPoul-Henning Kamp XmlLiteralTok(enc, XML_ATTRIBUTE_VALUE_LITERAL, ptr, end, nextTokPtr) 2315bb6a25fSPoul-Henning Kamp 2325bb6a25fSPoul-Henning Kamp #define XmlEntityValueTok(enc, ptr, end, nextTokPtr) \ 2335bb6a25fSPoul-Henning Kamp XmlLiteralTok(enc, XML_ENTITY_VALUE_LITERAL, ptr, end, nextTokPtr) 2345bb6a25fSPoul-Henning Kamp 2355bb6a25fSPoul-Henning Kamp #define XmlSameName(enc, ptr1, ptr2) (((enc)->sameName)(enc, ptr1, ptr2)) 2365bb6a25fSPoul-Henning Kamp 2375bb6a25fSPoul-Henning Kamp #define XmlNameMatchesAscii(enc, ptr1, end1, ptr2) \ 2385bb6a25fSPoul-Henning Kamp (((enc)->nameMatchesAscii)(enc, ptr1, end1, ptr2)) 2395bb6a25fSPoul-Henning Kamp 2405bb6a25fSPoul-Henning Kamp #define XmlNameLength(enc, ptr) \ 2415bb6a25fSPoul-Henning Kamp (((enc)->nameLength)(enc, ptr)) 2425bb6a25fSPoul-Henning Kamp 2435bb6a25fSPoul-Henning Kamp #define XmlSkipS(enc, ptr) \ 2445bb6a25fSPoul-Henning Kamp (((enc)->skipS)(enc, ptr)) 2455bb6a25fSPoul-Henning Kamp 2465bb6a25fSPoul-Henning Kamp #define XmlGetAttributes(enc, ptr, attsMax, atts) \ 2475bb6a25fSPoul-Henning Kamp (((enc)->getAtts)(enc, ptr, attsMax, atts)) 2485bb6a25fSPoul-Henning Kamp 2495bb6a25fSPoul-Henning Kamp #define XmlCharRefNumber(enc, ptr) \ 2505bb6a25fSPoul-Henning Kamp (((enc)->charRefNumber)(enc, ptr)) 2515bb6a25fSPoul-Henning Kamp 2525bb6a25fSPoul-Henning Kamp #define XmlPredefinedEntityName(enc, ptr, end) \ 2535bb6a25fSPoul-Henning Kamp (((enc)->predefinedEntityName)(enc, ptr, end)) 2545bb6a25fSPoul-Henning Kamp 2555bb6a25fSPoul-Henning Kamp #define XmlUpdatePosition(enc, ptr, end, pos) \ 2565bb6a25fSPoul-Henning Kamp (((enc)->updatePosition)(enc, ptr, end, pos)) 2575bb6a25fSPoul-Henning Kamp 2585bb6a25fSPoul-Henning Kamp #define XmlIsPublicId(enc, ptr, end, badPtr) \ 2595bb6a25fSPoul-Henning Kamp (((enc)->isPublicId)(enc, ptr, end, badPtr)) 2605bb6a25fSPoul-Henning Kamp 2615bb6a25fSPoul-Henning Kamp #define XmlUtf8Convert(enc, fromP, fromLim, toP, toLim) \ 2625bb6a25fSPoul-Henning Kamp (((enc)->utf8Convert)(enc, fromP, fromLim, toP, toLim)) 2635bb6a25fSPoul-Henning Kamp 2645bb6a25fSPoul-Henning Kamp #define XmlUtf16Convert(enc, fromP, fromLim, toP, toLim) \ 2655bb6a25fSPoul-Henning Kamp (((enc)->utf16Convert)(enc, fromP, fromLim, toP, toLim)) 2665bb6a25fSPoul-Henning Kamp 2675bb6a25fSPoul-Henning Kamp typedef struct { 2685bb6a25fSPoul-Henning Kamp ENCODING initEnc; 2695bb6a25fSPoul-Henning Kamp const ENCODING **encPtr; 2705bb6a25fSPoul-Henning Kamp } INIT_ENCODING; 2715bb6a25fSPoul-Henning Kamp 2725bb6a25fSPoul-Henning Kamp int XmlParseXmlDecl(int isGeneralTextEntity, 2735bb6a25fSPoul-Henning Kamp const ENCODING *enc, 2745bb6a25fSPoul-Henning Kamp const char *ptr, 2755bb6a25fSPoul-Henning Kamp const char *end, 2765bb6a25fSPoul-Henning Kamp const char **badPtr, 2775bb6a25fSPoul-Henning Kamp const char **versionPtr, 2785bb6a25fSPoul-Henning Kamp const char **versionEndPtr, 2795bb6a25fSPoul-Henning Kamp const char **encodingNamePtr, 2805bb6a25fSPoul-Henning Kamp const ENCODING **namedEncodingPtr, 2815bb6a25fSPoul-Henning Kamp int *standalonePtr); 2825bb6a25fSPoul-Henning Kamp 2835bb6a25fSPoul-Henning Kamp int XmlInitEncoding(INIT_ENCODING *, const ENCODING **, const char *name); 2845bb6a25fSPoul-Henning Kamp const ENCODING *XmlGetUtf8InternalEncoding(void); 2855bb6a25fSPoul-Henning Kamp const ENCODING *XmlGetUtf16InternalEncoding(void); 286220ed979SColeman Kane int FASTCALL XmlUtf8Encode(int charNumber, char *buf); 287220ed979SColeman Kane int FASTCALL XmlUtf16Encode(int charNumber, unsigned short *buf); 2885bb6a25fSPoul-Henning Kamp int XmlSizeOfUnknownEncoding(void); 289220ed979SColeman Kane 290220ed979SColeman Kane 291220ed979SColeman Kane typedef int (XMLCALL *CONVERTER) (void *userData, const char *p); 292220ed979SColeman Kane 2935bb6a25fSPoul-Henning Kamp ENCODING * 2945bb6a25fSPoul-Henning Kamp XmlInitUnknownEncoding(void *mem, 2955bb6a25fSPoul-Henning Kamp int *table, 296220ed979SColeman Kane CONVERTER convert, 2975bb6a25fSPoul-Henning Kamp void *userData); 2985bb6a25fSPoul-Henning Kamp 2995bb6a25fSPoul-Henning Kamp int XmlParseXmlDeclNS(int isGeneralTextEntity, 3005bb6a25fSPoul-Henning Kamp const ENCODING *enc, 3015bb6a25fSPoul-Henning Kamp const char *ptr, 3025bb6a25fSPoul-Henning Kamp const char *end, 3035bb6a25fSPoul-Henning Kamp const char **badPtr, 3045bb6a25fSPoul-Henning Kamp const char **versionPtr, 3055bb6a25fSPoul-Henning Kamp const char **versionEndPtr, 3065bb6a25fSPoul-Henning Kamp const char **encodingNamePtr, 3075bb6a25fSPoul-Henning Kamp const ENCODING **namedEncodingPtr, 3085bb6a25fSPoul-Henning Kamp int *standalonePtr); 309220ed979SColeman Kane 3105bb6a25fSPoul-Henning Kamp int XmlInitEncodingNS(INIT_ENCODING *, const ENCODING **, const char *name); 3115bb6a25fSPoul-Henning Kamp const ENCODING *XmlGetUtf8InternalEncodingNS(void); 3125bb6a25fSPoul-Henning Kamp const ENCODING *XmlGetUtf16InternalEncodingNS(void); 3135bb6a25fSPoul-Henning Kamp ENCODING * 3145bb6a25fSPoul-Henning Kamp XmlInitUnknownEncodingNS(void *mem, 3155bb6a25fSPoul-Henning Kamp int *table, 316220ed979SColeman Kane CONVERTER convert, 3175bb6a25fSPoul-Henning Kamp void *userData); 3185bb6a25fSPoul-Henning Kamp #ifdef __cplusplus 3195bb6a25fSPoul-Henning Kamp } 3205bb6a25fSPoul-Henning Kamp #endif 3215bb6a25fSPoul-Henning Kamp 3225bb6a25fSPoul-Henning Kamp #endif /* not XmlTok_INCLUDED */ 323