Home | History | Annotate | Line # | Download | only in lib
xmltok_ns.c revision 1.1.1.1.4.2
      1  1.1.1.1.4.2  yamt /* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
      2  1.1.1.1.4.2  yamt    See the file COPYING for copying permission.
      3  1.1.1.1.4.2  yamt */
      4  1.1.1.1.4.2  yamt 
      5  1.1.1.1.4.2  yamt /* This file is included! */
      6  1.1.1.1.4.2  yamt #ifdef XML_TOK_NS_C
      7  1.1.1.1.4.2  yamt 
      8  1.1.1.1.4.2  yamt const ENCODING *
      9  1.1.1.1.4.2  yamt NS(XmlGetUtf8InternalEncoding)(void)
     10  1.1.1.1.4.2  yamt {
     11  1.1.1.1.4.2  yamt   return &ns(internal_utf8_encoding).enc;
     12  1.1.1.1.4.2  yamt }
     13  1.1.1.1.4.2  yamt 
     14  1.1.1.1.4.2  yamt const ENCODING *
     15  1.1.1.1.4.2  yamt NS(XmlGetUtf16InternalEncoding)(void)
     16  1.1.1.1.4.2  yamt {
     17  1.1.1.1.4.2  yamt #if BYTEORDER == 1234
     18  1.1.1.1.4.2  yamt   return &ns(internal_little2_encoding).enc;
     19  1.1.1.1.4.2  yamt #elif BYTEORDER == 4321
     20  1.1.1.1.4.2  yamt   return &ns(internal_big2_encoding).enc;
     21  1.1.1.1.4.2  yamt #else
     22  1.1.1.1.4.2  yamt   const short n = 1;
     23  1.1.1.1.4.2  yamt   return (*(const char *)&n
     24  1.1.1.1.4.2  yamt           ? &ns(internal_little2_encoding).enc
     25  1.1.1.1.4.2  yamt           : &ns(internal_big2_encoding).enc);
     26  1.1.1.1.4.2  yamt #endif
     27  1.1.1.1.4.2  yamt }
     28  1.1.1.1.4.2  yamt 
     29  1.1.1.1.4.2  yamt static const ENCODING * const NS(encodings)[] = {
     30  1.1.1.1.4.2  yamt   &ns(latin1_encoding).enc,
     31  1.1.1.1.4.2  yamt   &ns(ascii_encoding).enc,
     32  1.1.1.1.4.2  yamt   &ns(utf8_encoding).enc,
     33  1.1.1.1.4.2  yamt   &ns(big2_encoding).enc,
     34  1.1.1.1.4.2  yamt   &ns(big2_encoding).enc,
     35  1.1.1.1.4.2  yamt   &ns(little2_encoding).enc,
     36  1.1.1.1.4.2  yamt   &ns(utf8_encoding).enc /* NO_ENC */
     37  1.1.1.1.4.2  yamt };
     38  1.1.1.1.4.2  yamt 
     39  1.1.1.1.4.2  yamt static int PTRCALL
     40  1.1.1.1.4.2  yamt NS(initScanProlog)(const ENCODING *enc, const char *ptr, const char *end,
     41  1.1.1.1.4.2  yamt                    const char **nextTokPtr)
     42  1.1.1.1.4.2  yamt {
     43  1.1.1.1.4.2  yamt   return initScan(NS(encodings), (const INIT_ENCODING *)enc,
     44  1.1.1.1.4.2  yamt                   XML_PROLOG_STATE, ptr, end, nextTokPtr);
     45  1.1.1.1.4.2  yamt }
     46  1.1.1.1.4.2  yamt 
     47  1.1.1.1.4.2  yamt static int PTRCALL
     48  1.1.1.1.4.2  yamt NS(initScanContent)(const ENCODING *enc, const char *ptr, const char *end,
     49  1.1.1.1.4.2  yamt                     const char **nextTokPtr)
     50  1.1.1.1.4.2  yamt {
     51  1.1.1.1.4.2  yamt   return initScan(NS(encodings), (const INIT_ENCODING *)enc,
     52  1.1.1.1.4.2  yamt                   XML_CONTENT_STATE, ptr, end, nextTokPtr);
     53  1.1.1.1.4.2  yamt }
     54  1.1.1.1.4.2  yamt 
     55  1.1.1.1.4.2  yamt int
     56  1.1.1.1.4.2  yamt NS(XmlInitEncoding)(INIT_ENCODING *p, const ENCODING **encPtr,
     57  1.1.1.1.4.2  yamt                     const char *name)
     58  1.1.1.1.4.2  yamt {
     59  1.1.1.1.4.2  yamt   int i = getEncodingIndex(name);
     60  1.1.1.1.4.2  yamt   if (i == UNKNOWN_ENC)
     61  1.1.1.1.4.2  yamt     return 0;
     62  1.1.1.1.4.2  yamt   SET_INIT_ENC_INDEX(p, i);
     63  1.1.1.1.4.2  yamt   p->initEnc.scanners[XML_PROLOG_STATE] = NS(initScanProlog);
     64  1.1.1.1.4.2  yamt   p->initEnc.scanners[XML_CONTENT_STATE] = NS(initScanContent);
     65  1.1.1.1.4.2  yamt   p->initEnc.updatePosition = initUpdatePosition;
     66  1.1.1.1.4.2  yamt   p->encPtr = encPtr;
     67  1.1.1.1.4.2  yamt   *encPtr = &(p->initEnc);
     68  1.1.1.1.4.2  yamt   return 1;
     69  1.1.1.1.4.2  yamt }
     70  1.1.1.1.4.2  yamt 
     71  1.1.1.1.4.2  yamt static const ENCODING *
     72  1.1.1.1.4.2  yamt NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end)
     73  1.1.1.1.4.2  yamt {
     74  1.1.1.1.4.2  yamt #define ENCODING_MAX 128
     75  1.1.1.1.4.2  yamt   char buf[ENCODING_MAX];
     76  1.1.1.1.4.2  yamt   char *p = buf;
     77  1.1.1.1.4.2  yamt   int i;
     78  1.1.1.1.4.2  yamt   XmlUtf8Convert(enc, &ptr, end, &p, p + ENCODING_MAX - 1);
     79  1.1.1.1.4.2  yamt   if (ptr != end)
     80  1.1.1.1.4.2  yamt     return 0;
     81  1.1.1.1.4.2  yamt   *p = 0;
     82  1.1.1.1.4.2  yamt   if (streqci(buf, KW_UTF_16) && enc->minBytesPerChar == 2)
     83  1.1.1.1.4.2  yamt     return enc;
     84  1.1.1.1.4.2  yamt   i = getEncodingIndex(buf);
     85  1.1.1.1.4.2  yamt   if (i == UNKNOWN_ENC)
     86  1.1.1.1.4.2  yamt     return 0;
     87  1.1.1.1.4.2  yamt   return NS(encodings)[i];
     88  1.1.1.1.4.2  yamt }
     89  1.1.1.1.4.2  yamt 
     90  1.1.1.1.4.2  yamt int
     91  1.1.1.1.4.2  yamt NS(XmlParseXmlDecl)(int isGeneralTextEntity,
     92  1.1.1.1.4.2  yamt                     const ENCODING *enc,
     93  1.1.1.1.4.2  yamt                     const char *ptr,
     94  1.1.1.1.4.2  yamt                     const char *end,
     95  1.1.1.1.4.2  yamt                     const char **badPtr,
     96  1.1.1.1.4.2  yamt                     const char **versionPtr,
     97  1.1.1.1.4.2  yamt                     const char **versionEndPtr,
     98  1.1.1.1.4.2  yamt                     const char **encodingName,
     99  1.1.1.1.4.2  yamt                     const ENCODING **encoding,
    100  1.1.1.1.4.2  yamt                     int *standalone)
    101  1.1.1.1.4.2  yamt {
    102  1.1.1.1.4.2  yamt   return doParseXmlDecl(NS(findEncoding),
    103  1.1.1.1.4.2  yamt                         isGeneralTextEntity,
    104  1.1.1.1.4.2  yamt                         enc,
    105  1.1.1.1.4.2  yamt                         ptr,
    106  1.1.1.1.4.2  yamt                         end,
    107  1.1.1.1.4.2  yamt                         badPtr,
    108  1.1.1.1.4.2  yamt                         versionPtr,
    109  1.1.1.1.4.2  yamt                         versionEndPtr,
    110  1.1.1.1.4.2  yamt                         encodingName,
    111  1.1.1.1.4.2  yamt                         encoding,
    112  1.1.1.1.4.2  yamt                         standalone);
    113  1.1.1.1.4.2  yamt }
    114  1.1.1.1.4.2  yamt 
    115  1.1.1.1.4.2  yamt #endif /* XML_TOK_NS_C */
    116