1b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
2b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project   See the file COPYING for copying permission.
3b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/
4b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
5b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#ifndef XmlTok_INCLUDED
6b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XmlTok_INCLUDED 1
7b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
8b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#ifdef __cplusplus
9b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectextern "C" {
10b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#endif
11b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
12b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* The following token may be returned by XmlContentTok */
13b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_TRAILING_RSQB -5 /* ] or ]] at the end of the scan; might be
14b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                                    start of illegal ]]> sequence */
15b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* The following tokens may be returned by both XmlPrologTok and
16b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project   XmlContentTok.
17b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/
18b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_NONE -4          /* The string to be scanned is empty */
19b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_TRAILING_CR -3   /* A CR at the end of the scan;
20b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                                    might be part of CRLF sequence */
21b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_PARTIAL_CHAR -2  /* only part of a multibyte sequence */
22b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_PARTIAL -1       /* only part of a token */
23b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_INVALID 0
24b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
25b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* The following tokens are returned by XmlContentTok; some are also
26b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project   returned by XmlAttributeValueTok, XmlEntityTok, XmlCdataSectionTok.
27b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/
28b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_START_TAG_WITH_ATTS 1
29b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_START_TAG_NO_ATTS 2
30b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_EMPTY_ELEMENT_WITH_ATTS 3 /* empty element tag <e/> */
31b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_EMPTY_ELEMENT_NO_ATTS 4
32b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_END_TAG 5
33b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_DATA_CHARS 6
34b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_DATA_NEWLINE 7
35b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_CDATA_SECT_OPEN 8
36b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_ENTITY_REF 9
37b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_CHAR_REF 10               /* numeric character reference */
38b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
39b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* The following tokens may be returned by both XmlPrologTok and
40b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project   XmlContentTok.
41b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/
42b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_PI 11                     /* processing instruction */
43b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_XML_DECL 12               /* XML decl or text decl */
44b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_COMMENT 13
45b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_BOM 14                    /* Byte order mark */
46b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
47b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* The following tokens are returned only by XmlPrologTok */
48b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_PROLOG_S 15
49b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_DECL_OPEN 16              /* <!foo */
50b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_DECL_CLOSE 17             /* > */
51b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_NAME 18
52b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_NMTOKEN 19
53b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_POUND_NAME 20             /* #name */
54b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_OR 21                     /* | */
55b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_PERCENT 22
56b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_OPEN_PAREN 23
57b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_CLOSE_PAREN 24
58b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_OPEN_BRACKET 25
59b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_CLOSE_BRACKET 26
60b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_LITERAL 27
61b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_PARAM_ENTITY_REF 28
62b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_INSTANCE_START 29
63b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
64b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* The following occur only in element type declarations */
65b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_NAME_QUESTION 30          /* name? */
66b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_NAME_ASTERISK 31          /* name* */
67b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_NAME_PLUS 32              /* name+ */
68b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_COND_SECT_OPEN 33         /* <![ */
69b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_COND_SECT_CLOSE 34        /* ]]> */
70b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_CLOSE_PAREN_QUESTION 35   /* )? */
71b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_CLOSE_PAREN_ASTERISK 36   /* )* */
72b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_CLOSE_PAREN_PLUS 37       /* )+ */
73b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_COMMA 38
74b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
75b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* The following token is returned only by XmlAttributeValueTok */
76b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_ATTRIBUTE_VALUE_S 39
77b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
78b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* The following token is returned only by XmlCdataSectionTok */
79b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_CDATA_SECT_CLOSE 40
80b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
81b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* With namespace processing this is returned by XmlPrologTok for a
82b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project   name with a colon.
83b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/
84b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_PREFIXED_NAME 41
85b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
86b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#ifdef XML_DTD
87b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_TOK_IGNORE_SECT 42
88b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#endif /* XML_DTD */
89b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
90b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#ifdef XML_DTD
91b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_N_STATES 4
92b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#else /* not XML_DTD */
93b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_N_STATES 3
94b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#endif /* not XML_DTD */
95b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
96b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_PROLOG_STATE 0
97b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_CONTENT_STATE 1
98b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_CDATA_SECTION_STATE 2
99b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#ifdef XML_DTD
100b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_IGNORE_SECTION_STATE 3
101b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#endif /* XML_DTD */
102b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
103b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_N_LITERAL_TYPES 2
104b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_ATTRIBUTE_VALUE_LITERAL 0
105b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_ENTITY_VALUE_LITERAL 1
106b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
107b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* The size of the buffer passed to XmlUtf8Encode must be at least this. */
108b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_UTF8_ENCODE_MAX 4
109b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* The size of the buffer passed to XmlUtf16Encode must be at least this. */
110b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XML_UTF16_ENCODE_MAX 2
111b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
112b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef struct position {
113b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  /* first line and first column are 0 not 1 */
114b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  XML_Size lineNumber;
115b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  XML_Size columnNumber;
116b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} POSITION;
117b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
118b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef struct {
119b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  const char *name;
120b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  const char *valuePtr;
121b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  const char *valueEnd;
122b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  char normalized;
123b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} ATTRIBUTE;
124b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
125b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectstruct encoding;
126b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef struct encoding ENCODING;
127b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
128b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef int (PTRCALL *SCANNER)(const ENCODING *,
129b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                               const char *,
130b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                               const char *,
131b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                               const char **);
132b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
133b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectstruct encoding {
134b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  SCANNER scanners[XML_N_STATES];
135b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  SCANNER literalScanners[XML_N_LITERAL_TYPES];
136b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  int (PTRCALL *sameName)(const ENCODING *,
137b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                          const char *,
138b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                          const char *);
139b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  int (PTRCALL *nameMatchesAscii)(const ENCODING *,
140b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                                  const char *,
141b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                                  const char *,
142b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                                  const char *);
143b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  int (PTRFASTCALL *nameLength)(const ENCODING *, const char *);
144b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  const char *(PTRFASTCALL *skipS)(const ENCODING *, const char *);
145b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  int (PTRCALL *getAtts)(const ENCODING *enc,
146b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                         const char *ptr,
147b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                         int attsMax,
148b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                         ATTRIBUTE *atts);
149b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  int (PTRFASTCALL *charRefNumber)(const ENCODING *enc, const char *ptr);
150b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  int (PTRCALL *predefinedEntityName)(const ENCODING *,
151b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                                      const char *,
152b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                                      const char *);
153b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  void (PTRCALL *updatePosition)(const ENCODING *,
154b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                                 const char *ptr,
155b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                                 const char *end,
156b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                                 POSITION *);
157b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  int (PTRCALL *isPublicId)(const ENCODING *enc,
158b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                            const char *ptr,
159b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                            const char *end,
160b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                            const char **badPtr);
161b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  void (PTRCALL *utf8Convert)(const ENCODING *enc,
162b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                              const char **fromP,
163b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                              const char *fromLim,
164b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                              char **toP,
165b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                              const char *toLim);
166b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  void (PTRCALL *utf16Convert)(const ENCODING *enc,
167b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                               const char **fromP,
168b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                               const char *fromLim,
169b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                               unsigned short **toP,
170b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                               const unsigned short *toLim);
171b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  int minBytesPerChar;
172b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  char isUtf8;
173b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  char isUtf16;
174b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project};
175b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
176b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* Scan the string starting at ptr until the end of the next complete
177b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project   token, but do not scan past eptr.  Return an integer giving the
178b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project   type of token.
179b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
180b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project   Return XML_TOK_NONE when ptr == eptr; nextTokPtr will not be set.
181b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
182b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project   Return XML_TOK_PARTIAL when the string does not contain a complete
183b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project   token; nextTokPtr will not be set.
184b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
185b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project   Return XML_TOK_INVALID when the string does not start a valid
186b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project   token; nextTokPtr will be set to point to the character which made
187b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project   the token invalid.
188b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
189b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project   Otherwise the string starts with a valid token; nextTokPtr will be
190b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project   set to point to the character following the end of that token.
191b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
192b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project   Each data character counts as a single token, but adjacent data
193b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project   characters may be returned together.  Similarly for characters in
194b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project   the prolog outside literals, comments and processing instructions.
195b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/
196b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
197b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
198b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XmlTok(enc, state, ptr, end, nextTokPtr) \
199b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  (((enc)->scanners[state])(enc, ptr, end, nextTokPtr))
200b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
201b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XmlPrologTok(enc, ptr, end, nextTokPtr) \
202b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project   XmlTok(enc, XML_PROLOG_STATE, ptr, end, nextTokPtr)
203b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
204b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XmlContentTok(enc, ptr, end, nextTokPtr) \
205b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project   XmlTok(enc, XML_CONTENT_STATE, ptr, end, nextTokPtr)
206b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
207b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XmlCdataSectionTok(enc, ptr, end, nextTokPtr) \
208b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project   XmlTok(enc, XML_CDATA_SECTION_STATE, ptr, end, nextTokPtr)
209b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
210b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#ifdef XML_DTD
211b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
212b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XmlIgnoreSectionTok(enc, ptr, end, nextTokPtr) \
213b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project   XmlTok(enc, XML_IGNORE_SECTION_STATE, ptr, end, nextTokPtr)
214b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
215b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#endif /* XML_DTD */
216b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
217b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* This is used for performing a 2nd-level tokenization on the content
218b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project   of a literal that has already been returned by XmlTok.
219b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/
220b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XmlLiteralTok(enc, literalType, ptr, end, nextTokPtr) \
221b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  (((enc)->literalScanners[literalType])(enc, ptr, end, nextTokPtr))
222b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
223b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XmlAttributeValueTok(enc, ptr, end, nextTokPtr) \
224b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project   XmlLiteralTok(enc, XML_ATTRIBUTE_VALUE_LITERAL, ptr, end, nextTokPtr)
225b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
226b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XmlEntityValueTok(enc, ptr, end, nextTokPtr) \
227b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project   XmlLiteralTok(enc, XML_ENTITY_VALUE_LITERAL, ptr, end, nextTokPtr)
228b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
229b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XmlSameName(enc, ptr1, ptr2) (((enc)->sameName)(enc, ptr1, ptr2))
230b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
231b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XmlNameMatchesAscii(enc, ptr1, end1, ptr2) \
232b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  (((enc)->nameMatchesAscii)(enc, ptr1, end1, ptr2))
233b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
234b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XmlNameLength(enc, ptr) \
235b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  (((enc)->nameLength)(enc, ptr))
236b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
237b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XmlSkipS(enc, ptr) \
238b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  (((enc)->skipS)(enc, ptr))
239b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
240b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XmlGetAttributes(enc, ptr, attsMax, atts) \
241b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  (((enc)->getAtts)(enc, ptr, attsMax, atts))
242b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
243b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XmlCharRefNumber(enc, ptr) \
244b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  (((enc)->charRefNumber)(enc, ptr))
245b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
246b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XmlPredefinedEntityName(enc, ptr, end) \
247b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  (((enc)->predefinedEntityName)(enc, ptr, end))
248b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
249b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XmlUpdatePosition(enc, ptr, end, pos) \
250b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  (((enc)->updatePosition)(enc, ptr, end, pos))
251b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
252b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XmlIsPublicId(enc, ptr, end, badPtr) \
253b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  (((enc)->isPublicId)(enc, ptr, end, badPtr))
254b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
255b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XmlUtf8Convert(enc, fromP, fromLim, toP, toLim) \
256b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  (((enc)->utf8Convert)(enc, fromP, fromLim, toP, toLim))
257b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
258b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XmlUtf16Convert(enc, fromP, fromLim, toP, toLim) \
259b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  (((enc)->utf16Convert)(enc, fromP, fromLim, toP, toLim))
260b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
261b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef struct {
262b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  ENCODING initEnc;
263b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project  const ENCODING **encPtr;
264b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} INIT_ENCODING;
265b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
266b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectint XmlParseXmlDecl(int isGeneralTextEntity,
267b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                    const ENCODING *enc,
268b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                    const char *ptr,
269b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                    const char *end,
270b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                    const char **badPtr,
271b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                    const char **versionPtr,
272b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                    const char **versionEndPtr,
273b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                    const char **encodingNamePtr,
274b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                    const ENCODING **namedEncodingPtr,
275b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                    int *standalonePtr);
276b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
277b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectint XmlInitEncoding(INIT_ENCODING *, const ENCODING **, const char *name);
278b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectconst ENCODING *XmlGetUtf8InternalEncoding(void);
279b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectconst ENCODING *XmlGetUtf16InternalEncoding(void);
280b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectint FASTCALL XmlUtf8Encode(int charNumber, char *buf);
281b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectint FASTCALL XmlUtf16Encode(int charNumber, unsigned short *buf);
282b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectint XmlSizeOfUnknownEncoding(void);
283b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
284b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
285b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projecttypedef int (XMLCALL *CONVERTER) (void *userData, const char *p);
286b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
287b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectENCODING *
288b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXmlInitUnknownEncoding(void *mem,
289b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                       int *table,
290b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                       CONVERTER convert,
291b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                       void *userData);
292b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
293b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectint XmlParseXmlDeclNS(int isGeneralTextEntity,
294b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                      const ENCODING *enc,
295b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                      const char *ptr,
296b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                      const char *end,
297b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                      const char **badPtr,
298b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                      const char **versionPtr,
299b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                      const char **versionEndPtr,
300b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                      const char **encodingNamePtr,
301b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                      const ENCODING **namedEncodingPtr,
302b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                      int *standalonePtr);
303b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
304b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectint XmlInitEncodingNS(INIT_ENCODING *, const ENCODING **, const char *name);
305b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectconst ENCODING *XmlGetUtf8InternalEncodingNS(void);
306b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectconst ENCODING *XmlGetUtf16InternalEncodingNS(void);
307b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectENCODING *
308b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXmlInitUnknownEncodingNS(void *mem,
309b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                         int *table,
310b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                         CONVERTER convert,
311b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project                         void *userData);
312b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#ifdef __cplusplus
313b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project}
314b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#endif
315b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project
316b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#endif /* not XmlTok_INCLUDED */
317