|
| #define | AS_NORMAL_ENCODING(enc) ((const struct normal_encoding *) (enc)) |
| |
| #define | AS_UNKNOWN_ENCODING(enc) ((const struct unknown_encoding *) (enc)) |
| |
| #define | BIG2_BYTE_TO_ASCII(enc, p) ((p)[0] == 0 ? (p)[1] : -1) |
| |
| #define | BIG2_BYTE_TYPE(enc, p) |
| |
| #define | BIG2_CHAR_MATCHES(enc, p, c) ((p)[0] == 0 && (p)[1] == c) |
| |
| #define | BIG2_IS_NAME_CHAR_MINBPC(enc, p) UCS2_GET_NAMING(namePages, (unsigned char)p[0], (unsigned char)p[1]) |
| |
| #define | BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p) UCS2_GET_NAMING(nmstrtPages, (unsigned char)p[0], (unsigned char)p[1]) |
| |
| #define | BT_COLON BT_NMSTRT |
| |
| #define | BT_COLON BT_NMSTRT |
| |
| #define | BT_COLON BT_NMSTRT |
| |
| #define | BT_COLON BT_NMSTRT |
| |
| #define | BT_COLON BT_NMSTRT |
| |
| #define | BT_COLON BT_NMSTRT |
| |
| #define | BT_COLON BT_NMSTRT |
| |
| #define | BT_COLON BT_NMSTRT |
| |
| #define | BYTE_TO_ASCII(enc, p) (*(p)) |
| |
| #define | BYTE_TO_ASCII(enc, p) LITTLE2_BYTE_TO_ASCII(enc, p) |
| |
| #define | BYTE_TO_ASCII(enc, p) BIG2_BYTE_TO_ASCII(enc, p) |
| |
| #define | BYTE_TYPE(enc, p) SB_BYTE_TYPE(enc, p) |
| |
| #define | BYTE_TYPE(enc, p) LITTLE2_BYTE_TYPE(enc, p) |
| |
| #define | BYTE_TYPE(enc, p) BIG2_BYTE_TYPE(enc, p) |
| |
| #define | CHAR_MATCHES(enc, p, c) (*(p) == c) |
| |
| #define | CHAR_MATCHES(enc, p, c) LITTLE2_CHAR_MATCHES(enc, p, c) |
| |
| #define | CHAR_MATCHES(enc, p, c) BIG2_CHAR_MATCHES(enc, p, c) |
| |
| #define | DEFINE_UTF16_TO_UTF16(E) |
| |
| #define | DEFINE_UTF16_TO_UTF8(E) |
| |
| #define | GET_HI(ptr) ((unsigned char)(ptr)[1]) |
| |
| #define | GET_HI(ptr) ((unsigned char)(ptr)[0]) |
| |
| #define | GET_LO(ptr) ((unsigned char)(ptr)[0]) |
| |
| #define | GET_LO(ptr) ((unsigned char)(ptr)[1]) |
| |
| #define | IGNORE_SECTION_TOK_VTABLE /* as nothing */ |
| |
| #define | INIT_ENC_INDEX(enc) ((int)(enc)->initEnc.isUtf16) |
| |
| #define | IS_INVALID_CHAR(enc, p, n) (AS_NORMAL_ENCODING(enc)->isInvalid ## n(enc, p)) |
| |
| #define | IS_NAME_CHAR(enc, p, n) (AS_NORMAL_ENCODING(enc)->isName ## n(enc, p)) |
| |
| #define | IS_NAME_CHAR(enc, p, n) 0 |
| |
| #define | IS_NAME_CHAR(enc, p, n) 0 |
| |
| #define | IS_NAME_CHAR_MINBPC(enc, p) (0) |
| |
| #define | IS_NAME_CHAR_MINBPC(enc, p) LITTLE2_IS_NAME_CHAR_MINBPC(enc, p) |
| |
| #define | IS_NAME_CHAR_MINBPC(enc, p) BIG2_IS_NAME_CHAR_MINBPC(enc, p) |
| |
| #define | IS_NMSTRT_CHAR(enc, p, n) (AS_NORMAL_ENCODING(enc)->isNmstrt ## n(enc, p)) |
| |
| #define | IS_NMSTRT_CHAR(enc, p, n) (0) |
| |
| #define | IS_NMSTRT_CHAR(enc, p, n) (0) |
| |
| #define | IS_NMSTRT_CHAR_MINBPC(enc, p) (0) |
| |
| #define | IS_NMSTRT_CHAR_MINBPC(enc, p) LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p) |
| |
| #define | IS_NMSTRT_CHAR_MINBPC(enc, p) BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p) |
| |
| #define | LITTLE2_BYTE_TO_ASCII(enc, p) ((p)[1] == 0 ? (p)[0] : -1) |
| |
| #define | LITTLE2_BYTE_TYPE(enc, p) |
| |
| #define | LITTLE2_CHAR_MATCHES(enc, p, c) ((p)[1] == 0 && (p)[0] == c) |
| |
| #define | LITTLE2_IS_NAME_CHAR_MINBPC(enc, p) UCS2_GET_NAMING(namePages, (unsigned char)p[1], (unsigned char)p[0]) |
| |
| #define | LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p) UCS2_GET_NAMING(nmstrtPages, (unsigned char)p[1], (unsigned char)p[0]) |
| |
| #define | MINBPC(enc) 1 |
| |
| #define | MINBPC(enc) 2 |
| |
| #define | MINBPC(enc) 2 |
| |
| #define | NORMAL_VTABLE(E) |
| |
| #define | NS(x) x |
| |
| #define | ns(x) x |
| |
| #define | PREFIX(ident) normal_ ## ident |
| |
| #define | PREFIX(ident) little2_ ## ident |
| |
| #define | PREFIX(ident) big2_ ## ident |
| |
| #define | SB_BYTE_TYPE(enc, p) (((struct normal_encoding *)(enc))->type[(unsigned char)*(p)]) |
| |
| #define | SET2(ptr, ch) (((ptr)[0] = ((ch) & 0xff)), ((ptr)[1] = ((ch) >> 8))) |
| |
| #define | SET2(ptr, ch) (((ptr)[0] = ((ch) >> 8)), ((ptr)[1] = ((ch) & 0xFF))) |
| |
| #define | SET_INIT_ENC_INDEX(enc, i) ((enc)->initEnc.isUtf16 = (char)i) |
| |
| #define | STANDARD_VTABLE(E) /* as nothing */ |
| |
| #define | UCS2_GET_NAMING(pages, hi, lo) (namingBitmap[(pages[hi] << 3) + ((lo) >> 5)] & (1 << ((lo) & 0x1F))) |
| |
| #define | UTF8_GET_NAMING(pages, p, n) |
| |
| #define | UTF8_GET_NAMING2(pages, byte) |
| |
| #define | UTF8_GET_NAMING3(pages, byte) |
| |
| #define | UTF8_INVALID2(p) ((*p) < 0xC2 || ((p)[1] & 0x80) == 0 || ((p)[1] & 0xC0) == 0xC0) |
| |
| #define | UTF8_INVALID3(p) |
| |
| #define | UTF8_INVALID4(p) |
| |
| #define | utf8_isName4 isNever |
| |
| #define | utf8_isNmstrt4 isNever |
| |
| #define | VTABLE VTABLE1, PREFIX(toUtf8), PREFIX(toUtf16) |
| |
| #define | VTABLE1 |
| |
| #define | XML_TOK_IMPL_C |
| |
| #define | XML_TOK_IMPL_C |
| |
| #define | XML_TOK_IMPL_C |
| |
| #define | XML_TOK_NS_C |
| |
|
| static void PTRCALL | ascii_toUtf8 (const ENCODING *enc, const char **fromP, const char *fromLim, char **toP, const char *toLim) |
| |
| static int FASTCALL | checkCharRefNumber (int) |
| |
| static int | doParseXmlDecl (const ENCODING *(*encodingFinder)(const ENCODING *, const char *, const char *), int isGeneralTextEntity, const ENCODING *enc, const char *ptr, const char *end, const char **badPtr, const char **versionPtr, const char **versionEndPtr, const char **encodingName, const ENCODING **encoding, int *standalone) |
| |
| static int FASTCALL | getEncodingIndex (const char *name) |
| |
| static int | initScan (const ENCODING *const *encodingTable, const INIT_ENCODING *enc, int state, const char *ptr, const char *end, const char **nextTokPtr) |
| |
| static void PTRCALL | initUpdatePosition (const ENCODING *enc, const char *ptr, const char *end, POSITION *pos) |
| |
| static int PTRFASTCALL | isNever (const ENCODING *enc, const char *p) |
| |
| static int FASTCALL | isSpace (int c) |
| |
| static void PTRCALL | latin1_toUtf16 (const ENCODING *enc, const char **fromP, const char *fromLim, unsigned short **toP, const unsigned short *toLim) |
| |
| static void PTRCALL | latin1_toUtf8 (const ENCODING *enc, const char **fromP, const char *fromLim, char **toP, const char *toLim) |
| |
| static int | parsePseudoAttribute (const ENCODING *enc, const char *ptr, const char *end, const char **namePtr, const char **nameEndPtr, const char **valPtr, const char **nextTokPtr) |
| |
| static int FASTCALL | streqci (const char *s1, const char *s2) |
| |
| static int | toAscii (const ENCODING *enc, const char *ptr, const char *end) |
| |
| static int PTRFASTCALL | unicode_byte_type (char hi, char lo) |
| |
| static int PTRFASTCALL | unknown_isInvalid (const ENCODING *enc, const char *p) |
| |
| static int PTRFASTCALL | unknown_isName (const ENCODING *enc, const char *p) |
| |
| static int PTRFASTCALL | unknown_isNmstrt (const ENCODING *enc, const char *p) |
| |
| static void PTRCALL | unknown_toUtf16 (const ENCODING *enc, const char **fromP, const char *fromLim, unsigned short **toP, const unsigned short *toLim) |
| |
| static void PTRCALL | unknown_toUtf8 (const ENCODING *enc, const char **fromP, const char *fromLim, char **toP, const char *toLim) |
| |
| static int PTRFASTCALL | utf8_isInvalid2 (const ENCODING *enc, const char *p) |
| |
| static int PTRFASTCALL | utf8_isInvalid3 (const ENCODING *enc, const char *p) |
| |
| static int PTRFASTCALL | utf8_isInvalid4 (const ENCODING *enc, const char *p) |
| |
| static int PTRFASTCALL | utf8_isName2 (const ENCODING *enc, const char *p) |
| |
| static int PTRFASTCALL | utf8_isName3 (const ENCODING *enc, const char *p) |
| |
| static int PTRFASTCALL | utf8_isNmstrt2 (const ENCODING *enc, const char *p) |
| |
| static int PTRFASTCALL | utf8_isNmstrt3 (const ENCODING *enc, const char *p) |
| |
| static void PTRCALL | utf8_toUtf16 (const ENCODING *enc, const char **fromP, const char *fromLim, unsigned short **toP, const unsigned short *toLim) |
| |
| static void PTRCALL | utf8_toUtf8 (const ENCODING *enc, const char **fromP, const char *fromLim, char **toP, const char *toLim) |
| |
| ENCODING * | XmlInitUnknownEncoding (void *mem, int *table, CONVERTER convert, void *userData) |
| |
| int | XmlSizeOfUnknownEncoding (void) |
| |
| int FASTCALL | XmlUtf16Encode (int charNum, unsigned short *buf) |
| |
| int FASTCALL | XmlUtf8Encode (int c, char *buf) |
| |
| ENCODING * XmlInitUnknownEncoding |
( |
void * |
mem, |
|
|
int * |
table, |
|
|
CONVERTER |
convert, |
|
|
void * |
userData |
|
) |
| |
Definition at line 1351 of file xmltok.cc.
1355{
1356 int i;
1360 for (i = 0; i < 128; i++)
1363 && table[i] != i)
1364 return 0;
1365 for (i = 0; i < 256; i++) {
1366 int c = table[i];
1367 if (c == -1) {
1369
1370 e->
utf16[i] = 0xFFFF;
1373 }
1374 else if (c < 0) {
1375 if (c < -4)
1376 return 0;
1380 }
1381 else if (c < 0x80) {
1384 && c != i)
1385 return 0;
1388 e->
utf8[i][1] = (char)c;
1389 e->
utf16[i] = (
unsigned short)(c == 0 ? 0xFFFF : c);
1390 }
1393
1394 e->
utf16[i] = 0xFFFF;
1397 }
1398 else {
1399 if (c > 0xFFFF)
1400 return 0;
1405 else
1408 e->
utf16[i] = (
unsigned short)c;
1409 }
1410 }
1423 }
1427}
struct normal_encoding normal
static void PTRCALL unknown_toUtf16(const ENCODING *enc, const char **fromP, const char *fromLim, unsigned short **toP, const unsigned short *toLim)
static void PTRCALL unknown_toUtf8(const ENCODING *enc, const char **fromP, const char *fromLim, char **toP, const char *toLim)
static int PTRFASTCALL unknown_isInvalid(const ENCODING *enc, const char *p)
static int PTRFASTCALL unknown_isNmstrt(const ENCODING *enc, const char *p)
static int PTRFASTCALL unknown_isName(const ENCODING *enc, const char *p)
References BT_LEAD2, BT_MALFORM, BT_NAME, BT_NMSTRT, BT_NONXML, BT_OTHER, checkCharRefNumber(), unknown_encoding::convert, normal_encoding::enc, latin1_encoding, namePages, nmstrtPages, unknown_encoding::normal, normal_encoding::type, UCS2_GET_NAMING, unknown_isInvalid(), unknown_isName(), unknown_isNmstrt(), unknown_toUtf16(), unknown_toUtf8(), userData, unknown_encoding::userData, unknown_encoding::utf16, unknown_encoding::utf8, and XmlUtf8Encode().
Referenced by handleUnknownEncoding().