Branch data Line data Source code
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 *
21 : 2211 : pyexpat_xmlparser_Parse(xmlparseobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
22 : : {
23 : 2211 : 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 : 2211 : int isfinal = 0;
29 : :
30 [ + - + - : 2211 : args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
+ - - + ]
31 [ - + ]: 2211 : if (!args) {
32 : 0 : goto exit;
33 : : }
34 : 2211 : data = args[0];
35 [ + + ]: 2211 : if (nargs < 2) {
36 : 8 : goto skip_optional_posonly;
37 : : }
38 : 2203 : isfinal = _PyLong_AsInt(args[1]);
39 [ - + - - ]: 2203 : if (isfinal == -1 && PyErr_Occurred()) {
40 : 0 : goto exit;
41 : : }
42 : 2203 : skip_optional_posonly:
43 : 2211 : return_value = pyexpat_xmlparser_Parse_impl(self, cls, data, isfinal);
44 : :
45 : 2211 : exit:
46 : 2211 : 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 *
63 : 156 : pyexpat_xmlparser_ParseFile(xmlparseobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
64 : : {
65 : 156 : 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 [ + - + - : 156 : args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
+ - - + ]
72 [ - + ]: 156 : if (!args) {
73 : 0 : goto exit;
74 : : }
75 : 156 : file = args[0];
76 : 156 : return_value = pyexpat_xmlparser_ParseFile_impl(self, cls, file);
77 : :
78 : 156 : exit:
79 : 156 : 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 *
95 : 51 : pyexpat_xmlparser_SetBase(xmlparseobject *self, PyObject *arg)
96 : : {
97 : 51 : PyObject *return_value = NULL;
98 : : const char *base;
99 : :
100 [ - + ]: 51 : if (!PyUnicode_Check(arg)) {
101 : 0 : _PyArg_BadArgument("SetBase", "argument", "str", arg);
102 : 0 : goto exit;
103 : : }
104 : : Py_ssize_t base_length;
105 : 51 : base = PyUnicode_AsUTF8AndSize(arg, &base_length);
106 [ - + ]: 51 : if (base == NULL) {
107 : 0 : goto exit;
108 : : }
109 [ - + ]: 51 : if (strlen(base) != (size_t)base_length) {
110 : 0 : PyErr_SetString(PyExc_ValueError, "embedded null character");
111 : 0 : goto exit;
112 : : }
113 : 51 : return_value = pyexpat_xmlparser_SetBase_impl(self, base);
114 : :
115 : 51 : exit:
116 : 51 : 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 *
132 : 0 : pyexpat_xmlparser_GetBase(xmlparseobject *self, PyObject *Py_UNUSED(ignored))
133 : : {
134 : 0 : 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 *
153 : 0 : pyexpat_xmlparser_GetInputContext(xmlparseobject *self, PyObject *Py_UNUSED(ignored))
154 : : {
155 : 0 : 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 *
175 : 2 : pyexpat_xmlparser_ExternalEntityParserCreate(xmlparseobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
176 : : {
177 : 2 : 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 : 2 : const char *encoding = NULL;
183 : :
184 [ + - + - : 2 : args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
+ - - + ]
185 [ - + ]: 2 : if (!args) {
186 : 0 : goto exit;
187 : : }
188 [ - + ]: 2 : if (args[0] == Py_None) {
189 : 0 : context = NULL;
190 : : }
191 [ + - ]: 2 : else if (PyUnicode_Check(args[0])) {
192 : : Py_ssize_t context_length;
193 : 2 : context = PyUnicode_AsUTF8AndSize(args[0], &context_length);
194 [ - + ]: 2 : if (context == NULL) {
195 : 0 : goto exit;
196 : : }
197 [ - + ]: 2 : if (strlen(context) != (size_t)context_length) {
198 : 0 : PyErr_SetString(PyExc_ValueError, "embedded null character");
199 : 0 : goto exit;
200 : : }
201 : : }
202 : : else {
203 : 0 : _PyArg_BadArgument("ExternalEntityParserCreate", "argument 1", "str or None", args[0]);
204 : 0 : goto exit;
205 : : }
206 [ + - ]: 2 : if (nargs < 2) {
207 : 2 : goto skip_optional_posonly;
208 : : }
209 [ # # ]: 0 : if (!PyUnicode_Check(args[1])) {
210 : 0 : _PyArg_BadArgument("ExternalEntityParserCreate", "argument 2", "str", args[1]);
211 : 0 : goto exit;
212 : : }
213 : : Py_ssize_t encoding_length;
214 : 0 : encoding = PyUnicode_AsUTF8AndSize(args[1], &encoding_length);
215 [ # # ]: 0 : if (encoding == NULL) {
216 : 0 : goto exit;
217 : : }
218 [ # # ]: 0 : if (strlen(encoding) != (size_t)encoding_length) {
219 : 0 : PyErr_SetString(PyExc_ValueError, "embedded null character");
220 : 0 : goto exit;
221 : : }
222 : 0 : skip_optional_posonly:
223 : 2 : return_value = pyexpat_xmlparser_ExternalEntityParserCreate_impl(self, cls, context, encoding);
224 : :
225 : 2 : exit:
226 : 2 : 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 *
247 : 246 : pyexpat_xmlparser_SetParamEntityParsing(xmlparseobject *self, PyObject *arg)
248 : : {
249 : 246 : PyObject *return_value = NULL;
250 : : int flag;
251 : :
252 : 246 : flag = _PyLong_AsInt(arg);
253 [ - + - - ]: 246 : if (flag == -1 && PyErr_Occurred()) {
254 : 0 : goto exit;
255 : : }
256 : 246 : return_value = pyexpat_xmlparser_SetParamEntityParsing_impl(self, flag);
257 : :
258 : 246 : exit:
259 : 246 : 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 *
282 : 3 : pyexpat_xmlparser_UseForeignDTD(xmlparseobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
283 : : {
284 : 3 : 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 : 3 : int flag = 1;
289 : :
290 [ + - + - : 3 : args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf);
+ - - + ]
291 [ - + ]: 3 : if (!args) {
292 : 0 : goto exit;
293 : : }
294 [ + + ]: 3 : if (nargs < 1) {
295 : 1 : goto skip_optional_posonly;
296 : : }
297 : 2 : flag = PyObject_IsTrue(args[0]);
298 [ - + ]: 2 : if (flag < 0) {
299 : 0 : goto exit;
300 : : }
301 : 2 : skip_optional_posonly:
302 : 3 : return_value = pyexpat_xmlparser_UseForeignDTD_impl(self, cls, flag);
303 : :
304 : 3 : exit:
305 : 3 : 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 *
325 : 1388 : pyexpat_ParserCreate(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
326 : : {
327 : 1388 : 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 [ + + ]: 1388 : Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
332 : 1388 : const char *encoding = NULL;
333 : 1388 : const char *namespace_separator = NULL;
334 : 1388 : PyObject *intern = NULL;
335 : :
336 [ + + + - : 1388 : args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 3, 0, argsbuf);
+ - - + ]
337 [ - + ]: 1388 : if (!args) {
338 : 0 : goto exit;
339 : : }
340 [ + + ]: 1388 : if (!noptargs) {
341 : 189 : goto skip_optional_pos;
342 : : }
343 [ + + ]: 1199 : if (args[0]) {
344 [ + + ]: 1093 : if (args[0] == Py_None) {
345 : 1090 : encoding = NULL;
346 : : }
347 [ + - ]: 3 : else if (PyUnicode_Check(args[0])) {
348 : : Py_ssize_t encoding_length;
349 : 3 : encoding = PyUnicode_AsUTF8AndSize(args[0], &encoding_length);
350 [ - + ]: 3 : if (encoding == NULL) {
351 : 0 : goto exit;
352 : : }
353 [ - + ]: 3 : if (strlen(encoding) != (size_t)encoding_length) {
354 : 0 : PyErr_SetString(PyExc_ValueError, "embedded null character");
355 : 0 : goto exit;
356 : : }
357 : : }
358 : : else {
359 : 0 : _PyArg_BadArgument("ParserCreate", "argument 'encoding'", "str or None", args[0]);
360 : 0 : goto exit;
361 : : }
362 [ - + ]: 1093 : if (!--noptargs) {
363 : 0 : goto skip_optional_pos;
364 : : }
365 : : }
366 [ + + ]: 1199 : if (args[1]) {
367 [ + + ]: 975 : if (args[1] == Py_None) {
368 : 352 : namespace_separator = NULL;
369 : : }
370 [ + + ]: 623 : else if (PyUnicode_Check(args[1])) {
371 : : Py_ssize_t namespace_separator_length;
372 : 622 : namespace_separator = PyUnicode_AsUTF8AndSize(args[1], &namespace_separator_length);
373 [ - + ]: 622 : if (namespace_separator == NULL) {
374 : 0 : goto exit;
375 : : }
376 [ - + ]: 622 : if (strlen(namespace_separator) != (size_t)namespace_separator_length) {
377 : 0 : PyErr_SetString(PyExc_ValueError, "embedded null character");
378 : 0 : goto exit;
379 : : }
380 : : }
381 : : else {
382 : 1 : _PyArg_BadArgument("ParserCreate", "argument 'namespace_separator'", "str or None", args[1]);
383 : 1 : goto exit;
384 : : }
385 [ + + ]: 974 : if (!--noptargs) {
386 : 955 : goto skip_optional_pos;
387 : : }
388 : : }
389 : 243 : intern = args[2];
390 : 1387 : skip_optional_pos:
391 : 1387 : return_value = pyexpat_ParserCreate_impl(module, encoding, namespace_separator, intern);
392 : :
393 : 1388 : exit:
394 : 1388 : 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 *
410 : 8 : pyexpat_ErrorString(PyObject *module, PyObject *arg)
411 : : {
412 : 8 : PyObject *return_value = NULL;
413 : : long code;
414 : :
415 : 8 : code = PyLong_AsLong(arg);
416 [ - + - - ]: 8 : if (code == -1 && PyErr_Occurred()) {
417 : 0 : goto exit;
418 : : }
419 : 8 : return_value = pyexpat_ErrorString_impl(module, code);
420 : :
421 : 8 : exit:
422 : 8 : 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]*/
|