7 #ifdef COMPILED_FROM_DSP 
    9 #elif defined(MACOS_CLASSIC) 
   11 #elif defined(__amigaos4__) 
   13 #elif defined(__WATCOMC__) 
   14 #include "watcomconfig.h" 
   16 #ifdef HAVE_EXPAT_CONFIG_H 
   27 #define IGNORE_SECTION_TOK_VTABLE , PREFIX(ignoreSectionTok) 
   29 #define IGNORE_SECTION_TOK_VTABLE  
   33   { PREFIX(prologTok), PREFIX(contentTok), \ 
   34     PREFIX(cdataSectionTok) IGNORE_SECTION_TOK_VTABLE }, \ 
   35   { PREFIX(attributeValueTok), PREFIX(entityValueTok) }, \ 
   37   PREFIX(nameMatchesAscii), \ 
   41   PREFIX(charRefNumber), \ 
   42   PREFIX(predefinedEntityName), \ 
   43   PREFIX(updatePosition), \ 
   46 #define VTABLE VTABLE1, PREFIX(toUtf8), PREFIX(toUtf16) 
   48 #define UCS2_GET_NAMING(pages, hi, lo) \ 
   49    (namingBitmap[(pages[hi] << 3) + ((lo) >> 5)] & (1 << ((lo) & 0x1F))) 
   55 #define UTF8_GET_NAMING2(pages, byte) \ 
   56     (namingBitmap[((pages)[(((byte)[0]) >> 2) & 7] << 3) \ 
   57                       + ((((byte)[0]) & 3) << 1) \ 
   58                       + ((((byte)[1]) >> 5) & 1)] \ 
   59          & (1 << (((byte)[1]) & 0x1F))) 
   66 #define UTF8_GET_NAMING3(pages, byte) \ 
   67   (namingBitmap[((pages)[((((byte)[0]) & 0xF) << 4) \ 
   68                              + ((((byte)[1]) >> 2) & 0xF)] \ 
   70                       + ((((byte)[1]) & 3) << 1) \ 
   71                       + ((((byte)[2]) >> 5) & 1)] \ 
   72          & (1 << (((byte)[2]) & 0x1F))) 
   74 #define UTF8_GET_NAMING(pages, p, n) \ 
   76   ? UTF8_GET_NAMING2(pages, (const unsigned char *)(p)) \ 
   78      ? UTF8_GET_NAMING3(pages, (const unsigned char *)(p)) \ 
   91 #define UTF8_INVALID2(p) \ 
   92   ((*p) < 0xC2 || ((p)[1] & 0x80) == 0 || ((p)[1] & 0xC0) == 0xC0) 
   94 #define UTF8_INVALID3(p) \ 
   95   (((p)[2] & 0x80) == 0 \ 
   97   ((*p) == 0xEF && (p)[1] == 0xBF \ 
  101     ((p)[2] & 0xC0) == 0xC0) \ 
  105     (p)[1] < 0xA0 || ((p)[1] & 0xC0) == 0xC0 \ 
  107     ((p)[1] & 0x80) == 0 \ 
  109     ((*p) == 0xED ? (p)[1] > 0x9F : ((p)[1] & 0xC0) == 0xC0))) 
  111 #define UTF8_INVALID4(p) \ 
  112   (((p)[3] & 0x80) == 0 || ((p)[3] & 0xC0) == 0xC0 \ 
  114   ((p)[2] & 0x80) == 0 || ((p)[2] & 0xC0) == 0xC0 \ 
  118     (p)[1] < 0x90 || ((p)[1] & 0xC0) == 0xC0 \ 
  120     ((p)[1] & 0x80) == 0 \ 
  122     ((*p) == 0xF4 ? (p)[1] > 0x8F : ((p)[1] & 0xC0) == 0xC0))) 
  125 isNever(
const ENCODING *enc, 
const char *
p)
 
  131 utf8_isName2(
const ENCODING *enc, 
const char *
p)
 
  137 utf8_isName3(
const ENCODING *enc, 
const char *p)
 
  142 #define utf8_isName4 isNever 
  145 utf8_isNmstrt2(
const ENCODING *enc, 
const char *p)
 
  151 utf8_isNmstrt3(
const ENCODING *enc, 
const char *p)
 
  156 #define utf8_isNmstrt4 isNever 
  159 utf8_isInvalid2(
const ENCODING *enc, 
const char *p)
 
  165 utf8_isInvalid3(
const ENCODING *enc, 
const char *p)
 
  171 utf8_isInvalid4(
const ENCODING *enc, 
const char *p)
 
  197 #define AS_NORMAL_ENCODING(enc)   ((const struct normal_encoding *) (enc)) 
  201 #define STANDARD_VTABLE(E) \ 
  210 #define STANDARD_VTABLE(E)  
  214 #define NORMAL_VTABLE(E) \ 
  225 static int FASTCALL checkCharRefNumber(
int);
 
  231 #define sb_isNameMin isNever 
  232 #define sb_isNmstrtMin isNever 
  236 #define MINBPC(enc) ((enc)->minBytesPerChar) 
  239 #define MINBPC(enc) 1 
  242 #define SB_BYTE_TYPE(enc, p) \ 
  243   (((struct normal_encoding *)(enc))->type[(unsigned char)*(p)]) 
  247 sb_byteType(
const ENCODING *enc, 
const char *p)
 
  251 #define BYTE_TYPE(enc, p) \ 
  252  (AS_NORMAL_ENCODING(enc)->byteType(enc, p)) 
  254 #define BYTE_TYPE(enc, p) SB_BYTE_TYPE(enc, p) 
  258 #define BYTE_TO_ASCII(enc, p) \ 
  259  (AS_NORMAL_ENCODING(enc)->byteToAscii(enc, p)) 
  261 sb_byteToAscii(
const ENCODING *enc, 
const char *p)
 
  266 #define BYTE_TO_ASCII(enc, p) (*(p)) 
  269 #define IS_NAME_CHAR(enc, p, n) \ 
  270  (AS_NORMAL_ENCODING(enc)->isName ## n(enc, p)) 
  271 #define IS_NMSTRT_CHAR(enc, p, n) \ 
  272  (AS_NORMAL_ENCODING(enc)->isNmstrt ## n(enc, p)) 
  273 #define IS_INVALID_CHAR(enc, p, n) \ 
  274  (AS_NORMAL_ENCODING(enc)->isInvalid ## n(enc, p)) 
  277 #define IS_NAME_CHAR_MINBPC(enc, p) \ 
  278  (AS_NORMAL_ENCODING(enc)->isNameMin(enc, p)) 
  279 #define IS_NMSTRT_CHAR_MINBPC(enc, p) \ 
  280  (AS_NORMAL_ENCODING(enc)->isNmstrtMin(enc, p)) 
  282 #define IS_NAME_CHAR_MINBPC(enc, p) (0) 
  283 #define IS_NMSTRT_CHAR_MINBPC(enc, p) (0) 
  287 #define CHAR_MATCHES(enc, p, c) \ 
  288  (AS_NORMAL_ENCODING(enc)->charMatches(enc, p, c)) 
  290 sb_charMatches(
const ENCODING *enc, 
const char *p, 
int c)
 
  296 #define CHAR_MATCHES(enc, p, c) (*(p) == c) 
  299 #define PREFIX(ident) normal_ ## ident 
  300 #define XML_TOK_IMPL_C 
  302 #undef XML_TOK_IMPL_C 
  309 #undef IS_NAME_CHAR_MINBPC 
  310 #undef IS_NMSTRT_CHAR 
  311 #undef IS_NMSTRT_CHAR_MINBPC 
  312 #undef IS_INVALID_CHAR 
  323             const char **fromP, 
const char *fromLim,
 
  324             char **toP, 
const char *toLim)
 
  328   if (fromLim - *fromP > toLim - *toP) {
 
  330     for (fromLim = *fromP + (toLim - *toP); fromLim > *fromP; fromLim--)
 
  331       if (((
unsigned char)fromLim[-1] & 0xc0) != 0x80)
 
  334   for (to = *toP, from = *fromP; from != fromLim; from++, to++)
 
  342              const char **fromP, 
const char *fromLim,
 
  343              unsigned short **toP, 
const unsigned short *toLim)
 
  345   unsigned short *to = *toP;
 
  346   const char *from = *fromP;
 
  347   while (from != fromLim && to != toLim) {
 
  350       *to++ = (
unsigned short)(((from[0] & 0x1f) << 6) | (from[1] & 0x3f));
 
  354       *to++ = (
unsigned short)(((from[0] & 0xf) << 12)
 
  355                                | ((from[1] & 0x3f) << 6) | (from[2] & 0x3f));
 
  363         n = ((from[0] & 0x7) << 18) | ((from[1] & 0x3f) << 12)
 
  364             | ((from[2] & 0x3f) << 6) | (from[3] & 0x3f);
 
  366         to[0] = (
unsigned short)((n >> 10) | 0xD800);
 
  367         to[1] = (
unsigned short)((n & 0x3FF) | 0xDC00);
 
  384   { 
VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 },
 
  394   { 
VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 },
 
  396 #define BT_COLON BT_NMSTRT 
  407   { 
VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 },
 
  418   { 
VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 },
 
  420 #define BT_COLON BT_NMSTRT 
  431               char **toP, 
const char *toLim)
 
  435     if (*fromP == fromLim)
 
  437     c = (
unsigned char)**fromP;
 
  439       if (toLim - *toP < 2)
 
  442       *(*toP)++ = (char)((c & 0x3f) | 0x80);
 
  448       *(*toP)++ = *(*fromP)++;
 
  455                const char **fromP, 
const char *fromLim,
 
  456                unsigned short **toP, 
const unsigned short *toLim)
 
  458   while (*fromP != fromLim && *toP != toLim)
 
  459     *(*toP)++ = (
unsigned char)*(*fromP)++;
 
  465   { 
VTABLE1, latin1_toUtf8, latin1_toUtf16, 1, 0, 0 },
 
  476   { 
VTABLE1, latin1_toUtf8, latin1_toUtf16, 1, 0, 0 },
 
  478 #define BT_COLON BT_NMSTRT 
  488              const char **fromP, 
const char *fromLim,
 
  489              char **toP, 
const char *toLim)
 
  491   while (*fromP != fromLim && *toP != toLim)
 
  492     *(*toP)++ = *(*fromP)++;
 
  498   { 
VTABLE1, ascii_toUtf8, latin1_toUtf16, 1, 1, 0 },
 
  509   { 
VTABLE1, ascii_toUtf8, latin1_toUtf16, 1, 1, 0 },
 
  511 #define BT_COLON BT_NMSTRT 
  520 unicode_byte_type(
char hi, 
char lo)
 
  522   switch ((
unsigned char)hi) {
 
  523   case 0xD8: 
case 0xD9: 
case 0xDA: 
case 0xDB:
 
  525   case 0xDC: 
case 0xDD: 
case 0xDE: 
case 0xDF:
 
  528     switch ((
unsigned char)lo) {
 
  538 #define DEFINE_UTF16_TO_UTF8(E) \ 
  539 static void  PTRCALL \ 
  540 E ## toUtf8(const ENCODING *enc, \ 
  541             const char **fromP, const char *fromLim, \ 
  542             char **toP, const char *toLim) \ 
  545   for (from = *fromP; from != fromLim; from += 2) { \ 
  548     unsigned char lo = GET_LO(from); \ 
  549     unsigned char hi = GET_HI(from); \ 
  553         if (*toP == toLim) { \ 
  561     case 0x1: case 0x2: case 0x3: \ 
  562     case 0x4: case 0x5: case 0x6: case 0x7: \ 
  563       if (toLim -  *toP < 2) { \ 
  567       *(*toP)++ = ((lo >> 6) | (hi << 2) |  UTF8_cval2); \ 
  568       *(*toP)++ = ((lo & 0x3f) | 0x80); \ 
  571       if (toLim -  *toP < 3)  { \ 
  576       *(*toP)++ = ((hi >> 4) | UTF8_cval3); \ 
  577       *(*toP)++ = (((hi & 0xf) << 2) | (lo >> 6) | 0x80); \ 
  578       *(*toP)++ = ((lo & 0x3f) | 0x80); \ 
  580     case 0xD8: case 0xD9: case 0xDA: case 0xDB: \ 
  581       if (toLim -  *toP < 4) { \ 
  585       plane = (((hi & 0x3) << 2) | ((lo >> 6) & 0x3)) + 1; \ 
  586       *(*toP)++ = ((plane >> 2) | UTF8_cval4); \ 
  587       *(*toP)++ = (((lo >> 2) & 0xF) | ((plane & 0x3) << 4) | 0x80); \ 
  589       lo2 = GET_LO(from); \ 
  590       *(*toP)++ = (((lo & 0x3) << 4) \ 
  591                    | ((GET_HI(from) & 0x3) << 2) \ 
  594       *(*toP)++ = ((lo2 & 0x3f) | 0x80); \ 
  601 #define DEFINE_UTF16_TO_UTF16(E) \ 
  602 static void  PTRCALL \ 
  603 E ## toUtf16(const ENCODING *enc, \ 
  604              const char **fromP, const char *fromLim, \ 
  605              unsigned short **toP, const unsigned short *toLim) \ 
  608   if (fromLim - *fromP > ((toLim - *toP) << 1) \ 
  609       && (GET_HI(fromLim - 2) & 0xF8) == 0xD8) \ 
  611   for (; *fromP != fromLim && *toP != toLim; *fromP += 2) \ 
  612     *(*toP)++ = (GET_HI(*fromP) << 8) | GET_LO(*fromP); \ 
  615 #define SET2(ptr, ch) \ 
  616   (((ptr)[0] = ((ch) & 0xff)), ((ptr)[1] = ((ch) >> 8))) 
  617 #define GET_LO(ptr) ((unsigned char)(ptr)[0]) 
  618 #define GET_HI(ptr) ((unsigned char)(ptr)[1]) 
  627 #define SET2(ptr, ch) \ 
  628   (((ptr)[0] = ((ch) >> 8)), ((ptr)[1] = ((ch) & 0xFF))) 
  629 #define GET_LO(ptr) ((unsigned char)(ptr)[1]) 
  630 #define GET_HI(ptr) ((unsigned char)(ptr)[0]) 
  639 #define LITTLE2_BYTE_TYPE(enc, p) \ 
  641   ? ((struct normal_encoding *)(enc))->type[(unsigned char)*(p)] \ 
  642   : unicode_byte_type((p)[1], (p)[0])) 
  643 #define LITTLE2_BYTE_TO_ASCII(enc, p) ((p)[1] == 0 ? (p)[0] : -1) 
  644 #define LITTLE2_CHAR_MATCHES(enc, p, c) ((p)[1] == 0 && (p)[0] == c) 
  645 #define LITTLE2_IS_NAME_CHAR_MINBPC(enc, p) \ 
  646   UCS2_GET_NAMING(namePages, (unsigned char)p[1], (unsigned char)p[0]) 
  647 #define LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p) \ 
  648   UCS2_GET_NAMING(nmstrtPages, (unsigned char)p[1], (unsigned char)p[0]) 
  653 little2_byteType(
const ENCODING *enc, 
const char *p)
 
  659 little2_byteToAscii(
const ENCODING *enc, 
const char *p)
 
  665 little2_charMatches(
const ENCODING *enc, 
const char *p, 
int c)
 
  671 little2_isNameMin(
const ENCODING *enc, 
const char *p)
 
  677 little2_isNmstrtMin(
const ENCODING *enc, 
const char *p)
 
  683 #define VTABLE VTABLE1, little2_toUtf8, little2_toUtf16 
  688 #define PREFIX(ident) little2_ ## ident 
  689 #define MINBPC(enc) 2 
  691 #define BYTE_TYPE(enc, p) LITTLE2_BYTE_TYPE(enc, p) 
  692 #define BYTE_TO_ASCII(enc, p) LITTLE2_BYTE_TO_ASCII(enc, p) 
  693 #define CHAR_MATCHES(enc, p, c) LITTLE2_CHAR_MATCHES(enc, p, c) 
  694 #define IS_NAME_CHAR(enc, p, n) 0 
  695 #define IS_NAME_CHAR_MINBPC(enc, p) LITTLE2_IS_NAME_CHAR_MINBPC(enc, p) 
  696 #define IS_NMSTRT_CHAR(enc, p, n) (0) 
  697 #define IS_NMSTRT_CHAR_MINBPC(enc, p) LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p) 
  699 #define XML_TOK_IMPL_C 
  701 #undef XML_TOK_IMPL_C 
  708 #undef IS_NAME_CHAR_MINBPC 
  709 #undef IS_NMSTRT_CHAR 
  710 #undef IS_NMSTRT_CHAR_MINBPC 
  711 #undef IS_INVALID_CHAR 
  719 #if BYTEORDER == 1234 
  736 #if BYTEORDER == 1234 
  743 #define BT_COLON BT_NMSTRT 
  751 #if BYTEORDER != 4321 
  769 #define BT_COLON BT_NMSTRT 
  780 #define BIG2_BYTE_TYPE(enc, p) \ 
  782   ? ((struct normal_encoding *)(enc))->type[(unsigned char)(p)[1]] \ 
  783   : unicode_byte_type((p)[0], (p)[1])) 
  784 #define BIG2_BYTE_TO_ASCII(enc, p) ((p)[0] == 0 ? (p)[1] : -1) 
  785 #define BIG2_CHAR_MATCHES(enc, p, c) ((p)[0] == 0 && (p)[1] == c) 
  786 #define BIG2_IS_NAME_CHAR_MINBPC(enc, p) \ 
  787   UCS2_GET_NAMING(namePages, (unsigned char)p[0], (unsigned char)p[1]) 
  788 #define BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p) \ 
  789   UCS2_GET_NAMING(nmstrtPages, (unsigned char)p[0], (unsigned char)p[1]) 
  794 big2_byteType(
const ENCODING *enc, 
const char *p)
 
  800 big2_byteToAscii(
const ENCODING *enc, 
const char *p)
 
  806 big2_charMatches(
const ENCODING *enc, 
const char *p, 
int c)
 
  812 big2_isNameMin(
const ENCODING *enc, 
const char *p)
 
  818 big2_isNmstrtMin(
const ENCODING *enc, 
const char *p)
 
  824 #define VTABLE VTABLE1, big2_toUtf8, big2_toUtf16 
  829 #define PREFIX(ident) big2_ ## ident 
  830 #define MINBPC(enc) 2 
  832 #define BYTE_TYPE(enc, p) BIG2_BYTE_TYPE(enc, p) 
  833 #define BYTE_TO_ASCII(enc, p) BIG2_BYTE_TO_ASCII(enc, p) 
  834 #define CHAR_MATCHES(enc, p, c) BIG2_CHAR_MATCHES(enc, p, c) 
  835 #define IS_NAME_CHAR(enc, p, n) 0 
  836 #define IS_NAME_CHAR_MINBPC(enc, p) BIG2_IS_NAME_CHAR_MINBPC(enc, p) 
  837 #define IS_NMSTRT_CHAR(enc, p, n) (0) 
  838 #define IS_NMSTRT_CHAR_MINBPC(enc, p) BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p) 
  840 #define XML_TOK_IMPL_C 
  842 #undef XML_TOK_IMPL_C 
  849 #undef IS_NAME_CHAR_MINBPC 
  850 #undef IS_NMSTRT_CHAR 
  851 #undef IS_NMSTRT_CHAR_MINBPC 
  852 #undef IS_INVALID_CHAR 
  860 #if BYTEORDER == 4321 
  877 #if BYTEORDER == 4321 
  884 #define BT_COLON BT_NMSTRT 
  892 #if BYTEORDER != 1234 
  910 #define BT_COLON BT_NMSTRT 
  923 streqci(
const char *s1, 
const char *s2)
 
  930     if (ASCII_a <= c2 && c2 <= 
ASCII_z)
 
  941 initUpdatePosition(
const ENCODING *enc, 
const char *ptr,
 
  944   normal_updatePosition(&utf8_encoding.
enc, ptr, end, pos);
 
  948 toAscii(
const ENCODING *enc, 
const char *ptr, 
const char *end)
 
  976 parsePseudoAttribute(
const ENCODING *enc,
 
  979                      const char **namePtr,
 
  980                      const char **nameEndPtr,
 
  982                      const char **nextTokPtr)
 
  990   if (!isSpace(toAscii(enc, ptr, end))) {
 
  996   } 
while (isSpace(toAscii(enc, ptr, end)));
 
 1003     c = toAscii(enc, ptr, end);
 
 1016       } 
while (isSpace(c = toAscii(enc, ptr, end)));
 
 1025   if (ptr == *namePtr) {
 
 1030   c = toAscii(enc, ptr, end);
 
 1031   while (isSpace(c)) {
 
 1033     c = toAscii(enc, ptr, end);
 
 1043     c = toAscii(enc, ptr, end);
 
 1046     if (!(ASCII_a <= c && c <= 
ASCII_z)
 
 1060 static const char KW_version[] = {
 
 1064 static const char KW_encoding[] = {
 
 1068 static const char KW_standalone[] = {
 
 1073 static const char KW_yes[] = {
 
 1077 static const char KW_no[] = {
 
 1085                int isGeneralTextEntity,
 
 1089                const char **badPtr,
 
 1090                const char **versionPtr,
 
 1091                const char **versionEndPtr,
 
 1092                const char **encodingName,
 
 1096   const char *val = NULL;
 
 1097   const char *
name = NULL;
 
 1098   const char *nameEnd = NULL;
 
 1101   if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)
 
 1107     if (!isGeneralTextEntity) {
 
 1116       *versionEndPtr = ptr;
 
 1117     if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) {
 
 1122       if (isGeneralTextEntity) {
 
 1131     int c = toAscii(enc, val, end);
 
 1137       *encodingName = val;
 
 1140     if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) {
 
 1148       || isGeneralTextEntity) {
 
 1164   while (isSpace(toAscii(enc, ptr, end)))
 
 1174 checkCharRefNumber(
int result)
 
 1176   switch (result >> 8) {
 
 1177   case 0xD8: 
case 0xD9: 
case 0xDA: 
case 0xDB:
 
 1178   case 0xDC: 
case 0xDD: 
case 0xDE: 
case 0xDF:
 
 1185     if (result == 0xFFFE || result == 0xFFFF)
 
 1210     buf[1] = (char)((c & 0x3f) | 0x80);
 
 1215     buf[1] = (char)(((c >> 6) & 0x3f) | 0x80);
 
 1216     buf[2] = (char)((c & 0x3f) | 0x80);
 
 1221     buf[1] = (char)(((c >> 12) & 0x3f) | 0x80);
 
 1222     buf[2] = (char)(((c >> 6) & 0x3f) | 0x80);
 
 1223     buf[3] = (char)((c & 0x3f) | 0x80);
 
 1234   if (charNum < 0x10000) {
 
 1235     buf[0] = (
unsigned short)charNum;
 
 1238   if (charNum < 0x110000) {
 
 1240     buf[0] = (
unsigned short)((charNum >> 10) + 0xD800);
 
 1241     buf[1] = (
unsigned short)((charNum & 0x3FF) + 0xDC00);
 
 1255 #define AS_UNKNOWN_ENCODING(enc)  ((const struct unknown_encoding *) (enc)) 
 1264 unknown_isName(
const ENCODING *enc, 
const char *p)
 
 1274 unknown_isNmstrt(
const ENCODING *enc, 
const char *p)
 
 1284 unknown_isInvalid(
const ENCODING *enc, 
const char *p)
 
 1288   return (c & ~0xFFFF) || checkCharRefNumber(c) < 0;
 
 1292 unknown_toUtf8(
const ENCODING *enc,
 
 1293                const char **fromP, 
const char *fromLim,
 
 1294                char **toP, 
const char *toLim)
 
 1301     if (*fromP == fromLim)
 
 1303     utf8 = uenc->
utf8[(
unsigned char)**fromP];
 
 1308       if (n > toLim - *toP)
 
 1315       if (n > toLim - *toP)
 
 1320       *(*toP)++ = *utf8++;
 
 1326 unknown_toUtf16(
const ENCODING *enc,
 
 1327                 const char **fromP, 
const char *fromLim,
 
 1328                 unsigned short **toP, 
const unsigned short *toLim)
 
 1331   while (*fromP != fromLim && *toP != toLim) {
 
 1332     unsigned short c = uenc->
utf16[(
unsigned char)**fromP];
 
 1334       c = (
unsigned short)
 
 1354     ((
char *)mem)[i] = ((
char *)&latin1_encoding)[i];
 
 1355   for (i = 0; i < 128; i++)
 
 1360   for (i = 0; i < 256; i++) {
 
 1365       e->
utf16[i] = 0xFFFF;
 
 1376     else if (c < 0x80) {
 
 1383       e->
utf8[i][1] = (char)c;
 
 1384       e->
utf16[i] = (
unsigned short)(c == 0 ? 0xFFFF : c);
 
 1386     else if (checkCharRefNumber(c) < 0) {
 
 1389       e->
utf16[i] = 0xFFFF;
 
 1403       e->
utf16[i] = (
unsigned short)c;
 
 1409     e->
normal.isName2 = unknown_isName;
 
 1410     e->
normal.isName3 = unknown_isName;
 
 1411     e->
normal.isName4 = unknown_isName;
 
 1412     e->
normal.isNmstrt2 = unknown_isNmstrt;
 
 1413     e->
normal.isNmstrt3 = unknown_isNmstrt;
 
 1414     e->
normal.isNmstrt4 = unknown_isNmstrt;
 
 1415     e->
normal.isInvalid2 = unknown_isInvalid;
 
 1416     e->
normal.isInvalid3 = unknown_isInvalid;
 
 1417     e->
normal.isInvalid4 = unknown_isInvalid;
 
 1419   e->
normal.
enc.utf8Convert = unknown_toUtf8;
 
 1420   e->
normal.
enc.utf16Convert = unknown_toUtf16;
 
 1438 static const char KW_ISO_8859_1[] = {
 
 1442 static const char KW_US_ASCII[] = {
 
 1446 static const char KW_UTF_8[] =  {
 
 1449 static const char KW_UTF_16[] = {
 
 1452 static const char KW_UTF_16BE[] = {
 
 1456 static const char KW_UTF_16LE[] = {
 
 1462 getEncodingIndex(
const char *name)
 
 1464   static const char * 
const encodingNames[] = {
 
 1475   for (i = 0; i < (
int)(
sizeof(encodingNames)/
sizeof(encodingNames[0])); i++)
 
 1476     if (streqci(name, encodingNames[i]))
 
 1485 #define INIT_ENC_INDEX(enc) ((int)(enc)->initEnc.isUtf16) 
 1486 #define SET_INIT_ENC_INDEX(enc, i) ((enc)->initEnc.isUtf16 = (char)i) 
 1497 initScan(
const ENCODING * 
const *encodingTable,
 
 1502          const char **nextTokPtr)
 
 1509   if (ptr + 1 == end) {
 
 1524     switch ((
unsigned char)*ptr) {
 
 1538     switch (((
unsigned char)ptr[0] << 8) | (
unsigned char)ptr[1]) {
 
 1543       *nextTokPtr = ptr + 2;
 
 1553       return XmlTok(*encPtr, state, ptr, end, nextTokPtr);
 
 1558       *nextTokPtr = ptr + 2;
 
 1577       if ((
unsigned char)ptr[2] == 0xBF) {
 
 1578         *nextTokPtr = ptr + 3;
 
 1584       if (ptr[0] == 
'\0') {
 
 1594         return XmlTok(*encPtr, state, ptr, end, nextTokPtr);
 
 1596       else if (ptr[1] == 
'\0') {
 
 1609         return XmlTok(*encPtr, state, ptr, end, nextTokPtr);
 
 1615   return XmlTok(*encPtr, state, ptr, end, nextTokPtr);
 
 1621 #define XML_TOK_NS_C 
 1629 #define NS(x) x ## NS 
 1630 #define ns(x) x ## _ns 
 1632 #define XML_TOK_NS_C 
#define AS_NORMAL_ENCODING(enc)
 
#define INIT_ENC_INDEX(enc)
 
#define LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p)
 
typedef int(XMLCALL *XML_NotStandaloneHandler)(void *userData)
 
#define LITTLE2_BYTE_TYPE(enc, p)
 
#define SB_BYTE_TYPE(enc, p)
 
#define XmlUtf8Convert(enc, fromP, fromLim, toP, toLim)
 
G4double G4NeutronHPJENDLHEData::G4double result
 
ENCODING * XmlInitUnknownEncodingNS(void *mem, int *table, CONVERTER convert, void *userData)
 
#define UCS2_GET_NAMING(pages, hi, lo)
 
#define UTF8_GET_NAMING2(pages, byte)
 
#define AS_UNKNOWN_ENCODING(enc)
 
#define XML_UTF8_ENCODE_MAX
 
const G4ThreeVector const G4double const
 
int FASTCALL XmlUtf8Encode(int charNumber, char *buf)
 
ENCODING * XmlInitUnknownEncoding(void *mem, int *table, CONVERTER convert, void *userData)
 
#define LITTLE2_BYTE_TO_ASCII(enc, p)
 
#define LITTLE2_CHAR_MATCHES(enc, p, c)
 
#define XmlTok(enc, state, ptr, end, nextTokPtr)
 
int(PTRFASTCALL *isName2)(const ENCODING *
 
int FASTCALL XmlUtf16Encode(int charNumber, unsigned short *buf)
 
#define BIG2_IS_NAME_CHAR_MINBPC(enc, p)
 
#define BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p)
 
#define BIG2_CHAR_MATCHES(enc, p, c)
 
#define BIG2_BYTE_TO_ASCII(enc, p)
 
#define DEFINE_UTF16_TO_UTF8(E)
 
#define XML_CONTENT_STATE
 
#define UTF8_GET_NAMING3(pages, byte)
 
#define XmlNameMatchesAscii(enc, ptr1, end1, ptr2)
 
#define BIG2_BYTE_TYPE(enc, p)
 
struct normal_encoding normal
 
const XML_Char const XML_Char int standalone
 
unsigned short utf16[256]
 
#define LITTLE2_IS_NAME_CHAR_MINBPC(enc, p)
 
#define DEFINE_UTF16_TO_UTF16(E)
 
#define STANDARD_VTABLE(E)
 
int XmlSizeOfUnknownEncoding(void)