annotate mcabber/libjabber/xmlparse.h @ 219:8b6adc3f1acc

[/trunk] Changeset 231 by mikael * TODO minor update
author mikael
date Tue, 31 May 2005 16:56:49 +0000
parents bf3d6e241714
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
1 /*
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
2 The contents of this file are subject to the Mozilla Public License
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
3 Version 1.1 (the "License"); you may not use this file except in
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
4 compliance with the License. You may obtain a copy of the License at
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
5 http://www.mozilla.org/MPL/
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
6
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
7 Software distributed under the License is distributed on an "AS IS"
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
8 basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
9 License for the specific language governing rights and limitations
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
10 under the License.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
11
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
12 The Original Code is expat.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
13
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
14 The Initial Developer of the Original Code is James Clark.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
15 Portions created by James Clark are Copyright (C) 1998, 1999
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
16 James Clark. All Rights Reserved.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
17
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
18 Contributor(s):
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
19
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
20 Alternatively, the contents of this file may be used under the terms
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
21 of the GNU General Public License (the "GPL"), in which case the
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
22 provisions of the GPL are applicable instead of those above. If you
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
23 wish to allow use of your version of this file only under the terms of
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
24 the GPL and not to allow others to use your version of this file under
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
25 the MPL, indicate your decision by deleting the provisions above and
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
26 replace them with the notice and other provisions required by the
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
27 GPL. If you do not delete the provisions above, a recipient may use
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
28 your version of this file under either the MPL or the GPL.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
29 */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
30
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
31 #ifndef XmlParse_INCLUDED
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
32 #define XmlParse_INCLUDED 1
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
33
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
34 #ifdef __cplusplus
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
35 extern "C" {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
36 #endif
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
37
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
38 #ifndef XMLPARSEAPI
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
39 #define XMLPARSEAPI /* as nothing */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
40 #endif
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
41
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
42 typedef void *XML_Parser;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
43
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
44 #ifdef XML_UNICODE_WCHAR_T
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
45
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
46 /* XML_UNICODE_WCHAR_T will work only if sizeof(wchar_t) == 2 and wchar_t
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
47 uses Unicode. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
48 /* Information is UTF-16 encoded as wchar_ts */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
49
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
50 #ifndef XML_UNICODE
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
51 #define XML_UNICODE
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
52 #endif
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
53
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
54 #include <stddef.h>
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
55 typedef wchar_t XML_Char;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
56 typedef wchar_t XML_LChar;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
57
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
58 #else /* not XML_UNICODE_WCHAR_T */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
59
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
60 #ifdef XML_UNICODE
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
61
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
62 /* Information is UTF-16 encoded as unsigned shorts */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
63 typedef unsigned short XML_Char;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
64 typedef char XML_LChar;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
65
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
66 #else /* not XML_UNICODE */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
67
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
68 /* Information is UTF-8 encoded. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
69 typedef char XML_Char;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
70 typedef char XML_LChar;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
71
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
72 #endif /* not XML_UNICODE */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
73
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
74 #endif /* not XML_UNICODE_WCHAR_T */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
75
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
76
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
77 /* Constructs a new parser; encoding is the encoding specified by the external
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
78 protocol or null if there is none specified. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
79
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
80 XML_Parser XMLPARSEAPI
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
81 XML_ParserCreate(const XML_Char *encoding);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
82
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
83 /* Constructs a new parser and namespace processor. Element type names
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
84 and attribute names that belong to a namespace will be expanded;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
85 unprefixed attribute names are never expanded; unprefixed element type
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
86 names are expanded only if there is a default namespace. The expanded
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
87 name is the concatenation of the namespace URI, the namespace separator character,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
88 and the local part of the name. If the namespace separator is '\0' then
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
89 the namespace URI and the local part will be concatenated without any
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
90 separator. When a namespace is not declared, the name and prefix will be
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
91 passed through without expansion. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
92
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
93 XML_Parser XMLPARSEAPI
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
94 XML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
95
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
96
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
97 /* atts is array of name/value pairs, terminated by 0;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
98 names and values are 0 terminated. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
99
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
100 typedef void (*XML_StartElementHandler)(void *userData,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
101 const XML_Char *name,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
102 const XML_Char **atts);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
103
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
104 typedef void (*XML_EndElementHandler)(void *userData,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
105 const XML_Char *name);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
106
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
107 /* s is not 0 terminated. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
108 typedef void (*XML_CharacterDataHandler)(void *userData,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
109 const XML_Char *s,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
110 int len);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
111
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
112 /* target and data are 0 terminated */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
113 typedef void (*XML_ProcessingInstructionHandler)(void *userData,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
114 const XML_Char *target,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
115 const XML_Char *data);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
116
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
117 /* data is 0 terminated */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
118 typedef void (*XML_CommentHandler)(void *userData, const XML_Char *data);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
119
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
120 typedef void (*XML_StartCdataSectionHandler)(void *userData);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
121 typedef void (*XML_EndCdataSectionHandler)(void *userData);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
122
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
123 /* This is called for any characters in the XML document for
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
124 which there is no applicable handler. This includes both
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
125 characters that are part of markup which is of a kind that is
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
126 not reported (comments, markup declarations), or characters
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
127 that are part of a construct which could be reported but
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
128 for which no handler has been supplied. The characters are passed
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
129 exactly as they were in the XML document except that
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
130 they will be encoded in UTF-8. Line boundaries are not normalized.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
131 Note that a byte order mark character is not passed to the default handler.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
132 There are no guarantees about how characters are divided between calls
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
133 to the default handler: for example, a comment might be split between
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
134 multiple calls. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
135
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
136 typedef void (*XML_DefaultHandler)(void *userData,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
137 const XML_Char *s,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
138 int len);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
139
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
140 /* This is called for a declaration of an unparsed (NDATA)
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
141 entity. The base argument is whatever was set by XML_SetBase.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
142 The entityName, systemId and notationName arguments will never be null.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
143 The other arguments may be. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
144
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
145 typedef void (*XML_UnparsedEntityDeclHandler)(void *userData,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
146 const XML_Char *entityName,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
147 const XML_Char *base,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
148 const XML_Char *systemId,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
149 const XML_Char *publicId,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
150 const XML_Char *notationName);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
151
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
152 /* This is called for a declaration of notation.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
153 The base argument is whatever was set by XML_SetBase.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
154 The notationName will never be null. The other arguments can be. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
155
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
156 typedef void (*XML_NotationDeclHandler)(void *userData,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
157 const XML_Char *notationName,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
158 const XML_Char *base,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
159 const XML_Char *systemId,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
160 const XML_Char *publicId);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
161
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
162 /* When namespace processing is enabled, these are called once for
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
163 each namespace declaration. The call to the start and end element
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
164 handlers occur between the calls to the start and end namespace
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
165 declaration handlers. For an xmlns attribute, prefix will be null.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
166 For an xmlns="" attribute, uri will be null. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
167
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
168 typedef void (*XML_StartNamespaceDeclHandler)(void *userData,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
169 const XML_Char *prefix,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
170 const XML_Char *uri);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
171
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
172 typedef void (*XML_EndNamespaceDeclHandler)(void *userData,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
173 const XML_Char *prefix);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
174
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
175 /* This is called if the document is not standalone (it has an
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
176 external subset or a reference to a parameter entity, but does not
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
177 have standalone="yes"). If this handler returns 0, then processing
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
178 will not continue, and the parser will return a
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
179 XML_ERROR_NOT_STANDALONE error. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
180
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
181 typedef int (*XML_NotStandaloneHandler)(void *userData);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
182
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
183 /* This is called for a reference to an external parsed general entity.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
184 The referenced entity is not automatically parsed.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
185 The application can parse it immediately or later using
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
186 XML_ExternalEntityParserCreate.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
187 The parser argument is the parser parsing the entity containing the reference;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
188 it can be passed as the parser argument to XML_ExternalEntityParserCreate.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
189 The systemId argument is the system identifier as specified in the entity declaration;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
190 it will not be null.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
191 The base argument is the system identifier that should be used as the base for
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
192 resolving systemId if systemId was relative; this is set by XML_SetBase;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
193 it may be null.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
194 The publicId argument is the public identifier as specified in the entity declaration,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
195 or null if none was specified; the whitespace in the public identifier
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
196 will have been normalized as required by the XML spec.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
197 The context argument specifies the parsing context in the format
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
198 expected by the context argument to
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
199 XML_ExternalEntityParserCreate; context is valid only until the handler
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
200 returns, so if the referenced entity is to be parsed later, it must be copied.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
201 The handler should return 0 if processing should not continue because of
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
202 a fatal error in the handling of the external entity.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
203 In this case the calling parser will return an XML_ERROR_EXTERNAL_ENTITY_HANDLING
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
204 error.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
205 Note that unlike other handlers the first argument is the parser, not userData. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
206
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
207 typedef int (*XML_ExternalEntityRefHandler)(XML_Parser parser,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
208 const XML_Char *context,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
209 const XML_Char *base,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
210 const XML_Char *systemId,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
211 const XML_Char *publicId);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
212
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
213 /* This structure is filled in by the XML_UnknownEncodingHandler
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
214 to provide information to the parser about encodings that are unknown
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
215 to the parser.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
216 The map[b] member gives information about byte sequences
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
217 whose first byte is b.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
218 If map[b] is c where c is >= 0, then b by itself encodes the Unicode scalar value c.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
219 If map[b] is -1, then the byte sequence is malformed.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
220 If map[b] is -n, where n >= 2, then b is the first byte of an n-byte
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
221 sequence that encodes a single Unicode scalar value.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
222 The data member will be passed as the first argument to the convert function.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
223 The convert function is used to convert multibyte sequences;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
224 s will point to a n-byte sequence where map[(unsigned char)*s] == -n.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
225 The convert function must return the Unicode scalar value
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
226 represented by this byte sequence or -1 if the byte sequence is malformed.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
227 The convert function may be null if the encoding is a single-byte encoding,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
228 that is if map[b] >= -1 for all bytes b.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
229 When the parser is finished with the encoding, then if release is not null,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
230 it will call release passing it the data member;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
231 once release has been called, the convert function will not be called again.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
232
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
233 Expat places certain restrictions on the encodings that are supported
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
234 using this mechanism.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
235
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
236 1. Every ASCII character that can appear in a well-formed XML document,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
237 other than the characters
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
238
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
239 $@\^`{}~
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
240
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
241 must be represented by a single byte, and that byte must be the
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
242 same byte that represents that character in ASCII.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
243
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
244 2. No character may require more than 4 bytes to encode.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
245
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
246 3. All characters encoded must have Unicode scalar values <= 0xFFFF,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
247 (ie characters that would be encoded by surrogates in UTF-16
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
248 are not allowed). Note that this restriction doesn't apply to
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
249 the built-in support for UTF-8 and UTF-16.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
250
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
251 4. No Unicode character may be encoded by more than one distinct sequence
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
252 of bytes. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
253
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
254 typedef struct {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
255 int map[256];
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
256 void *data;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
257 int (*convert)(void *data, const char *s);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
258 void (*release)(void *data);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
259 } XML_Encoding;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
260
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
261 /* This is called for an encoding that is unknown to the parser.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
262 The encodingHandlerData argument is that which was passed as the
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
263 second argument to XML_SetUnknownEncodingHandler.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
264 The name argument gives the name of the encoding as specified in
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
265 the encoding declaration.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
266 If the callback can provide information about the encoding,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
267 it must fill in the XML_Encoding structure, and return 1.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
268 Otherwise it must return 0.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
269 If info does not describe a suitable encoding,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
270 then the parser will return an XML_UNKNOWN_ENCODING error. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
271
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
272 typedef int (*XML_UnknownEncodingHandler)(void *encodingHandlerData,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
273 const XML_Char *name,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
274 XML_Encoding *info);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
275
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
276 void XMLPARSEAPI
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
277 XML_SetElementHandler(XML_Parser parser,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
278 XML_StartElementHandler start,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
279 XML_EndElementHandler end);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
280
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
281 void XMLPARSEAPI
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
282 XML_SetCharacterDataHandler(XML_Parser parser,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
283 XML_CharacterDataHandler handler);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
284
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
285 void XMLPARSEAPI
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
286 XML_SetProcessingInstructionHandler(XML_Parser parser,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
287 XML_ProcessingInstructionHandler handler);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
288 void XMLPARSEAPI
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
289 XML_SetCommentHandler(XML_Parser parser,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
290 XML_CommentHandler handler);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
291
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
292 void XMLPARSEAPI
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
293 XML_SetCdataSectionHandler(XML_Parser parser,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
294 XML_StartCdataSectionHandler start,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
295 XML_EndCdataSectionHandler end);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
296
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
297 /* This sets the default handler and also inhibits expansion of internal entities.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
298 The entity reference will be passed to the default handler. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
299
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
300 void XMLPARSEAPI
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
301 XML_SetDefaultHandler(XML_Parser parser,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
302 XML_DefaultHandler handler);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
303
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
304 /* This sets the default handler but does not inhibit expansion of internal entities.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
305 The entity reference will not be passed to the default handler. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
306
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
307 void XMLPARSEAPI
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
308 XML_SetDefaultHandlerExpand(XML_Parser parser,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
309 XML_DefaultHandler handler);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
310
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
311 void XMLPARSEAPI
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
312 XML_SetUnparsedEntityDeclHandler(XML_Parser parser,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
313 XML_UnparsedEntityDeclHandler handler);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
314
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
315 void XMLPARSEAPI
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
316 XML_SetNotationDeclHandler(XML_Parser parser,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
317 XML_NotationDeclHandler handler);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
318
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
319 void XMLPARSEAPI
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
320 XML_SetNamespaceDeclHandler(XML_Parser parser,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
321 XML_StartNamespaceDeclHandler start,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
322 XML_EndNamespaceDeclHandler end);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
323
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
324 void XMLPARSEAPI
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
325 XML_SetNotStandaloneHandler(XML_Parser parser,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
326 XML_NotStandaloneHandler handler);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
327
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
328 void XMLPARSEAPI
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
329 XML_SetExternalEntityRefHandler(XML_Parser parser,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
330 XML_ExternalEntityRefHandler handler);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
331
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
332 /* If a non-null value for arg is specified here, then it will be passed
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
333 as the first argument to the external entity ref handler instead
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
334 of the parser object. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
335 void XMLPARSEAPI
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
336 XML_SetExternalEntityRefHandlerArg(XML_Parser, void *arg);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
337
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
338 void XMLPARSEAPI
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
339 XML_SetUnknownEncodingHandler(XML_Parser parser,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
340 XML_UnknownEncodingHandler handler,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
341 void *encodingHandlerData);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
342
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
343 /* This can be called within a handler for a start element, end element,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
344 processing instruction or character data. It causes the corresponding
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
345 markup to be passed to the default handler. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
346 void XMLPARSEAPI XML_DefaultCurrent(XML_Parser parser);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
347
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
348 /* This value is passed as the userData argument to callbacks. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
349 void XMLPARSEAPI
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
350 XML_SetUserData(XML_Parser parser, void *userData);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
351
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
352 /* Returns the last value set by XML_SetUserData or null. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
353 #define XML_GetUserData(parser) (*(void **)(parser))
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
354
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
355 /* This is equivalent to supplying an encoding argument
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
356 to XML_CreateParser. It must not be called after XML_Parse
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
357 or XML_ParseBuffer. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
358
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
359 int XMLPARSEAPI
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
360 XML_SetEncoding(XML_Parser parser, const XML_Char *encoding);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
361
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
362 /* If this function is called, then the parser will be passed
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
363 as the first argument to callbacks instead of userData.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
364 The userData will still be accessible using XML_GetUserData. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
365
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
366 void XMLPARSEAPI
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
367 XML_UseParserAsHandlerArg(XML_Parser parser);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
368
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
369 /* Sets the base to be used for resolving relative URIs in system identifiers in
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
370 declarations. Resolving relative identifiers is left to the application:
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
371 this value will be passed through as the base argument to the
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
372 XML_ExternalEntityRefHandler, XML_NotationDeclHandler
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
373 and XML_UnparsedEntityDeclHandler. The base argument will be copied.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
374 Returns zero if out of memory, non-zero otherwise. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
375
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
376 int XMLPARSEAPI
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
377 XML_SetBase(XML_Parser parser, const XML_Char *base);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
378
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
379 const XML_Char XMLPARSEAPI *
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
380 XML_GetBase(XML_Parser parser);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
381
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
382 /* Returns the number of the attributes passed in last call to the
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
383 XML_StartElementHandler that were specified in the start-tag rather
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
384 than defaulted. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
385
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
386 int XMLPARSEAPI XML_GetSpecifiedAttributeCount(XML_Parser parser);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
387
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
388 /* Parses some input. Returns 0 if a fatal error is detected.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
389 The last call to XML_Parse must have isFinal true;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
390 len may be zero for this call (or any other). */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
391 int XMLPARSEAPI
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
392 XML_Parse(XML_Parser parser, const char *s, int len, int isFinal);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
393
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
394 void XMLPARSEAPI *
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
395 XML_GetBuffer(XML_Parser parser, int len);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
396
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
397 int XMLPARSEAPI
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
398 XML_ParseBuffer(XML_Parser parser, int len, int isFinal);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
399
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
400 /* Creates an XML_Parser object that can parse an external general entity;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
401 context is a '\0'-terminated string specifying the parse context;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
402 encoding is a '\0'-terminated string giving the name of the externally specified encoding,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
403 or null if there is no externally specified encoding.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
404 The context string consists of a sequence of tokens separated by formfeeds (\f);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
405 a token consisting of a name specifies that the general entity of the name
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
406 is open; a token of the form prefix=uri specifies the namespace for a particular
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
407 prefix; a token of the form =uri specifies the default namespace.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
408 This can be called at any point after the first call to an ExternalEntityRefHandler
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
409 so longer as the parser has not yet been freed.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
410 The new parser is completely independent and may safely be used in a separate thread.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
411 The handlers and userData are initialized from the parser argument.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
412 Returns 0 if out of memory. Otherwise returns a new XML_Parser object. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
413 XML_Parser XMLPARSEAPI
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
414 XML_ExternalEntityParserCreate(XML_Parser parser,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
415 const XML_Char *context,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
416 const XML_Char *encoding);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
417
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
418 enum XML_Error {
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
419 XML_ERROR_NONE,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
420 XML_ERROR_NO_MEMORY,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
421 XML_ERROR_SYNTAX,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
422 XML_ERROR_NO_ELEMENTS,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
423 XML_ERROR_INVALID_TOKEN,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
424 XML_ERROR_UNCLOSED_TOKEN,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
425 XML_ERROR_PARTIAL_CHAR,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
426 XML_ERROR_TAG_MISMATCH,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
427 XML_ERROR_DUPLICATE_ATTRIBUTE,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
428 XML_ERROR_JUNK_AFTER_DOC_ELEMENT,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
429 XML_ERROR_PARAM_ENTITY_REF,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
430 XML_ERROR_UNDEFINED_ENTITY,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
431 XML_ERROR_RECURSIVE_ENTITY_REF,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
432 XML_ERROR_ASYNC_ENTITY,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
433 XML_ERROR_BAD_CHAR_REF,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
434 XML_ERROR_BINARY_ENTITY_REF,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
435 XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
436 XML_ERROR_MISPLACED_XML_PI,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
437 XML_ERROR_UNKNOWN_ENCODING,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
438 XML_ERROR_INCORRECT_ENCODING,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
439 XML_ERROR_UNCLOSED_CDATA_SECTION,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
440 XML_ERROR_EXTERNAL_ENTITY_HANDLING,
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
441 XML_ERROR_NOT_STANDALONE
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
442 };
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
443
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
444 /* If XML_Parse or XML_ParseBuffer have returned 0, then XML_GetErrorCode
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
445 returns information about the error. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
446
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
447 enum XML_Error XMLPARSEAPI XML_GetErrorCode(XML_Parser parser);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
448
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
449 /* These functions return information about the current parse location.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
450 They may be called when XML_Parse or XML_ParseBuffer return 0;
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
451 in this case the location is the location of the character at which
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
452 the error was detected.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
453 They may also be called from any other callback called to report
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
454 some parse event; in this the location is the location of the first
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
455 of the sequence of characters that generated the event. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
456
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
457 int XMLPARSEAPI XML_GetCurrentLineNumber(XML_Parser parser);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
458 int XMLPARSEAPI XML_GetCurrentColumnNumber(XML_Parser parser);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
459 long XMLPARSEAPI XML_GetCurrentByteIndex(XML_Parser parser);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
460
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
461 /* Return the number of bytes in the current event.
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
462 Returns 0 if the event is in an internal entity. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
463
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
464 int XMLPARSEAPI XML_GetCurrentByteCount(XML_Parser parser);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
465
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
466 /* For backwards compatibility with previous versions. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
467 #define XML_GetErrorLineNumber XML_GetCurrentLineNumber
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
468 #define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
469 #define XML_GetErrorByteIndex XML_GetCurrentByteIndex
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
470
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
471 /* Frees memory used by the parser. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
472 void XMLPARSEAPI
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
473 XML_ParserFree(XML_Parser parser);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
474
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
475 /* Returns a string describing the error. */
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
476 const XML_LChar XMLPARSEAPI *XML_ErrorString(int code);
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
477
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
478 #ifdef __cplusplus
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
479 }
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
480 #endif
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
481
bf3d6e241714 [/trunk] Changeset 41 by mikael
mikael
parents:
diff changeset
482 #endif /* not XmlParse_INCLUDED */