1 /*[clinic input]
2 preserve
3 [clinic start generated code]*/
4
5 PyDoc_STRVAR(pyexpat_xmlparser_Parse__doc__,
6 "Parse($self, data, isfinal=False, /)\n"
7 "--\n"
8 "\n"
9 "Parse XML data.\n"
10 "\n"
11 "`isfinal\' should be true at end of input.");
12
13 #define PYEXPAT_XMLPARSER_PARSE_METHODDEF \
14 {"Parse", _PyCFunction_CAST(pyexpat_xmlparser_Parse), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, pyexpat_xmlparser_Parse__doc__},
15
16 static PyObject *
17 pyexpat_xmlparser_Parse_impl(xmlparseobject *self, PyTypeObject *cls,
18 PyObject *data, int isfinal);
19
20 static PyObject *
pyexpat_xmlparser_Parse(xmlparseobject * self,PyTypeObject * cls,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)21 pyexpat_xmlparser_Parse(xmlparseobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
22 {
23 PyObject *return_value = NULL;
24 static const char * const _keywords[] = {"", "", NULL};
25 static _PyArg_Parser _parser = {NULL, _keywords, "Parse", 0};
26 PyObject *argsbuf[2];
27 PyObject *data;
28 int isfinal = 0;
29
30 args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
31 if (!args) {
32 goto exit;
33 }
34 data = args[0];
35 if (nargs < 2) {
36 goto skip_optional_posonly;
37 }
38 isfinal = _PyLong_AsInt(args[1]);
39 if (isfinal == -1 && PyErr_Occurred()) {
40 goto exit;
41 }
42 skip_optional_posonly:
43 return_value = pyexpat_xmlparser_Parse_impl(self, cls, data, isfinal);
44
45 exit:
46 return return_value;
47 }
48
49 PyDoc_STRVAR(pyexpat_xmlparser_ParseFile__doc__,
50 "ParseFile($self, file, /)\n"
51 "--\n"
52 "\n"
53 "Parse XML data from file-like object.");
54
55 #define PYEXPAT_XMLPARSER_PARSEFILE_METHODDEF \
56 {"ParseFile", _PyCFunction_CAST(pyexpat_xmlparser_ParseFile), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, pyexpat_xmlparser_ParseFile__doc__},
57
58 static PyObject *
59 pyexpat_xmlparser_ParseFile_impl(xmlparseobject *self, PyTypeObject *cls,
60 PyObject *file);
61
62 static PyObject *
pyexpat_xmlparser_ParseFile(xmlparseobject * self,PyTypeObject * cls,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)63 pyexpat_xmlparser_ParseFile(xmlparseobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
64 {
65 PyObject *return_value = NULL;
66 static const char * const _keywords[] = {"", NULL};
67 static _PyArg_Parser _parser = {NULL, _keywords, "ParseFile", 0};
68 PyObject *argsbuf[1];
69 PyObject *file;
70
71 args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
72 if (!args) {
73 goto exit;
74 }
75 file = args[0];
76 return_value = pyexpat_xmlparser_ParseFile_impl(self, cls, file);
77
78 exit:
79 return return_value;
80 }
81
82 PyDoc_STRVAR(pyexpat_xmlparser_SetBase__doc__,
83 "SetBase($self, base, /)\n"
84 "--\n"
85 "\n"
86 "Set the base URL for the parser.");
87
88 #define PYEXPAT_XMLPARSER_SETBASE_METHODDEF \
89 {"SetBase", (PyCFunction)pyexpat_xmlparser_SetBase, METH_O, pyexpat_xmlparser_SetBase__doc__},
90
91 static PyObject *
92 pyexpat_xmlparser_SetBase_impl(xmlparseobject *self, const char *base);
93
94 static PyObject *
pyexpat_xmlparser_SetBase(xmlparseobject * self,PyObject * arg)95 pyexpat_xmlparser_SetBase(xmlparseobject *self, PyObject *arg)
96 {
97 PyObject *return_value = NULL;
98 const char *base;
99
100 if (!PyUnicode_Check(arg)) {
101 _PyArg_BadArgument("SetBase", "argument", "str", arg);
102 goto exit;
103 }
104 Py_ssize_t base_length;
105 base = PyUnicode_AsUTF8AndSize(arg, &base_length);
106 if (base == NULL) {
107 goto exit;
108 }
109 if (strlen(base) != (size_t)base_length) {
110 PyErr_SetString(PyExc_ValueError, "embedded null character");
111 goto exit;
112 }
113 return_value = pyexpat_xmlparser_SetBase_impl(self, base);
114
115 exit:
116 return return_value;
117 }
118
119 PyDoc_STRVAR(pyexpat_xmlparser_GetBase__doc__,
120 "GetBase($self, /)\n"
121 "--\n"
122 "\n"
123 "Return base URL string for the parser.");
124
125 #define PYEXPAT_XMLPARSER_GETBASE_METHODDEF \
126 {"GetBase", (PyCFunction)pyexpat_xmlparser_GetBase, METH_NOARGS, pyexpat_xmlparser_GetBase__doc__},
127
128 static PyObject *
129 pyexpat_xmlparser_GetBase_impl(xmlparseobject *self);
130
131 static PyObject *
pyexpat_xmlparser_GetBase(xmlparseobject * self,PyObject * Py_UNUSED (ignored))132 pyexpat_xmlparser_GetBase(xmlparseobject *self, PyObject *Py_UNUSED(ignored))
133 {
134 return pyexpat_xmlparser_GetBase_impl(self);
135 }
136
137 PyDoc_STRVAR(pyexpat_xmlparser_GetInputContext__doc__,
138 "GetInputContext($self, /)\n"
139 "--\n"
140 "\n"
141 "Return the untranslated text of the input that caused the current event.\n"
142 "\n"
143 "If the event was generated by a large amount of text (such as a start tag\n"
144 "for an element with many attributes), not all of the text may be available.");
145
146 #define PYEXPAT_XMLPARSER_GETINPUTCONTEXT_METHODDEF \
147 {"GetInputContext", (PyCFunction)pyexpat_xmlparser_GetInputContext, METH_NOARGS, pyexpat_xmlparser_GetInputContext__doc__},
148
149 static PyObject *
150 pyexpat_xmlparser_GetInputContext_impl(xmlparseobject *self);
151
152 static PyObject *
pyexpat_xmlparser_GetInputContext(xmlparseobject * self,PyObject * Py_UNUSED (ignored))153 pyexpat_xmlparser_GetInputContext(xmlparseobject *self, PyObject *Py_UNUSED(ignored))
154 {
155 return pyexpat_xmlparser_GetInputContext_impl(self);
156 }
157
158 PyDoc_STRVAR(pyexpat_xmlparser_ExternalEntityParserCreate__doc__,
159 "ExternalEntityParserCreate($self, context, encoding=<unrepresentable>,\n"
160 " /)\n"
161 "--\n"
162 "\n"
163 "Create a parser for parsing an external entity based on the information passed to the ExternalEntityRefHandler.");
164
165 #define PYEXPAT_XMLPARSER_EXTERNALENTITYPARSERCREATE_METHODDEF \
166 {"ExternalEntityParserCreate", _PyCFunction_CAST(pyexpat_xmlparser_ExternalEntityParserCreate), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, pyexpat_xmlparser_ExternalEntityParserCreate__doc__},
167
168 static PyObject *
169 pyexpat_xmlparser_ExternalEntityParserCreate_impl(xmlparseobject *self,
170 PyTypeObject *cls,
171 const char *context,
172 const char *encoding);
173
174 static PyObject *
pyexpat_xmlparser_ExternalEntityParserCreate(xmlparseobject * self,PyTypeObject * cls,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)175 pyexpat_xmlparser_ExternalEntityParserCreate(xmlparseobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
176 {
177 PyObject *return_value = NULL;
178 static const char * const _keywords[] = {"", "", NULL};
179 static _PyArg_Parser _parser = {NULL, _keywords, "ExternalEntityParserCreate", 0};
180 PyObject *argsbuf[2];
181 const char *context;
182 const char *encoding = NULL;
183
184 args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
185 if (!args) {
186 goto exit;
187 }
188 if (args[0] == Py_None) {
189 context = NULL;
190 }
191 else if (PyUnicode_Check(args[0])) {
192 Py_ssize_t context_length;
193 context = PyUnicode_AsUTF8AndSize(args[0], &context_length);
194 if (context == NULL) {
195 goto exit;
196 }
197 if (strlen(context) != (size_t)context_length) {
198 PyErr_SetString(PyExc_ValueError, "embedded null character");
199 goto exit;
200 }
201 }
202 else {
203 _PyArg_BadArgument("ExternalEntityParserCreate", "argument 1", "str or None", args[0]);
204 goto exit;
205 }
206 if (nargs < 2) {
207 goto skip_optional_posonly;
208 }
209 if (!PyUnicode_Check(args[1])) {
210 _PyArg_BadArgument("ExternalEntityParserCreate", "argument 2", "str", args[1]);
211 goto exit;
212 }
213 Py_ssize_t encoding_length;
214 encoding = PyUnicode_AsUTF8AndSize(args[1], &encoding_length);
215 if (encoding == NULL) {
216 goto exit;
217 }
218 if (strlen(encoding) != (size_t)encoding_length) {
219 PyErr_SetString(PyExc_ValueError, "embedded null character");
220 goto exit;
221 }
222 skip_optional_posonly:
223 return_value = pyexpat_xmlparser_ExternalEntityParserCreate_impl(self, cls, context, encoding);
224
225 exit:
226 return return_value;
227 }
228
229 PyDoc_STRVAR(pyexpat_xmlparser_SetParamEntityParsing__doc__,
230 "SetParamEntityParsing($self, flag, /)\n"
231 "--\n"
232 "\n"
233 "Controls parsing of parameter entities (including the external DTD subset).\n"
234 "\n"
235 "Possible flag values are XML_PARAM_ENTITY_PARSING_NEVER,\n"
236 "XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE and\n"
237 "XML_PARAM_ENTITY_PARSING_ALWAYS. Returns true if setting the flag\n"
238 "was successful.");
239
240 #define PYEXPAT_XMLPARSER_SETPARAMENTITYPARSING_METHODDEF \
241 {"SetParamEntityParsing", (PyCFunction)pyexpat_xmlparser_SetParamEntityParsing, METH_O, pyexpat_xmlparser_SetParamEntityParsing__doc__},
242
243 static PyObject *
244 pyexpat_xmlparser_SetParamEntityParsing_impl(xmlparseobject *self, int flag);
245
246 static PyObject *
pyexpat_xmlparser_SetParamEntityParsing(xmlparseobject * self,PyObject * arg)247 pyexpat_xmlparser_SetParamEntityParsing(xmlparseobject *self, PyObject *arg)
248 {
249 PyObject *return_value = NULL;
250 int flag;
251
252 flag = _PyLong_AsInt(arg);
253 if (flag == -1 && PyErr_Occurred()) {
254 goto exit;
255 }
256 return_value = pyexpat_xmlparser_SetParamEntityParsing_impl(self, flag);
257
258 exit:
259 return return_value;
260 }
261
262 #if (XML_COMBINED_VERSION >= 19505)
263
264 PyDoc_STRVAR(pyexpat_xmlparser_UseForeignDTD__doc__,
265 "UseForeignDTD($self, flag=True, /)\n"
266 "--\n"
267 "\n"
268 "Allows the application to provide an artificial external subset if one is not specified as part of the document instance.\n"
269 "\n"
270 "This readily allows the use of a \'default\' document type controlled by the\n"
271 "application, while still getting the advantage of providing document type\n"
272 "information to the parser. \'flag\' defaults to True if not provided.");
273
274 #define PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF \
275 {"UseForeignDTD", _PyCFunction_CAST(pyexpat_xmlparser_UseForeignDTD), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, pyexpat_xmlparser_UseForeignDTD__doc__},
276
277 static PyObject *
278 pyexpat_xmlparser_UseForeignDTD_impl(xmlparseobject *self, PyTypeObject *cls,
279 int flag);
280
281 static PyObject *
pyexpat_xmlparser_UseForeignDTD(xmlparseobject * self,PyTypeObject * cls,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)282 pyexpat_xmlparser_UseForeignDTD(xmlparseobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
283 {
284 PyObject *return_value = NULL;
285 static const char * const _keywords[] = {"", NULL};
286 static _PyArg_Parser _parser = {NULL, _keywords, "UseForeignDTD", 0};
287 PyObject *argsbuf[1];
288 int flag = 1;
289
290 args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf);
291 if (!args) {
292 goto exit;
293 }
294 if (nargs < 1) {
295 goto skip_optional_posonly;
296 }
297 flag = PyObject_IsTrue(args[0]);
298 if (flag < 0) {
299 goto exit;
300 }
301 skip_optional_posonly:
302 return_value = pyexpat_xmlparser_UseForeignDTD_impl(self, cls, flag);
303
304 exit:
305 return return_value;
306 }
307
308 #endif /* (XML_COMBINED_VERSION >= 19505) */
309
310 PyDoc_STRVAR(pyexpat_ParserCreate__doc__,
311 "ParserCreate($module, /, encoding=None, namespace_separator=None,\n"
312 " intern=<unrepresentable>)\n"
313 "--\n"
314 "\n"
315 "Return a new XML parser object.");
316
317 #define PYEXPAT_PARSERCREATE_METHODDEF \
318 {"ParserCreate", _PyCFunction_CAST(pyexpat_ParserCreate), METH_FASTCALL|METH_KEYWORDS, pyexpat_ParserCreate__doc__},
319
320 static PyObject *
321 pyexpat_ParserCreate_impl(PyObject *module, const char *encoding,
322 const char *namespace_separator, PyObject *intern);
323
324 static PyObject *
pyexpat_ParserCreate(PyObject * module,PyObject * const * args,Py_ssize_t nargs,PyObject * kwnames)325 pyexpat_ParserCreate(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
326 {
327 PyObject *return_value = NULL;
328 static const char * const _keywords[] = {"encoding", "namespace_separator", "intern", NULL};
329 static _PyArg_Parser _parser = {NULL, _keywords, "ParserCreate", 0};
330 PyObject *argsbuf[3];
331 Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
332 const char *encoding = NULL;
333 const char *namespace_separator = NULL;
334 PyObject *intern = NULL;
335
336 args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 3, 0, argsbuf);
337 if (!args) {
338 goto exit;
339 }
340 if (!noptargs) {
341 goto skip_optional_pos;
342 }
343 if (args[0]) {
344 if (args[0] == Py_None) {
345 encoding = NULL;
346 }
347 else if (PyUnicode_Check(args[0])) {
348 Py_ssize_t encoding_length;
349 encoding = PyUnicode_AsUTF8AndSize(args[0], &encoding_length);
350 if (encoding == NULL) {
351 goto exit;
352 }
353 if (strlen(encoding) != (size_t)encoding_length) {
354 PyErr_SetString(PyExc_ValueError, "embedded null character");
355 goto exit;
356 }
357 }
358 else {
359 _PyArg_BadArgument("ParserCreate", "argument 'encoding'", "str or None", args[0]);
360 goto exit;
361 }
362 if (!--noptargs) {
363 goto skip_optional_pos;
364 }
365 }
366 if (args[1]) {
367 if (args[1] == Py_None) {
368 namespace_separator = NULL;
369 }
370 else if (PyUnicode_Check(args[1])) {
371 Py_ssize_t namespace_separator_length;
372 namespace_separator = PyUnicode_AsUTF8AndSize(args[1], &namespace_separator_length);
373 if (namespace_separator == NULL) {
374 goto exit;
375 }
376 if (strlen(namespace_separator) != (size_t)namespace_separator_length) {
377 PyErr_SetString(PyExc_ValueError, "embedded null character");
378 goto exit;
379 }
380 }
381 else {
382 _PyArg_BadArgument("ParserCreate", "argument 'namespace_separator'", "str or None", args[1]);
383 goto exit;
384 }
385 if (!--noptargs) {
386 goto skip_optional_pos;
387 }
388 }
389 intern = args[2];
390 skip_optional_pos:
391 return_value = pyexpat_ParserCreate_impl(module, encoding, namespace_separator, intern);
392
393 exit:
394 return return_value;
395 }
396
397 PyDoc_STRVAR(pyexpat_ErrorString__doc__,
398 "ErrorString($module, code, /)\n"
399 "--\n"
400 "\n"
401 "Returns string error for given number.");
402
403 #define PYEXPAT_ERRORSTRING_METHODDEF \
404 {"ErrorString", (PyCFunction)pyexpat_ErrorString, METH_O, pyexpat_ErrorString__doc__},
405
406 static PyObject *
407 pyexpat_ErrorString_impl(PyObject *module, long code);
408
409 static PyObject *
pyexpat_ErrorString(PyObject * module,PyObject * arg)410 pyexpat_ErrorString(PyObject *module, PyObject *arg)
411 {
412 PyObject *return_value = NULL;
413 long code;
414
415 code = PyLong_AsLong(arg);
416 if (code == -1 && PyErr_Occurred()) {
417 goto exit;
418 }
419 return_value = pyexpat_ErrorString_impl(module, code);
420
421 exit:
422 return return_value;
423 }
424
425 #ifndef PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF
426 #define PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF
427 #endif /* !defined(PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF) */
428 /*[clinic end generated code: output=3e333b89da3aa58c input=a9049054013a1b77]*/
429