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