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