symbian-qemu-0.9.1-12/python-2.6.1/Modules/expat/xmltok_ns.c
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 const ENCODING *
       
     2 NS(XmlGetUtf8InternalEncoding)(void)
       
     3 {
       
     4   return &ns(internal_utf8_encoding).enc;
       
     5 }
       
     6 
       
     7 const ENCODING *
       
     8 NS(XmlGetUtf16InternalEncoding)(void)
       
     9 {
       
    10 #if BYTEORDER == 1234
       
    11   return &ns(internal_little2_encoding).enc;
       
    12 #elif BYTEORDER == 4321
       
    13   return &ns(internal_big2_encoding).enc;
       
    14 #else
       
    15   const short n = 1;
       
    16   return (*(const char *)&n
       
    17           ? &ns(internal_little2_encoding).enc
       
    18           : &ns(internal_big2_encoding).enc);
       
    19 #endif
       
    20 }
       
    21 
       
    22 static const ENCODING * const NS(encodings)[] = {
       
    23   &ns(latin1_encoding).enc,
       
    24   &ns(ascii_encoding).enc,
       
    25   &ns(utf8_encoding).enc,
       
    26   &ns(big2_encoding).enc,
       
    27   &ns(big2_encoding).enc,
       
    28   &ns(little2_encoding).enc,
       
    29   &ns(utf8_encoding).enc /* NO_ENC */
       
    30 };
       
    31 
       
    32 static int PTRCALL
       
    33 NS(initScanProlog)(const ENCODING *enc, const char *ptr, const char *end,
       
    34                    const char **nextTokPtr)
       
    35 {
       
    36   return initScan(NS(encodings), (const INIT_ENCODING *)enc,
       
    37                   XML_PROLOG_STATE, ptr, end, nextTokPtr);
       
    38 }
       
    39 
       
    40 static int PTRCALL
       
    41 NS(initScanContent)(const ENCODING *enc, const char *ptr, const char *end,
       
    42                     const char **nextTokPtr)
       
    43 {
       
    44   return initScan(NS(encodings), (const INIT_ENCODING *)enc,
       
    45                   XML_CONTENT_STATE, ptr, end, nextTokPtr);
       
    46 }
       
    47 
       
    48 int
       
    49 NS(XmlInitEncoding)(INIT_ENCODING *p, const ENCODING **encPtr,
       
    50                     const char *name)
       
    51 {
       
    52   int i = getEncodingIndex(name);
       
    53   if (i == UNKNOWN_ENC)
       
    54     return 0;
       
    55   SET_INIT_ENC_INDEX(p, i);
       
    56   p->initEnc.scanners[XML_PROLOG_STATE] = NS(initScanProlog);
       
    57   p->initEnc.scanners[XML_CONTENT_STATE] = NS(initScanContent);
       
    58   p->initEnc.updatePosition = initUpdatePosition;
       
    59   p->encPtr = encPtr;
       
    60   *encPtr = &(p->initEnc);
       
    61   return 1;
       
    62 }
       
    63 
       
    64 static const ENCODING *
       
    65 NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end)
       
    66 {
       
    67 #define ENCODING_MAX 128
       
    68   char buf[ENCODING_MAX];
       
    69   char *p = buf;
       
    70   int i;
       
    71   XmlUtf8Convert(enc, &ptr, end, &p, p + ENCODING_MAX - 1);
       
    72   if (ptr != end)
       
    73     return 0;
       
    74   *p = 0;
       
    75   if (streqci(buf, KW_UTF_16) && enc->minBytesPerChar == 2)
       
    76     return enc;
       
    77   i = getEncodingIndex(buf);
       
    78   if (i == UNKNOWN_ENC)
       
    79     return 0;
       
    80   return NS(encodings)[i];
       
    81 }
       
    82 
       
    83 int
       
    84 NS(XmlParseXmlDecl)(int isGeneralTextEntity,
       
    85                     const ENCODING *enc,
       
    86                     const char *ptr,
       
    87                     const char *end,
       
    88                     const char **badPtr,
       
    89                     const char **versionPtr,
       
    90                     const char **versionEndPtr,
       
    91                     const char **encodingName,
       
    92                     const ENCODING **encoding,
       
    93                     int *standalone)
       
    94 {
       
    95   return doParseXmlDecl(NS(findEncoding),
       
    96                         isGeneralTextEntity,
       
    97                         enc,
       
    98                         ptr,
       
    99                         end,
       
   100                         badPtr,
       
   101                         versionPtr,
       
   102                         versionEndPtr,
       
   103                         encodingName,
       
   104                         encoding,
       
   105                         standalone);
       
   106 }