Annotation of embedaddon/expat/lib/xmltok_ns.c, revision 1.1

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>