SAX based XML parser

Dependents:   giken9_HTMLServer_Temp_Sample

Committer:
andrewbonney
Date:
Thu May 26 10:03:14 2011 +0000
Revision:
1:e96b2af301dd
Parent:
0:07919e3d6c56
Update to reduce buffer sizes

Who changed what in which revision?

UserRevisionLine numberNew contents of line
andrewbonney 0:07919e3d6c56 1 /* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
andrewbonney 0:07919e3d6c56 2 See the file COPYING for copying permission.
andrewbonney 0:07919e3d6c56 3 */
andrewbonney 0:07919e3d6c56 4
andrewbonney 0:07919e3d6c56 5 #ifndef XmlTok_INCLUDED
andrewbonney 0:07919e3d6c56 6 #define XmlTok_INCLUDED 1
andrewbonney 0:07919e3d6c56 7
andrewbonney 0:07919e3d6c56 8 #ifdef __cplusplus
andrewbonney 0:07919e3d6c56 9 extern "C" {
andrewbonney 0:07919e3d6c56 10 #endif
andrewbonney 0:07919e3d6c56 11
andrewbonney 0:07919e3d6c56 12 /* The following token may be returned by XmlContentTok */
andrewbonney 0:07919e3d6c56 13 #define XML_TOK_TRAILING_RSQB -5 /* ] or ]] at the end of the scan; might be
andrewbonney 0:07919e3d6c56 14 start of illegal ]]> sequence */
andrewbonney 0:07919e3d6c56 15 /* The following tokens may be returned by both XmlPrologTok and
andrewbonney 0:07919e3d6c56 16 XmlContentTok.
andrewbonney 0:07919e3d6c56 17 */
andrewbonney 0:07919e3d6c56 18 #define XML_TOK_NONE -4 /* The string to be scanned is empty */
andrewbonney 0:07919e3d6c56 19 #define XML_TOK_TRAILING_CR -3 /* A CR at the end of the scan;
andrewbonney 0:07919e3d6c56 20 might be part of CRLF sequence */
andrewbonney 0:07919e3d6c56 21 #define XML_TOK_PARTIAL_CHAR -2 /* only part of a multibyte sequence */
andrewbonney 0:07919e3d6c56 22 #define XML_TOK_PARTIAL -1 /* only part of a token */
andrewbonney 0:07919e3d6c56 23 #define XML_TOK_INVALID 0
andrewbonney 0:07919e3d6c56 24
andrewbonney 0:07919e3d6c56 25 /* The following tokens are returned by XmlContentTok; some are also
andrewbonney 0:07919e3d6c56 26 returned by XmlAttributeValueTok, XmlEntityTok, XmlCdataSectionTok.
andrewbonney 0:07919e3d6c56 27 */
andrewbonney 0:07919e3d6c56 28 #define XML_TOK_START_TAG_WITH_ATTS 1
andrewbonney 0:07919e3d6c56 29 #define XML_TOK_START_TAG_NO_ATTS 2
andrewbonney 0:07919e3d6c56 30 #define XML_TOK_EMPTY_ELEMENT_WITH_ATTS 3 /* empty element tag <e/> */
andrewbonney 0:07919e3d6c56 31 #define XML_TOK_EMPTY_ELEMENT_NO_ATTS 4
andrewbonney 0:07919e3d6c56 32 #define XML_TOK_END_TAG 5
andrewbonney 0:07919e3d6c56 33 #define XML_TOK_DATA_CHARS 6
andrewbonney 0:07919e3d6c56 34 #define XML_TOK_DATA_NEWLINE 7
andrewbonney 0:07919e3d6c56 35 #define XML_TOK_CDATA_SECT_OPEN 8
andrewbonney 0:07919e3d6c56 36 #define XML_TOK_ENTITY_REF 9
andrewbonney 0:07919e3d6c56 37 #define XML_TOK_CHAR_REF 10 /* numeric character reference */
andrewbonney 0:07919e3d6c56 38
andrewbonney 0:07919e3d6c56 39 /* The following tokens may be returned by both XmlPrologTok and
andrewbonney 0:07919e3d6c56 40 XmlContentTok.
andrewbonney 0:07919e3d6c56 41 */
andrewbonney 0:07919e3d6c56 42 #define XML_TOK_PI 11 /* processing instruction */
andrewbonney 0:07919e3d6c56 43 #define XML_TOK_XML_DECL 12 /* XML decl or text decl */
andrewbonney 0:07919e3d6c56 44 #define XML_TOK_COMMENT 13
andrewbonney 0:07919e3d6c56 45 #define XML_TOK_BOM 14 /* Byte order mark */
andrewbonney 0:07919e3d6c56 46
andrewbonney 0:07919e3d6c56 47 /* The following tokens are returned only by XmlPrologTok */
andrewbonney 0:07919e3d6c56 48 #define XML_TOK_PROLOG_S 15
andrewbonney 0:07919e3d6c56 49 #define XML_TOK_DECL_OPEN 16 /* <!foo */
andrewbonney 0:07919e3d6c56 50 #define XML_TOK_DECL_CLOSE 17 /* > */
andrewbonney 0:07919e3d6c56 51 #define XML_TOK_NAME 18
andrewbonney 0:07919e3d6c56 52 #define XML_TOK_NMTOKEN 19
andrewbonney 0:07919e3d6c56 53 #define XML_TOK_POUND_NAME 20 /* #name */
andrewbonney 0:07919e3d6c56 54 #define XML_TOK_OR 21 /* | */
andrewbonney 0:07919e3d6c56 55 #define XML_TOK_PERCENT 22
andrewbonney 0:07919e3d6c56 56 #define XML_TOK_OPEN_PAREN 23
andrewbonney 0:07919e3d6c56 57 #define XML_TOK_CLOSE_PAREN 24
andrewbonney 0:07919e3d6c56 58 #define XML_TOK_OPEN_BRACKET 25
andrewbonney 0:07919e3d6c56 59 #define XML_TOK_CLOSE_BRACKET 26
andrewbonney 0:07919e3d6c56 60 #define XML_TOK_LITERAL 27
andrewbonney 0:07919e3d6c56 61 #define XML_TOK_PARAM_ENTITY_REF 28
andrewbonney 0:07919e3d6c56 62 #define XML_TOK_INSTANCE_START 29
andrewbonney 0:07919e3d6c56 63
andrewbonney 0:07919e3d6c56 64 /* The following occur only in element type declarations */
andrewbonney 0:07919e3d6c56 65 #define XML_TOK_NAME_QUESTION 30 /* name? */
andrewbonney 0:07919e3d6c56 66 #define XML_TOK_NAME_ASTERISK 31 /* name* */
andrewbonney 0:07919e3d6c56 67 #define XML_TOK_NAME_PLUS 32 /* name+ */
andrewbonney 0:07919e3d6c56 68 #define XML_TOK_COND_SECT_OPEN 33 /* <![ */
andrewbonney 0:07919e3d6c56 69 #define XML_TOK_COND_SECT_CLOSE 34 /* ]]> */
andrewbonney 0:07919e3d6c56 70 #define XML_TOK_CLOSE_PAREN_QUESTION 35 /* )? */
andrewbonney 0:07919e3d6c56 71 #define XML_TOK_CLOSE_PAREN_ASTERISK 36 /* )* */
andrewbonney 0:07919e3d6c56 72 #define XML_TOK_CLOSE_PAREN_PLUS 37 /* )+ */
andrewbonney 0:07919e3d6c56 73 #define XML_TOK_COMMA 38
andrewbonney 0:07919e3d6c56 74
andrewbonney 0:07919e3d6c56 75 /* The following token is returned only by XmlAttributeValueTok */
andrewbonney 0:07919e3d6c56 76 #define XML_TOK_ATTRIBUTE_VALUE_S 39
andrewbonney 0:07919e3d6c56 77
andrewbonney 0:07919e3d6c56 78 /* The following token is returned only by XmlCdataSectionTok */
andrewbonney 0:07919e3d6c56 79 #define XML_TOK_CDATA_SECT_CLOSE 40
andrewbonney 0:07919e3d6c56 80
andrewbonney 0:07919e3d6c56 81 /* With namespace processing this is returned by XmlPrologTok for a
andrewbonney 0:07919e3d6c56 82 name with a colon.
andrewbonney 0:07919e3d6c56 83 */
andrewbonney 0:07919e3d6c56 84 #define XML_TOK_PREFIXED_NAME 41
andrewbonney 0:07919e3d6c56 85
andrewbonney 0:07919e3d6c56 86 #ifdef XML_DTD
andrewbonney 0:07919e3d6c56 87 #define XML_TOK_IGNORE_SECT 42
andrewbonney 0:07919e3d6c56 88 #endif /* XML_DTD */
andrewbonney 0:07919e3d6c56 89
andrewbonney 0:07919e3d6c56 90 #ifdef XML_DTD
andrewbonney 0:07919e3d6c56 91 #define XML_N_STATES 4
andrewbonney 0:07919e3d6c56 92 #else /* not XML_DTD */
andrewbonney 0:07919e3d6c56 93 #define XML_N_STATES 3
andrewbonney 0:07919e3d6c56 94 #endif /* not XML_DTD */
andrewbonney 0:07919e3d6c56 95
andrewbonney 0:07919e3d6c56 96 #define XML_PROLOG_STATE 0
andrewbonney 0:07919e3d6c56 97 #define XML_CONTENT_STATE 1
andrewbonney 0:07919e3d6c56 98 #define XML_CDATA_SECTION_STATE 2
andrewbonney 0:07919e3d6c56 99 #ifdef XML_DTD
andrewbonney 0:07919e3d6c56 100 #define XML_IGNORE_SECTION_STATE 3
andrewbonney 0:07919e3d6c56 101 #endif /* XML_DTD */
andrewbonney 0:07919e3d6c56 102
andrewbonney 0:07919e3d6c56 103 #define XML_N_LITERAL_TYPES 2
andrewbonney 0:07919e3d6c56 104 #define XML_ATTRIBUTE_VALUE_LITERAL 0
andrewbonney 0:07919e3d6c56 105 #define XML_ENTITY_VALUE_LITERAL 1
andrewbonney 0:07919e3d6c56 106
andrewbonney 0:07919e3d6c56 107 /* The size of the buffer passed to XmlUtf8Encode must be at least this. */
andrewbonney 0:07919e3d6c56 108 #define XML_UTF8_ENCODE_MAX 4
andrewbonney 0:07919e3d6c56 109 /* The size of the buffer passed to XmlUtf16Encode must be at least this. */
andrewbonney 0:07919e3d6c56 110 #define XML_UTF16_ENCODE_MAX 2
andrewbonney 0:07919e3d6c56 111
andrewbonney 0:07919e3d6c56 112 typedef struct position {
andrewbonney 0:07919e3d6c56 113 /* first line and first column are 0 not 1 */
andrewbonney 0:07919e3d6c56 114 XML_Size lineNumber;
andrewbonney 0:07919e3d6c56 115 XML_Size columnNumber;
andrewbonney 0:07919e3d6c56 116 } POSITION;
andrewbonney 0:07919e3d6c56 117
andrewbonney 0:07919e3d6c56 118 typedef struct {
andrewbonney 0:07919e3d6c56 119 const char *name;
andrewbonney 0:07919e3d6c56 120 const char *valuePtr;
andrewbonney 0:07919e3d6c56 121 const char *valueEnd;
andrewbonney 0:07919e3d6c56 122 char normalized;
andrewbonney 0:07919e3d6c56 123 } ATTRIBUTE;
andrewbonney 0:07919e3d6c56 124
andrewbonney 0:07919e3d6c56 125 struct encoding;
andrewbonney 0:07919e3d6c56 126 typedef struct encoding ENCODING;
andrewbonney 0:07919e3d6c56 127
andrewbonney 0:07919e3d6c56 128 typedef int (PTRCALL *SCANNER)(const ENCODING *,
andrewbonney 0:07919e3d6c56 129 const char *,
andrewbonney 0:07919e3d6c56 130 const char *,
andrewbonney 0:07919e3d6c56 131 const char **);
andrewbonney 0:07919e3d6c56 132
andrewbonney 0:07919e3d6c56 133 struct encoding {
andrewbonney 0:07919e3d6c56 134 SCANNER scanners[XML_N_STATES];
andrewbonney 0:07919e3d6c56 135 SCANNER literalScanners[XML_N_LITERAL_TYPES];
andrewbonney 0:07919e3d6c56 136 int (PTRCALL *sameName)(const ENCODING *,
andrewbonney 0:07919e3d6c56 137 const char *,
andrewbonney 0:07919e3d6c56 138 const char *);
andrewbonney 0:07919e3d6c56 139 int (PTRCALL *nameMatchesAscii)(const ENCODING *,
andrewbonney 0:07919e3d6c56 140 const char *,
andrewbonney 0:07919e3d6c56 141 const char *,
andrewbonney 0:07919e3d6c56 142 const char *);
andrewbonney 0:07919e3d6c56 143 int (PTRFASTCALL *nameLength)(const ENCODING *, const char *);
andrewbonney 0:07919e3d6c56 144 const char *(PTRFASTCALL *skipS)(const ENCODING *, const char *);
andrewbonney 0:07919e3d6c56 145 int (PTRCALL *getAtts)(const ENCODING *enc,
andrewbonney 0:07919e3d6c56 146 const char *ptr,
andrewbonney 0:07919e3d6c56 147 int attsMax,
andrewbonney 0:07919e3d6c56 148 ATTRIBUTE *atts);
andrewbonney 0:07919e3d6c56 149 int (PTRFASTCALL *charRefNumber)(const ENCODING *enc, const char *ptr);
andrewbonney 0:07919e3d6c56 150 int (PTRCALL *predefinedEntityName)(const ENCODING *,
andrewbonney 0:07919e3d6c56 151 const char *,
andrewbonney 0:07919e3d6c56 152 const char *);
andrewbonney 0:07919e3d6c56 153 void (PTRCALL *updatePosition)(const ENCODING *,
andrewbonney 0:07919e3d6c56 154 const char *ptr,
andrewbonney 0:07919e3d6c56 155 const char *end,
andrewbonney 0:07919e3d6c56 156 POSITION *);
andrewbonney 0:07919e3d6c56 157 int (PTRCALL *isPublicId)(const ENCODING *enc,
andrewbonney 0:07919e3d6c56 158 const char *ptr,
andrewbonney 0:07919e3d6c56 159 const char *end,
andrewbonney 0:07919e3d6c56 160 const char **badPtr);
andrewbonney 0:07919e3d6c56 161 void (PTRCALL *utf8Convert)(const ENCODING *enc,
andrewbonney 0:07919e3d6c56 162 const char **fromP,
andrewbonney 0:07919e3d6c56 163 const char *fromLim,
andrewbonney 0:07919e3d6c56 164 char **toP,
andrewbonney 0:07919e3d6c56 165 const char *toLim);
andrewbonney 0:07919e3d6c56 166 void (PTRCALL *utf16Convert)(const ENCODING *enc,
andrewbonney 0:07919e3d6c56 167 const char **fromP,
andrewbonney 0:07919e3d6c56 168 const char *fromLim,
andrewbonney 0:07919e3d6c56 169 unsigned short **toP,
andrewbonney 0:07919e3d6c56 170 const unsigned short *toLim);
andrewbonney 0:07919e3d6c56 171 int minBytesPerChar;
andrewbonney 0:07919e3d6c56 172 char isUtf8;
andrewbonney 0:07919e3d6c56 173 char isUtf16;
andrewbonney 0:07919e3d6c56 174 };
andrewbonney 0:07919e3d6c56 175
andrewbonney 0:07919e3d6c56 176 /* Scan the string starting at ptr until the end of the next complete
andrewbonney 0:07919e3d6c56 177 token, but do not scan past eptr. Return an integer giving the
andrewbonney 0:07919e3d6c56 178 type of token.
andrewbonney 0:07919e3d6c56 179
andrewbonney 0:07919e3d6c56 180 Return XML_TOK_NONE when ptr == eptr; nextTokPtr will not be set.
andrewbonney 0:07919e3d6c56 181
andrewbonney 0:07919e3d6c56 182 Return XML_TOK_PARTIAL when the string does not contain a complete
andrewbonney 0:07919e3d6c56 183 token; nextTokPtr will not be set.
andrewbonney 0:07919e3d6c56 184
andrewbonney 0:07919e3d6c56 185 Return XML_TOK_INVALID when the string does not start a valid
andrewbonney 0:07919e3d6c56 186 token; nextTokPtr will be set to point to the character which made
andrewbonney 0:07919e3d6c56 187 the token invalid.
andrewbonney 0:07919e3d6c56 188
andrewbonney 0:07919e3d6c56 189 Otherwise the string starts with a valid token; nextTokPtr will be
andrewbonney 0:07919e3d6c56 190 set to point to the character following the end of that token.
andrewbonney 0:07919e3d6c56 191
andrewbonney 0:07919e3d6c56 192 Each data character counts as a single token, but adjacent data
andrewbonney 0:07919e3d6c56 193 characters may be returned together. Similarly for characters in
andrewbonney 0:07919e3d6c56 194 the prolog outside literals, comments and processing instructions.
andrewbonney 0:07919e3d6c56 195 */
andrewbonney 0:07919e3d6c56 196
andrewbonney 0:07919e3d6c56 197
andrewbonney 0:07919e3d6c56 198 #define XmlTok(enc, state, ptr, end, nextTokPtr) \
andrewbonney 0:07919e3d6c56 199 (((enc)->scanners[state])(enc, ptr, end, nextTokPtr))
andrewbonney 0:07919e3d6c56 200
andrewbonney 0:07919e3d6c56 201 #define XmlPrologTok(enc, ptr, end, nextTokPtr) \
andrewbonney 0:07919e3d6c56 202 XmlTok(enc, XML_PROLOG_STATE, ptr, end, nextTokPtr)
andrewbonney 0:07919e3d6c56 203
andrewbonney 0:07919e3d6c56 204 #define XmlContentTok(enc, ptr, end, nextTokPtr) \
andrewbonney 0:07919e3d6c56 205 XmlTok(enc, XML_CONTENT_STATE, ptr, end, nextTokPtr)
andrewbonney 0:07919e3d6c56 206
andrewbonney 0:07919e3d6c56 207 #define XmlCdataSectionTok(enc, ptr, end, nextTokPtr) \
andrewbonney 0:07919e3d6c56 208 XmlTok(enc, XML_CDATA_SECTION_STATE, ptr, end, nextTokPtr)
andrewbonney 0:07919e3d6c56 209
andrewbonney 0:07919e3d6c56 210 #ifdef XML_DTD
andrewbonney 0:07919e3d6c56 211
andrewbonney 0:07919e3d6c56 212 #define XmlIgnoreSectionTok(enc, ptr, end, nextTokPtr) \
andrewbonney 0:07919e3d6c56 213 XmlTok(enc, XML_IGNORE_SECTION_STATE, ptr, end, nextTokPtr)
andrewbonney 0:07919e3d6c56 214
andrewbonney 0:07919e3d6c56 215 #endif /* XML_DTD */
andrewbonney 0:07919e3d6c56 216
andrewbonney 0:07919e3d6c56 217 /* This is used for performing a 2nd-level tokenization on the content
andrewbonney 0:07919e3d6c56 218 of a literal that has already been returned by XmlTok.
andrewbonney 0:07919e3d6c56 219 */
andrewbonney 0:07919e3d6c56 220 #define XmlLiteralTok(enc, literalType, ptr, end, nextTokPtr) \
andrewbonney 0:07919e3d6c56 221 (((enc)->literalScanners[literalType])(enc, ptr, end, nextTokPtr))
andrewbonney 0:07919e3d6c56 222
andrewbonney 0:07919e3d6c56 223 #define XmlAttributeValueTok(enc, ptr, end, nextTokPtr) \
andrewbonney 0:07919e3d6c56 224 XmlLiteralTok(enc, XML_ATTRIBUTE_VALUE_LITERAL, ptr, end, nextTokPtr)
andrewbonney 0:07919e3d6c56 225
andrewbonney 0:07919e3d6c56 226 #define XmlEntityValueTok(enc, ptr, end, nextTokPtr) \
andrewbonney 0:07919e3d6c56 227 XmlLiteralTok(enc, XML_ENTITY_VALUE_LITERAL, ptr, end, nextTokPtr)
andrewbonney 0:07919e3d6c56 228
andrewbonney 0:07919e3d6c56 229 #define XmlSameName(enc, ptr1, ptr2) (((enc)->sameName)(enc, ptr1, ptr2))
andrewbonney 0:07919e3d6c56 230
andrewbonney 0:07919e3d6c56 231 #define XmlNameMatchesAscii(enc, ptr1, end1, ptr2) \
andrewbonney 0:07919e3d6c56 232 (((enc)->nameMatchesAscii)(enc, ptr1, end1, ptr2))
andrewbonney 0:07919e3d6c56 233
andrewbonney 0:07919e3d6c56 234 #define XmlNameLength(enc, ptr) \
andrewbonney 0:07919e3d6c56 235 (((enc)->nameLength)(enc, ptr))
andrewbonney 0:07919e3d6c56 236
andrewbonney 0:07919e3d6c56 237 #define XmlSkipS(enc, ptr) \
andrewbonney 0:07919e3d6c56 238 (((enc)->skipS)(enc, ptr))
andrewbonney 0:07919e3d6c56 239
andrewbonney 0:07919e3d6c56 240 #define XmlGetAttributes(enc, ptr, attsMax, atts) \
andrewbonney 0:07919e3d6c56 241 (((enc)->getAtts)(enc, ptr, attsMax, atts))
andrewbonney 0:07919e3d6c56 242
andrewbonney 0:07919e3d6c56 243 #define XmlCharRefNumber(enc, ptr) \
andrewbonney 0:07919e3d6c56 244 (((enc)->charRefNumber)(enc, ptr))
andrewbonney 0:07919e3d6c56 245
andrewbonney 0:07919e3d6c56 246 #define XmlPredefinedEntityName(enc, ptr, end) \
andrewbonney 0:07919e3d6c56 247 (((enc)->predefinedEntityName)(enc, ptr, end))
andrewbonney 0:07919e3d6c56 248
andrewbonney 0:07919e3d6c56 249 #define XmlUpdatePosition(enc, ptr, end, pos) \
andrewbonney 0:07919e3d6c56 250 (((enc)->updatePosition)(enc, ptr, end, pos))
andrewbonney 0:07919e3d6c56 251
andrewbonney 0:07919e3d6c56 252 #define XmlIsPublicId(enc, ptr, end, badPtr) \
andrewbonney 0:07919e3d6c56 253 (((enc)->isPublicId)(enc, ptr, end, badPtr))
andrewbonney 0:07919e3d6c56 254
andrewbonney 0:07919e3d6c56 255 #define XmlUtf8Convert(enc, fromP, fromLim, toP, toLim) \
andrewbonney 0:07919e3d6c56 256 (((enc)->utf8Convert)(enc, fromP, fromLim, toP, toLim))
andrewbonney 0:07919e3d6c56 257
andrewbonney 0:07919e3d6c56 258 #define XmlUtf16Convert(enc, fromP, fromLim, toP, toLim) \
andrewbonney 0:07919e3d6c56 259 (((enc)->utf16Convert)(enc, fromP, fromLim, toP, toLim))
andrewbonney 0:07919e3d6c56 260
andrewbonney 0:07919e3d6c56 261 typedef struct {
andrewbonney 0:07919e3d6c56 262 ENCODING initEnc;
andrewbonney 0:07919e3d6c56 263 const ENCODING **encPtr;
andrewbonney 0:07919e3d6c56 264 } INIT_ENCODING;
andrewbonney 0:07919e3d6c56 265
andrewbonney 0:07919e3d6c56 266 int XmlParseXmlDecl(int isGeneralTextEntity,
andrewbonney 0:07919e3d6c56 267 const ENCODING *enc,
andrewbonney 0:07919e3d6c56 268 const char *ptr,
andrewbonney 0:07919e3d6c56 269 const char *end,
andrewbonney 0:07919e3d6c56 270 const char **badPtr,
andrewbonney 0:07919e3d6c56 271 const char **versionPtr,
andrewbonney 0:07919e3d6c56 272 const char **versionEndPtr,
andrewbonney 0:07919e3d6c56 273 const char **encodingNamePtr,
andrewbonney 0:07919e3d6c56 274 const ENCODING **namedEncodingPtr,
andrewbonney 0:07919e3d6c56 275 int *standalonePtr);
andrewbonney 0:07919e3d6c56 276
andrewbonney 0:07919e3d6c56 277 int XmlInitEncoding(INIT_ENCODING *, const ENCODING **, const char *name);
andrewbonney 0:07919e3d6c56 278 const ENCODING *XmlGetUtf8InternalEncoding(void);
andrewbonney 0:07919e3d6c56 279 const ENCODING *XmlGetUtf16InternalEncoding(void);
andrewbonney 0:07919e3d6c56 280 int FASTCALL XmlUtf8Encode(int charNumber, char *buf);
andrewbonney 0:07919e3d6c56 281 int FASTCALL XmlUtf16Encode(int charNumber, unsigned short *buf);
andrewbonney 0:07919e3d6c56 282 int XmlSizeOfUnknownEncoding(void);
andrewbonney 0:07919e3d6c56 283
andrewbonney 0:07919e3d6c56 284
andrewbonney 0:07919e3d6c56 285 typedef int (XMLCALL *CONVERTER) (void *userData, const char *p);
andrewbonney 0:07919e3d6c56 286
andrewbonney 0:07919e3d6c56 287 ENCODING *
andrewbonney 0:07919e3d6c56 288 XmlInitUnknownEncoding(void *mem,
andrewbonney 0:07919e3d6c56 289 int *table,
andrewbonney 0:07919e3d6c56 290 CONVERTER convert,
andrewbonney 0:07919e3d6c56 291 void *userData);
andrewbonney 0:07919e3d6c56 292
andrewbonney 0:07919e3d6c56 293 int XmlParseXmlDeclNS(int isGeneralTextEntity,
andrewbonney 0:07919e3d6c56 294 const ENCODING *enc,
andrewbonney 0:07919e3d6c56 295 const char *ptr,
andrewbonney 0:07919e3d6c56 296 const char *end,
andrewbonney 0:07919e3d6c56 297 const char **badPtr,
andrewbonney 0:07919e3d6c56 298 const char **versionPtr,
andrewbonney 0:07919e3d6c56 299 const char **versionEndPtr,
andrewbonney 0:07919e3d6c56 300 const char **encodingNamePtr,
andrewbonney 0:07919e3d6c56 301 const ENCODING **namedEncodingPtr,
andrewbonney 0:07919e3d6c56 302 int *standalonePtr);
andrewbonney 0:07919e3d6c56 303
andrewbonney 0:07919e3d6c56 304 int XmlInitEncodingNS(INIT_ENCODING *, const ENCODING **, const char *name);
andrewbonney 0:07919e3d6c56 305 const ENCODING *XmlGetUtf8InternalEncodingNS(void);
andrewbonney 0:07919e3d6c56 306 const ENCODING *XmlGetUtf16InternalEncodingNS(void);
andrewbonney 0:07919e3d6c56 307 ENCODING *
andrewbonney 0:07919e3d6c56 308 XmlInitUnknownEncodingNS(void *mem,
andrewbonney 0:07919e3d6c56 309 int *table,
andrewbonney 0:07919e3d6c56 310 CONVERTER convert,
andrewbonney 0:07919e3d6c56 311 void *userData);
andrewbonney 0:07919e3d6c56 312 #ifdef __cplusplus
andrewbonney 0:07919e3d6c56 313 }
andrewbonney 0:07919e3d6c56 314 #endif
andrewbonney 0:07919e3d6c56 315
andrewbonney 0:07919e3d6c56 316 #endif /* not XmlTok_INCLUDED */