blob: 090b1efd9e8b01d6bb3a235c46a657be29b4496c [file] [log] [blame]
Serhiy Storchaka1009bf12015-04-03 23:53:51 +03001/*[clinic input]
2preserve
3[clinic start generated code]*/
4
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03005PyDoc_STRVAR(_codecs_register__doc__,
6"register($module, search_function, /)\n"
7"--\n"
8"\n"
9"Register a codec search function.\n"
10"\n"
11"Search functions are expected to take one argument, the encoding name in\n"
12"all lower case letters, and either return None, or a tuple of functions\n"
13"(encoder, decoder, stream_reader, stream_writer) (or a CodecInfo object).");
14
15#define _CODECS_REGISTER_METHODDEF \
16 {"register", (PyCFunction)_codecs_register, METH_O, _codecs_register__doc__},
17
18PyDoc_STRVAR(_codecs_lookup__doc__,
19"lookup($module, encoding, /)\n"
20"--\n"
21"\n"
22"Looks up a codec tuple in the Python codec registry and returns a CodecInfo object.");
23
24#define _CODECS_LOOKUP_METHODDEF \
25 {"lookup", (PyCFunction)_codecs_lookup, METH_O, _codecs_lookup__doc__},
26
27static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +030028_codecs_lookup_impl(PyObject *module, const char *encoding);
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +030029
30static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +030031_codecs_lookup(PyObject *module, PyObject *arg)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +030032{
33 PyObject *return_value = NULL;
34 const char *encoding;
35
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030036 if (!PyArg_Parse(arg, "s:lookup", &encoding)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +030037 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030038 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +030039 return_value = _codecs_lookup_impl(module, encoding);
40
41exit:
42 return return_value;
43}
44
45PyDoc_STRVAR(_codecs_encode__doc__,
Serhiy Storchakac97a9622015-08-09 12:23:08 +030046"encode($module, /, obj, encoding=\'utf-8\', errors=\'strict\')\n"
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +030047"--\n"
48"\n"
49"Encodes obj using the codec registered for encoding.\n"
50"\n"
Serhiy Storchakac97a9622015-08-09 12:23:08 +030051"The default encoding is \'utf-8\'. errors may be given to set a\n"
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +030052"different error handling scheme. Default is \'strict\' meaning that encoding\n"
53"errors raise a ValueError. Other possible values are \'ignore\', \'replace\'\n"
54"and \'backslashreplace\' as well as any other name registered with\n"
55"codecs.register_error that can handle ValueErrors.");
56
57#define _CODECS_ENCODE_METHODDEF \
58 {"encode", (PyCFunction)_codecs_encode, METH_VARARGS|METH_KEYWORDS, _codecs_encode__doc__},
59
60static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +030061_codecs_encode_impl(PyObject *module, PyObject *obj, const char *encoding,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +030062 const char *errors);
63
64static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +030065_codecs_encode(PyObject *module, PyObject *args, PyObject *kwargs)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +030066{
67 PyObject *return_value = NULL;
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +030068 static const char * const _keywords[] = {"obj", "encoding", "errors", NULL};
69 static _PyArg_Parser _parser = {"O|ss:encode", _keywords, 0};
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +030070 PyObject *obj;
71 const char *encoding = NULL;
72 const char *errors = NULL;
73
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +030074 if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030075 &obj, &encoding, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +030076 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030077 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +030078 return_value = _codecs_encode_impl(module, obj, encoding, errors);
79
80exit:
81 return return_value;
82}
83
84PyDoc_STRVAR(_codecs_decode__doc__,
Serhiy Storchakac97a9622015-08-09 12:23:08 +030085"decode($module, /, obj, encoding=\'utf-8\', errors=\'strict\')\n"
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +030086"--\n"
87"\n"
88"Decodes obj using the codec registered for encoding.\n"
89"\n"
Serhiy Storchakac97a9622015-08-09 12:23:08 +030090"Default encoding is \'utf-8\'. errors may be given to set a\n"
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +030091"different error handling scheme. Default is \'strict\' meaning that encoding\n"
92"errors raise a ValueError. Other possible values are \'ignore\', \'replace\'\n"
93"and \'backslashreplace\' as well as any other name registered with\n"
94"codecs.register_error that can handle ValueErrors.");
95
96#define _CODECS_DECODE_METHODDEF \
97 {"decode", (PyCFunction)_codecs_decode, METH_VARARGS|METH_KEYWORDS, _codecs_decode__doc__},
98
99static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300100_codecs_decode_impl(PyObject *module, PyObject *obj, const char *encoding,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300101 const char *errors);
102
103static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300104_codecs_decode(PyObject *module, PyObject *args, PyObject *kwargs)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300105{
106 PyObject *return_value = NULL;
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +0300107 static const char * const _keywords[] = {"obj", "encoding", "errors", NULL};
108 static _PyArg_Parser _parser = {"O|ss:decode", _keywords, 0};
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300109 PyObject *obj;
110 const char *encoding = NULL;
111 const char *errors = NULL;
112
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +0300113 if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300114 &obj, &encoding, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300115 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300116 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300117 return_value = _codecs_decode_impl(module, obj, encoding, errors);
118
119exit:
120 return return_value;
121}
122
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300123PyDoc_STRVAR(_codecs__forget_codec__doc__,
124"_forget_codec($module, encoding, /)\n"
125"--\n"
126"\n"
127"Purge the named codec from the internal codec lookup cache");
128
129#define _CODECS__FORGET_CODEC_METHODDEF \
Serhiy Storchaka92e8af62015-04-04 00:12:11 +0300130 {"_forget_codec", (PyCFunction)_codecs__forget_codec, METH_O, _codecs__forget_codec__doc__},
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300131
132static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300133_codecs__forget_codec_impl(PyObject *module, const char *encoding);
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300134
135static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300136_codecs__forget_codec(PyObject *module, PyObject *arg)
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300137{
138 PyObject *return_value = NULL;
139 const char *encoding;
140
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300141 if (!PyArg_Parse(arg, "s:_forget_codec", &encoding)) {
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300142 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300143 }
Serhiy Storchaka1009bf12015-04-03 23:53:51 +0300144 return_value = _codecs__forget_codec_impl(module, encoding);
145
146exit:
147 return return_value;
148}
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300149
150PyDoc_STRVAR(_codecs_escape_decode__doc__,
151"escape_decode($module, data, errors=None, /)\n"
152"--\n"
153"\n");
154
155#define _CODECS_ESCAPE_DECODE_METHODDEF \
156 {"escape_decode", (PyCFunction)_codecs_escape_decode, METH_VARARGS, _codecs_escape_decode__doc__},
157
158static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300159_codecs_escape_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300160 const char *errors);
161
162static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300163_codecs_escape_decode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300164{
165 PyObject *return_value = NULL;
166 Py_buffer data = {NULL, NULL};
167 const char *errors = NULL;
168
169 if (!PyArg_ParseTuple(args, "s*|z:escape_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300170 &data, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300171 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300172 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300173 return_value = _codecs_escape_decode_impl(module, &data, errors);
174
175exit:
176 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300177 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300178 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300179 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300180
181 return return_value;
182}
183
184PyDoc_STRVAR(_codecs_escape_encode__doc__,
185"escape_encode($module, data, errors=None, /)\n"
186"--\n"
187"\n");
188
189#define _CODECS_ESCAPE_ENCODE_METHODDEF \
190 {"escape_encode", (PyCFunction)_codecs_escape_encode, METH_VARARGS, _codecs_escape_encode__doc__},
191
192static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300193_codecs_escape_encode_impl(PyObject *module, PyObject *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300194 const char *errors);
195
196static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300197_codecs_escape_encode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300198{
199 PyObject *return_value = NULL;
200 PyObject *data;
201 const char *errors = NULL;
202
203 if (!PyArg_ParseTuple(args, "O!|z:escape_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300204 &PyBytes_Type, &data, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300205 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300206 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300207 return_value = _codecs_escape_encode_impl(module, data, errors);
208
209exit:
210 return return_value;
211}
212
213PyDoc_STRVAR(_codecs_unicode_internal_decode__doc__,
214"unicode_internal_decode($module, obj, errors=None, /)\n"
215"--\n"
216"\n");
217
218#define _CODECS_UNICODE_INTERNAL_DECODE_METHODDEF \
219 {"unicode_internal_decode", (PyCFunction)_codecs_unicode_internal_decode, METH_VARARGS, _codecs_unicode_internal_decode__doc__},
220
221static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300222_codecs_unicode_internal_decode_impl(PyObject *module, PyObject *obj,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300223 const char *errors);
224
225static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300226_codecs_unicode_internal_decode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300227{
228 PyObject *return_value = NULL;
229 PyObject *obj;
230 const char *errors = NULL;
231
232 if (!PyArg_ParseTuple(args, "O|z:unicode_internal_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300233 &obj, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300234 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300235 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300236 return_value = _codecs_unicode_internal_decode_impl(module, obj, errors);
237
238exit:
239 return return_value;
240}
241
242PyDoc_STRVAR(_codecs_utf_7_decode__doc__,
243"utf_7_decode($module, data, errors=None, final=False, /)\n"
244"--\n"
245"\n");
246
247#define _CODECS_UTF_7_DECODE_METHODDEF \
248 {"utf_7_decode", (PyCFunction)_codecs_utf_7_decode, METH_VARARGS, _codecs_utf_7_decode__doc__},
249
250static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300251_codecs_utf_7_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300252 const char *errors, int final);
253
254static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300255_codecs_utf_7_decode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300256{
257 PyObject *return_value = NULL;
258 Py_buffer data = {NULL, NULL};
259 const char *errors = NULL;
260 int final = 0;
261
262 if (!PyArg_ParseTuple(args, "y*|zi:utf_7_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300263 &data, &errors, &final)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300264 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300265 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300266 return_value = _codecs_utf_7_decode_impl(module, &data, errors, final);
267
268exit:
269 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300270 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300271 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300272 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300273
274 return return_value;
275}
276
277PyDoc_STRVAR(_codecs_utf_8_decode__doc__,
278"utf_8_decode($module, data, errors=None, final=False, /)\n"
279"--\n"
280"\n");
281
282#define _CODECS_UTF_8_DECODE_METHODDEF \
283 {"utf_8_decode", (PyCFunction)_codecs_utf_8_decode, METH_VARARGS, _codecs_utf_8_decode__doc__},
284
285static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300286_codecs_utf_8_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300287 const char *errors, int final);
288
289static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300290_codecs_utf_8_decode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300291{
292 PyObject *return_value = NULL;
293 Py_buffer data = {NULL, NULL};
294 const char *errors = NULL;
295 int final = 0;
296
297 if (!PyArg_ParseTuple(args, "y*|zi:utf_8_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300298 &data, &errors, &final)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300299 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300300 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300301 return_value = _codecs_utf_8_decode_impl(module, &data, errors, final);
302
303exit:
304 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300305 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300306 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300307 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300308
309 return return_value;
310}
311
312PyDoc_STRVAR(_codecs_utf_16_decode__doc__,
313"utf_16_decode($module, data, errors=None, final=False, /)\n"
314"--\n"
315"\n");
316
317#define _CODECS_UTF_16_DECODE_METHODDEF \
318 {"utf_16_decode", (PyCFunction)_codecs_utf_16_decode, METH_VARARGS, _codecs_utf_16_decode__doc__},
319
320static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300321_codecs_utf_16_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300322 const char *errors, int final);
323
324static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300325_codecs_utf_16_decode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300326{
327 PyObject *return_value = NULL;
328 Py_buffer data = {NULL, NULL};
329 const char *errors = NULL;
330 int final = 0;
331
332 if (!PyArg_ParseTuple(args, "y*|zi:utf_16_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300333 &data, &errors, &final)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300334 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300335 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300336 return_value = _codecs_utf_16_decode_impl(module, &data, errors, final);
337
338exit:
339 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300340 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300341 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300342 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300343
344 return return_value;
345}
346
347PyDoc_STRVAR(_codecs_utf_16_le_decode__doc__,
348"utf_16_le_decode($module, data, errors=None, final=False, /)\n"
349"--\n"
350"\n");
351
352#define _CODECS_UTF_16_LE_DECODE_METHODDEF \
353 {"utf_16_le_decode", (PyCFunction)_codecs_utf_16_le_decode, METH_VARARGS, _codecs_utf_16_le_decode__doc__},
354
355static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300356_codecs_utf_16_le_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300357 const char *errors, int final);
358
359static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300360_codecs_utf_16_le_decode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300361{
362 PyObject *return_value = NULL;
363 Py_buffer data = {NULL, NULL};
364 const char *errors = NULL;
365 int final = 0;
366
367 if (!PyArg_ParseTuple(args, "y*|zi:utf_16_le_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300368 &data, &errors, &final)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300369 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300370 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300371 return_value = _codecs_utf_16_le_decode_impl(module, &data, errors, final);
372
373exit:
374 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300375 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300376 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300377 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300378
379 return return_value;
380}
381
382PyDoc_STRVAR(_codecs_utf_16_be_decode__doc__,
383"utf_16_be_decode($module, data, errors=None, final=False, /)\n"
384"--\n"
385"\n");
386
387#define _CODECS_UTF_16_BE_DECODE_METHODDEF \
388 {"utf_16_be_decode", (PyCFunction)_codecs_utf_16_be_decode, METH_VARARGS, _codecs_utf_16_be_decode__doc__},
389
390static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300391_codecs_utf_16_be_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300392 const char *errors, int final);
393
394static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300395_codecs_utf_16_be_decode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300396{
397 PyObject *return_value = NULL;
398 Py_buffer data = {NULL, NULL};
399 const char *errors = NULL;
400 int final = 0;
401
402 if (!PyArg_ParseTuple(args, "y*|zi:utf_16_be_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300403 &data, &errors, &final)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300404 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300405 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300406 return_value = _codecs_utf_16_be_decode_impl(module, &data, errors, final);
407
408exit:
409 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300410 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300411 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300412 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300413
414 return return_value;
415}
416
417PyDoc_STRVAR(_codecs_utf_16_ex_decode__doc__,
418"utf_16_ex_decode($module, data, errors=None, byteorder=0, final=False,\n"
419" /)\n"
420"--\n"
421"\n");
422
423#define _CODECS_UTF_16_EX_DECODE_METHODDEF \
424 {"utf_16_ex_decode", (PyCFunction)_codecs_utf_16_ex_decode, METH_VARARGS, _codecs_utf_16_ex_decode__doc__},
425
426static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300427_codecs_utf_16_ex_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300428 const char *errors, int byteorder, int final);
429
430static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300431_codecs_utf_16_ex_decode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300432{
433 PyObject *return_value = NULL;
434 Py_buffer data = {NULL, NULL};
435 const char *errors = NULL;
436 int byteorder = 0;
437 int final = 0;
438
439 if (!PyArg_ParseTuple(args, "y*|zii:utf_16_ex_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300440 &data, &errors, &byteorder, &final)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300441 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300442 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300443 return_value = _codecs_utf_16_ex_decode_impl(module, &data, errors, byteorder, final);
444
445exit:
446 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300447 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300448 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300449 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300450
451 return return_value;
452}
453
454PyDoc_STRVAR(_codecs_utf_32_decode__doc__,
455"utf_32_decode($module, data, errors=None, final=False, /)\n"
456"--\n"
457"\n");
458
459#define _CODECS_UTF_32_DECODE_METHODDEF \
460 {"utf_32_decode", (PyCFunction)_codecs_utf_32_decode, METH_VARARGS, _codecs_utf_32_decode__doc__},
461
462static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300463_codecs_utf_32_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300464 const char *errors, int final);
465
466static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300467_codecs_utf_32_decode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300468{
469 PyObject *return_value = NULL;
470 Py_buffer data = {NULL, NULL};
471 const char *errors = NULL;
472 int final = 0;
473
474 if (!PyArg_ParseTuple(args, "y*|zi:utf_32_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300475 &data, &errors, &final)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300476 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300477 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300478 return_value = _codecs_utf_32_decode_impl(module, &data, errors, final);
479
480exit:
481 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300482 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300483 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300484 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300485
486 return return_value;
487}
488
489PyDoc_STRVAR(_codecs_utf_32_le_decode__doc__,
490"utf_32_le_decode($module, data, errors=None, final=False, /)\n"
491"--\n"
492"\n");
493
494#define _CODECS_UTF_32_LE_DECODE_METHODDEF \
495 {"utf_32_le_decode", (PyCFunction)_codecs_utf_32_le_decode, METH_VARARGS, _codecs_utf_32_le_decode__doc__},
496
497static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300498_codecs_utf_32_le_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300499 const char *errors, int final);
500
501static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300502_codecs_utf_32_le_decode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300503{
504 PyObject *return_value = NULL;
505 Py_buffer data = {NULL, NULL};
506 const char *errors = NULL;
507 int final = 0;
508
509 if (!PyArg_ParseTuple(args, "y*|zi:utf_32_le_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300510 &data, &errors, &final)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300511 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300512 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300513 return_value = _codecs_utf_32_le_decode_impl(module, &data, errors, final);
514
515exit:
516 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300517 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300518 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300519 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300520
521 return return_value;
522}
523
524PyDoc_STRVAR(_codecs_utf_32_be_decode__doc__,
525"utf_32_be_decode($module, data, errors=None, final=False, /)\n"
526"--\n"
527"\n");
528
529#define _CODECS_UTF_32_BE_DECODE_METHODDEF \
530 {"utf_32_be_decode", (PyCFunction)_codecs_utf_32_be_decode, METH_VARARGS, _codecs_utf_32_be_decode__doc__},
531
532static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300533_codecs_utf_32_be_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300534 const char *errors, int final);
535
536static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300537_codecs_utf_32_be_decode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300538{
539 PyObject *return_value = NULL;
540 Py_buffer data = {NULL, NULL};
541 const char *errors = NULL;
542 int final = 0;
543
544 if (!PyArg_ParseTuple(args, "y*|zi:utf_32_be_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300545 &data, &errors, &final)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300546 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300547 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300548 return_value = _codecs_utf_32_be_decode_impl(module, &data, errors, final);
549
550exit:
551 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300552 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300553 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300554 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300555
556 return return_value;
557}
558
559PyDoc_STRVAR(_codecs_utf_32_ex_decode__doc__,
560"utf_32_ex_decode($module, data, errors=None, byteorder=0, final=False,\n"
561" /)\n"
562"--\n"
563"\n");
564
565#define _CODECS_UTF_32_EX_DECODE_METHODDEF \
566 {"utf_32_ex_decode", (PyCFunction)_codecs_utf_32_ex_decode, METH_VARARGS, _codecs_utf_32_ex_decode__doc__},
567
568static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300569_codecs_utf_32_ex_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300570 const char *errors, int byteorder, int final);
571
572static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300573_codecs_utf_32_ex_decode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300574{
575 PyObject *return_value = NULL;
576 Py_buffer data = {NULL, NULL};
577 const char *errors = NULL;
578 int byteorder = 0;
579 int final = 0;
580
581 if (!PyArg_ParseTuple(args, "y*|zii:utf_32_ex_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300582 &data, &errors, &byteorder, &final)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300583 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300584 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300585 return_value = _codecs_utf_32_ex_decode_impl(module, &data, errors, byteorder, final);
586
587exit:
588 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300589 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300590 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300591 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300592
593 return return_value;
594}
595
596PyDoc_STRVAR(_codecs_unicode_escape_decode__doc__,
597"unicode_escape_decode($module, data, errors=None, /)\n"
598"--\n"
599"\n");
600
601#define _CODECS_UNICODE_ESCAPE_DECODE_METHODDEF \
602 {"unicode_escape_decode", (PyCFunction)_codecs_unicode_escape_decode, METH_VARARGS, _codecs_unicode_escape_decode__doc__},
603
604static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300605_codecs_unicode_escape_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300606 const char *errors);
607
608static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300609_codecs_unicode_escape_decode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300610{
611 PyObject *return_value = NULL;
612 Py_buffer data = {NULL, NULL};
613 const char *errors = NULL;
614
615 if (!PyArg_ParseTuple(args, "s*|z:unicode_escape_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300616 &data, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300617 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300618 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300619 return_value = _codecs_unicode_escape_decode_impl(module, &data, errors);
620
621exit:
622 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300623 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300624 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300625 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300626
627 return return_value;
628}
629
630PyDoc_STRVAR(_codecs_raw_unicode_escape_decode__doc__,
631"raw_unicode_escape_decode($module, data, errors=None, /)\n"
632"--\n"
633"\n");
634
635#define _CODECS_RAW_UNICODE_ESCAPE_DECODE_METHODDEF \
636 {"raw_unicode_escape_decode", (PyCFunction)_codecs_raw_unicode_escape_decode, METH_VARARGS, _codecs_raw_unicode_escape_decode__doc__},
637
638static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300639_codecs_raw_unicode_escape_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300640 const char *errors);
641
642static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300643_codecs_raw_unicode_escape_decode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300644{
645 PyObject *return_value = NULL;
646 Py_buffer data = {NULL, NULL};
647 const char *errors = NULL;
648
649 if (!PyArg_ParseTuple(args, "s*|z:raw_unicode_escape_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300650 &data, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300651 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300652 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300653 return_value = _codecs_raw_unicode_escape_decode_impl(module, &data, errors);
654
655exit:
656 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300657 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300658 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300659 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300660
661 return return_value;
662}
663
664PyDoc_STRVAR(_codecs_latin_1_decode__doc__,
665"latin_1_decode($module, data, errors=None, /)\n"
666"--\n"
667"\n");
668
669#define _CODECS_LATIN_1_DECODE_METHODDEF \
670 {"latin_1_decode", (PyCFunction)_codecs_latin_1_decode, METH_VARARGS, _codecs_latin_1_decode__doc__},
671
672static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300673_codecs_latin_1_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300674 const char *errors);
675
676static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300677_codecs_latin_1_decode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300678{
679 PyObject *return_value = NULL;
680 Py_buffer data = {NULL, NULL};
681 const char *errors = NULL;
682
683 if (!PyArg_ParseTuple(args, "y*|z:latin_1_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300684 &data, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300685 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300686 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300687 return_value = _codecs_latin_1_decode_impl(module, &data, errors);
688
689exit:
690 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300691 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300692 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300693 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300694
695 return return_value;
696}
697
698PyDoc_STRVAR(_codecs_ascii_decode__doc__,
699"ascii_decode($module, data, errors=None, /)\n"
700"--\n"
701"\n");
702
703#define _CODECS_ASCII_DECODE_METHODDEF \
704 {"ascii_decode", (PyCFunction)_codecs_ascii_decode, METH_VARARGS, _codecs_ascii_decode__doc__},
705
706static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300707_codecs_ascii_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300708 const char *errors);
709
710static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300711_codecs_ascii_decode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300712{
713 PyObject *return_value = NULL;
714 Py_buffer data = {NULL, NULL};
715 const char *errors = NULL;
716
717 if (!PyArg_ParseTuple(args, "y*|z:ascii_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300718 &data, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300719 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300720 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300721 return_value = _codecs_ascii_decode_impl(module, &data, errors);
722
723exit:
724 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300725 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300726 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300727 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300728
729 return return_value;
730}
731
732PyDoc_STRVAR(_codecs_charmap_decode__doc__,
733"charmap_decode($module, data, errors=None, mapping=None, /)\n"
734"--\n"
735"\n");
736
737#define _CODECS_CHARMAP_DECODE_METHODDEF \
738 {"charmap_decode", (PyCFunction)_codecs_charmap_decode, METH_VARARGS, _codecs_charmap_decode__doc__},
739
740static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300741_codecs_charmap_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300742 const char *errors, PyObject *mapping);
743
744static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300745_codecs_charmap_decode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300746{
747 PyObject *return_value = NULL;
748 Py_buffer data = {NULL, NULL};
749 const char *errors = NULL;
750 PyObject *mapping = NULL;
751
752 if (!PyArg_ParseTuple(args, "y*|zO:charmap_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300753 &data, &errors, &mapping)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300754 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300755 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300756 return_value = _codecs_charmap_decode_impl(module, &data, errors, mapping);
757
758exit:
759 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300760 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300761 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300762 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300763
764 return return_value;
765}
766
767#if defined(HAVE_MBCS)
768
769PyDoc_STRVAR(_codecs_mbcs_decode__doc__,
770"mbcs_decode($module, data, errors=None, final=False, /)\n"
771"--\n"
772"\n");
773
774#define _CODECS_MBCS_DECODE_METHODDEF \
775 {"mbcs_decode", (PyCFunction)_codecs_mbcs_decode, METH_VARARGS, _codecs_mbcs_decode__doc__},
776
777static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300778_codecs_mbcs_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300779 const char *errors, int final);
780
781static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300782_codecs_mbcs_decode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300783{
784 PyObject *return_value = NULL;
785 Py_buffer data = {NULL, NULL};
786 const char *errors = NULL;
787 int final = 0;
788
789 if (!PyArg_ParseTuple(args, "y*|zi:mbcs_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300790 &data, &errors, &final)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300791 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300792 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300793 return_value = _codecs_mbcs_decode_impl(module, &data, errors, final);
794
795exit:
796 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300797 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300798 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300799 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300800
801 return return_value;
802}
803
804#endif /* defined(HAVE_MBCS) */
805
806#if defined(HAVE_MBCS)
807
808PyDoc_STRVAR(_codecs_code_page_decode__doc__,
809"code_page_decode($module, codepage, data, errors=None, final=False, /)\n"
810"--\n"
811"\n");
812
813#define _CODECS_CODE_PAGE_DECODE_METHODDEF \
814 {"code_page_decode", (PyCFunction)_codecs_code_page_decode, METH_VARARGS, _codecs_code_page_decode__doc__},
815
816static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300817_codecs_code_page_decode_impl(PyObject *module, int codepage,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300818 Py_buffer *data, const char *errors, int final);
819
820static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300821_codecs_code_page_decode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300822{
823 PyObject *return_value = NULL;
824 int codepage;
825 Py_buffer data = {NULL, NULL};
826 const char *errors = NULL;
827 int final = 0;
828
829 if (!PyArg_ParseTuple(args, "iy*|zi:code_page_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300830 &codepage, &data, &errors, &final)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300831 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300832 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300833 return_value = _codecs_code_page_decode_impl(module, codepage, &data, errors, final);
834
835exit:
836 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300837 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300838 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300839 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300840
841 return return_value;
842}
843
844#endif /* defined(HAVE_MBCS) */
845
846PyDoc_STRVAR(_codecs_readbuffer_encode__doc__,
847"readbuffer_encode($module, data, errors=None, /)\n"
848"--\n"
849"\n");
850
851#define _CODECS_READBUFFER_ENCODE_METHODDEF \
852 {"readbuffer_encode", (PyCFunction)_codecs_readbuffer_encode, METH_VARARGS, _codecs_readbuffer_encode__doc__},
853
854static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300855_codecs_readbuffer_encode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300856 const char *errors);
857
858static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300859_codecs_readbuffer_encode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300860{
861 PyObject *return_value = NULL;
862 Py_buffer data = {NULL, NULL};
863 const char *errors = NULL;
864
865 if (!PyArg_ParseTuple(args, "s*|z:readbuffer_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300866 &data, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300867 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300868 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300869 return_value = _codecs_readbuffer_encode_impl(module, &data, errors);
870
871exit:
872 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300873 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300874 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300875 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300876
877 return return_value;
878}
879
880PyDoc_STRVAR(_codecs_unicode_internal_encode__doc__,
881"unicode_internal_encode($module, obj, errors=None, /)\n"
882"--\n"
883"\n");
884
885#define _CODECS_UNICODE_INTERNAL_ENCODE_METHODDEF \
886 {"unicode_internal_encode", (PyCFunction)_codecs_unicode_internal_encode, METH_VARARGS, _codecs_unicode_internal_encode__doc__},
887
888static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300889_codecs_unicode_internal_encode_impl(PyObject *module, PyObject *obj,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300890 const char *errors);
891
892static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300893_codecs_unicode_internal_encode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300894{
895 PyObject *return_value = NULL;
896 PyObject *obj;
897 const char *errors = NULL;
898
899 if (!PyArg_ParseTuple(args, "O|z:unicode_internal_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300900 &obj, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300901 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300902 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300903 return_value = _codecs_unicode_internal_encode_impl(module, obj, errors);
904
905exit:
906 return return_value;
907}
908
909PyDoc_STRVAR(_codecs_utf_7_encode__doc__,
910"utf_7_encode($module, str, errors=None, /)\n"
911"--\n"
912"\n");
913
914#define _CODECS_UTF_7_ENCODE_METHODDEF \
915 {"utf_7_encode", (PyCFunction)_codecs_utf_7_encode, METH_VARARGS, _codecs_utf_7_encode__doc__},
916
917static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300918_codecs_utf_7_encode_impl(PyObject *module, PyObject *str,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300919 const char *errors);
920
921static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300922_codecs_utf_7_encode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300923{
924 PyObject *return_value = NULL;
925 PyObject *str;
926 const char *errors = NULL;
927
Serhiy Storchaka2eb6b0d2016-04-14 12:30:54 +0300928 if (!PyArg_ParseTuple(args, "U|z:utf_7_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300929 &str, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300930 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300931 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300932 return_value = _codecs_utf_7_encode_impl(module, str, errors);
933
934exit:
935 return return_value;
936}
937
938PyDoc_STRVAR(_codecs_utf_8_encode__doc__,
939"utf_8_encode($module, str, errors=None, /)\n"
940"--\n"
941"\n");
942
943#define _CODECS_UTF_8_ENCODE_METHODDEF \
944 {"utf_8_encode", (PyCFunction)_codecs_utf_8_encode, METH_VARARGS, _codecs_utf_8_encode__doc__},
945
946static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300947_codecs_utf_8_encode_impl(PyObject *module, PyObject *str,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300948 const char *errors);
949
950static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300951_codecs_utf_8_encode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300952{
953 PyObject *return_value = NULL;
954 PyObject *str;
955 const char *errors = NULL;
956
Serhiy Storchaka2eb6b0d2016-04-14 12:30:54 +0300957 if (!PyArg_ParseTuple(args, "U|z:utf_8_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300958 &str, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300959 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300960 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300961 return_value = _codecs_utf_8_encode_impl(module, str, errors);
962
963exit:
964 return return_value;
965}
966
967PyDoc_STRVAR(_codecs_utf_16_encode__doc__,
968"utf_16_encode($module, str, errors=None, byteorder=0, /)\n"
969"--\n"
970"\n");
971
972#define _CODECS_UTF_16_ENCODE_METHODDEF \
973 {"utf_16_encode", (PyCFunction)_codecs_utf_16_encode, METH_VARARGS, _codecs_utf_16_encode__doc__},
974
975static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300976_codecs_utf_16_encode_impl(PyObject *module, PyObject *str,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300977 const char *errors, int byteorder);
978
979static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300980_codecs_utf_16_encode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300981{
982 PyObject *return_value = NULL;
983 PyObject *str;
984 const char *errors = NULL;
985 int byteorder = 0;
986
Serhiy Storchaka2eb6b0d2016-04-14 12:30:54 +0300987 if (!PyArg_ParseTuple(args, "U|zi:utf_16_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300988 &str, &errors, &byteorder)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300989 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300990 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300991 return_value = _codecs_utf_16_encode_impl(module, str, errors, byteorder);
992
993exit:
994 return return_value;
995}
996
997PyDoc_STRVAR(_codecs_utf_16_le_encode__doc__,
998"utf_16_le_encode($module, str, errors=None, /)\n"
999"--\n"
1000"\n");
1001
1002#define _CODECS_UTF_16_LE_ENCODE_METHODDEF \
1003 {"utf_16_le_encode", (PyCFunction)_codecs_utf_16_le_encode, METH_VARARGS, _codecs_utf_16_le_encode__doc__},
1004
1005static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001006_codecs_utf_16_le_encode_impl(PyObject *module, PyObject *str,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001007 const char *errors);
1008
1009static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001010_codecs_utf_16_le_encode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001011{
1012 PyObject *return_value = NULL;
1013 PyObject *str;
1014 const char *errors = NULL;
1015
Serhiy Storchaka2eb6b0d2016-04-14 12:30:54 +03001016 if (!PyArg_ParseTuple(args, "U|z:utf_16_le_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001017 &str, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001018 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001019 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001020 return_value = _codecs_utf_16_le_encode_impl(module, str, errors);
1021
1022exit:
1023 return return_value;
1024}
1025
1026PyDoc_STRVAR(_codecs_utf_16_be_encode__doc__,
1027"utf_16_be_encode($module, str, errors=None, /)\n"
1028"--\n"
1029"\n");
1030
1031#define _CODECS_UTF_16_BE_ENCODE_METHODDEF \
1032 {"utf_16_be_encode", (PyCFunction)_codecs_utf_16_be_encode, METH_VARARGS, _codecs_utf_16_be_encode__doc__},
1033
1034static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001035_codecs_utf_16_be_encode_impl(PyObject *module, PyObject *str,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001036 const char *errors);
1037
1038static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001039_codecs_utf_16_be_encode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001040{
1041 PyObject *return_value = NULL;
1042 PyObject *str;
1043 const char *errors = NULL;
1044
Serhiy Storchaka2eb6b0d2016-04-14 12:30:54 +03001045 if (!PyArg_ParseTuple(args, "U|z:utf_16_be_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001046 &str, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001047 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001048 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001049 return_value = _codecs_utf_16_be_encode_impl(module, str, errors);
1050
1051exit:
1052 return return_value;
1053}
1054
1055PyDoc_STRVAR(_codecs_utf_32_encode__doc__,
1056"utf_32_encode($module, str, errors=None, byteorder=0, /)\n"
1057"--\n"
1058"\n");
1059
1060#define _CODECS_UTF_32_ENCODE_METHODDEF \
1061 {"utf_32_encode", (PyCFunction)_codecs_utf_32_encode, METH_VARARGS, _codecs_utf_32_encode__doc__},
1062
1063static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001064_codecs_utf_32_encode_impl(PyObject *module, PyObject *str,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001065 const char *errors, int byteorder);
1066
1067static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001068_codecs_utf_32_encode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001069{
1070 PyObject *return_value = NULL;
1071 PyObject *str;
1072 const char *errors = NULL;
1073 int byteorder = 0;
1074
Serhiy Storchaka2eb6b0d2016-04-14 12:30:54 +03001075 if (!PyArg_ParseTuple(args, "U|zi:utf_32_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001076 &str, &errors, &byteorder)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001077 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001078 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001079 return_value = _codecs_utf_32_encode_impl(module, str, errors, byteorder);
1080
1081exit:
1082 return return_value;
1083}
1084
1085PyDoc_STRVAR(_codecs_utf_32_le_encode__doc__,
1086"utf_32_le_encode($module, str, errors=None, /)\n"
1087"--\n"
1088"\n");
1089
1090#define _CODECS_UTF_32_LE_ENCODE_METHODDEF \
1091 {"utf_32_le_encode", (PyCFunction)_codecs_utf_32_le_encode, METH_VARARGS, _codecs_utf_32_le_encode__doc__},
1092
1093static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001094_codecs_utf_32_le_encode_impl(PyObject *module, PyObject *str,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001095 const char *errors);
1096
1097static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001098_codecs_utf_32_le_encode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001099{
1100 PyObject *return_value = NULL;
1101 PyObject *str;
1102 const char *errors = NULL;
1103
Serhiy Storchaka2eb6b0d2016-04-14 12:30:54 +03001104 if (!PyArg_ParseTuple(args, "U|z:utf_32_le_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001105 &str, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001106 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001107 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001108 return_value = _codecs_utf_32_le_encode_impl(module, str, errors);
1109
1110exit:
1111 return return_value;
1112}
1113
1114PyDoc_STRVAR(_codecs_utf_32_be_encode__doc__,
1115"utf_32_be_encode($module, str, errors=None, /)\n"
1116"--\n"
1117"\n");
1118
1119#define _CODECS_UTF_32_BE_ENCODE_METHODDEF \
1120 {"utf_32_be_encode", (PyCFunction)_codecs_utf_32_be_encode, METH_VARARGS, _codecs_utf_32_be_encode__doc__},
1121
1122static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001123_codecs_utf_32_be_encode_impl(PyObject *module, PyObject *str,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001124 const char *errors);
1125
1126static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001127_codecs_utf_32_be_encode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001128{
1129 PyObject *return_value = NULL;
1130 PyObject *str;
1131 const char *errors = NULL;
1132
Serhiy Storchaka2eb6b0d2016-04-14 12:30:54 +03001133 if (!PyArg_ParseTuple(args, "U|z:utf_32_be_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001134 &str, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001135 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001136 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001137 return_value = _codecs_utf_32_be_encode_impl(module, str, errors);
1138
1139exit:
1140 return return_value;
1141}
1142
1143PyDoc_STRVAR(_codecs_unicode_escape_encode__doc__,
1144"unicode_escape_encode($module, str, errors=None, /)\n"
1145"--\n"
1146"\n");
1147
1148#define _CODECS_UNICODE_ESCAPE_ENCODE_METHODDEF \
1149 {"unicode_escape_encode", (PyCFunction)_codecs_unicode_escape_encode, METH_VARARGS, _codecs_unicode_escape_encode__doc__},
1150
1151static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001152_codecs_unicode_escape_encode_impl(PyObject *module, PyObject *str,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001153 const char *errors);
1154
1155static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001156_codecs_unicode_escape_encode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001157{
1158 PyObject *return_value = NULL;
1159 PyObject *str;
1160 const char *errors = NULL;
1161
Serhiy Storchaka2eb6b0d2016-04-14 12:30:54 +03001162 if (!PyArg_ParseTuple(args, "U|z:unicode_escape_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001163 &str, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001164 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001165 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001166 return_value = _codecs_unicode_escape_encode_impl(module, str, errors);
1167
1168exit:
1169 return return_value;
1170}
1171
1172PyDoc_STRVAR(_codecs_raw_unicode_escape_encode__doc__,
1173"raw_unicode_escape_encode($module, str, errors=None, /)\n"
1174"--\n"
1175"\n");
1176
1177#define _CODECS_RAW_UNICODE_ESCAPE_ENCODE_METHODDEF \
1178 {"raw_unicode_escape_encode", (PyCFunction)_codecs_raw_unicode_escape_encode, METH_VARARGS, _codecs_raw_unicode_escape_encode__doc__},
1179
1180static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001181_codecs_raw_unicode_escape_encode_impl(PyObject *module, PyObject *str,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001182 const char *errors);
1183
1184static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001185_codecs_raw_unicode_escape_encode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001186{
1187 PyObject *return_value = NULL;
1188 PyObject *str;
1189 const char *errors = NULL;
1190
Serhiy Storchaka2eb6b0d2016-04-14 12:30:54 +03001191 if (!PyArg_ParseTuple(args, "U|z:raw_unicode_escape_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001192 &str, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001193 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001194 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001195 return_value = _codecs_raw_unicode_escape_encode_impl(module, str, errors);
1196
1197exit:
1198 return return_value;
1199}
1200
1201PyDoc_STRVAR(_codecs_latin_1_encode__doc__,
1202"latin_1_encode($module, str, errors=None, /)\n"
1203"--\n"
1204"\n");
1205
1206#define _CODECS_LATIN_1_ENCODE_METHODDEF \
1207 {"latin_1_encode", (PyCFunction)_codecs_latin_1_encode, METH_VARARGS, _codecs_latin_1_encode__doc__},
1208
1209static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001210_codecs_latin_1_encode_impl(PyObject *module, PyObject *str,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001211 const char *errors);
1212
1213static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001214_codecs_latin_1_encode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001215{
1216 PyObject *return_value = NULL;
1217 PyObject *str;
1218 const char *errors = NULL;
1219
Serhiy Storchaka2eb6b0d2016-04-14 12:30:54 +03001220 if (!PyArg_ParseTuple(args, "U|z:latin_1_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001221 &str, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001222 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001223 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001224 return_value = _codecs_latin_1_encode_impl(module, str, errors);
1225
1226exit:
1227 return return_value;
1228}
1229
1230PyDoc_STRVAR(_codecs_ascii_encode__doc__,
1231"ascii_encode($module, str, errors=None, /)\n"
1232"--\n"
1233"\n");
1234
1235#define _CODECS_ASCII_ENCODE_METHODDEF \
1236 {"ascii_encode", (PyCFunction)_codecs_ascii_encode, METH_VARARGS, _codecs_ascii_encode__doc__},
1237
1238static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001239_codecs_ascii_encode_impl(PyObject *module, PyObject *str,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001240 const char *errors);
1241
1242static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001243_codecs_ascii_encode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001244{
1245 PyObject *return_value = NULL;
1246 PyObject *str;
1247 const char *errors = NULL;
1248
Serhiy Storchaka2eb6b0d2016-04-14 12:30:54 +03001249 if (!PyArg_ParseTuple(args, "U|z:ascii_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001250 &str, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001251 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001252 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001253 return_value = _codecs_ascii_encode_impl(module, str, errors);
1254
1255exit:
1256 return return_value;
1257}
1258
1259PyDoc_STRVAR(_codecs_charmap_encode__doc__,
1260"charmap_encode($module, str, errors=None, mapping=None, /)\n"
1261"--\n"
1262"\n");
1263
1264#define _CODECS_CHARMAP_ENCODE_METHODDEF \
1265 {"charmap_encode", (PyCFunction)_codecs_charmap_encode, METH_VARARGS, _codecs_charmap_encode__doc__},
1266
1267static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001268_codecs_charmap_encode_impl(PyObject *module, PyObject *str,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001269 const char *errors, PyObject *mapping);
1270
1271static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001272_codecs_charmap_encode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001273{
1274 PyObject *return_value = NULL;
1275 PyObject *str;
1276 const char *errors = NULL;
1277 PyObject *mapping = NULL;
1278
Serhiy Storchaka2eb6b0d2016-04-14 12:30:54 +03001279 if (!PyArg_ParseTuple(args, "U|zO:charmap_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001280 &str, &errors, &mapping)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001281 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001282 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001283 return_value = _codecs_charmap_encode_impl(module, str, errors, mapping);
1284
1285exit:
1286 return return_value;
1287}
1288
1289PyDoc_STRVAR(_codecs_charmap_build__doc__,
1290"charmap_build($module, map, /)\n"
1291"--\n"
1292"\n");
1293
1294#define _CODECS_CHARMAP_BUILD_METHODDEF \
1295 {"charmap_build", (PyCFunction)_codecs_charmap_build, METH_O, _codecs_charmap_build__doc__},
1296
1297static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001298_codecs_charmap_build_impl(PyObject *module, PyObject *map);
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001299
1300static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001301_codecs_charmap_build(PyObject *module, PyObject *arg)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001302{
1303 PyObject *return_value = NULL;
1304 PyObject *map;
1305
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001306 if (!PyArg_Parse(arg, "U:charmap_build", &map)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001307 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001308 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001309 return_value = _codecs_charmap_build_impl(module, map);
1310
1311exit:
1312 return return_value;
1313}
1314
1315#if defined(HAVE_MBCS)
1316
1317PyDoc_STRVAR(_codecs_mbcs_encode__doc__,
1318"mbcs_encode($module, str, errors=None, /)\n"
1319"--\n"
1320"\n");
1321
1322#define _CODECS_MBCS_ENCODE_METHODDEF \
1323 {"mbcs_encode", (PyCFunction)_codecs_mbcs_encode, METH_VARARGS, _codecs_mbcs_encode__doc__},
1324
1325static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001326_codecs_mbcs_encode_impl(PyObject *module, PyObject *str, const char *errors);
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001327
1328static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001329_codecs_mbcs_encode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001330{
1331 PyObject *return_value = NULL;
1332 PyObject *str;
1333 const char *errors = NULL;
1334
Serhiy Storchaka2eb6b0d2016-04-14 12:30:54 +03001335 if (!PyArg_ParseTuple(args, "U|z:mbcs_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001336 &str, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001337 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001338 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001339 return_value = _codecs_mbcs_encode_impl(module, str, errors);
1340
1341exit:
1342 return return_value;
1343}
1344
1345#endif /* defined(HAVE_MBCS) */
1346
1347#if defined(HAVE_MBCS)
1348
1349PyDoc_STRVAR(_codecs_code_page_encode__doc__,
1350"code_page_encode($module, code_page, str, errors=None, /)\n"
1351"--\n"
1352"\n");
1353
1354#define _CODECS_CODE_PAGE_ENCODE_METHODDEF \
1355 {"code_page_encode", (PyCFunction)_codecs_code_page_encode, METH_VARARGS, _codecs_code_page_encode__doc__},
1356
1357static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001358_codecs_code_page_encode_impl(PyObject *module, int code_page, PyObject *str,
1359 const char *errors);
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001360
1361static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001362_codecs_code_page_encode(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001363{
1364 PyObject *return_value = NULL;
1365 int code_page;
1366 PyObject *str;
1367 const char *errors = NULL;
1368
Serhiy Storchaka2eb6b0d2016-04-14 12:30:54 +03001369 if (!PyArg_ParseTuple(args, "iU|z:code_page_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001370 &code_page, &str, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001371 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001372 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001373 return_value = _codecs_code_page_encode_impl(module, code_page, str, errors);
1374
1375exit:
1376 return return_value;
1377}
1378
1379#endif /* defined(HAVE_MBCS) */
1380
1381PyDoc_STRVAR(_codecs_register_error__doc__,
1382"register_error($module, errors, handler, /)\n"
1383"--\n"
1384"\n"
1385"Register the specified error handler under the name errors.\n"
1386"\n"
1387"handler must be a callable object, that will be called with an exception\n"
1388"instance containing information about the location of the encoding/decoding\n"
1389"error and must return a (replacement, new position) tuple.");
1390
1391#define _CODECS_REGISTER_ERROR_METHODDEF \
1392 {"register_error", (PyCFunction)_codecs_register_error, METH_VARARGS, _codecs_register_error__doc__},
1393
1394static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001395_codecs_register_error_impl(PyObject *module, const char *errors,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001396 PyObject *handler);
1397
1398static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001399_codecs_register_error(PyObject *module, PyObject *args)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001400{
1401 PyObject *return_value = NULL;
1402 const char *errors;
1403 PyObject *handler;
1404
1405 if (!PyArg_ParseTuple(args, "sO:register_error",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001406 &errors, &handler)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001407 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001408 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001409 return_value = _codecs_register_error_impl(module, errors, handler);
1410
1411exit:
1412 return return_value;
1413}
1414
1415PyDoc_STRVAR(_codecs_lookup_error__doc__,
1416"lookup_error($module, name, /)\n"
1417"--\n"
1418"\n"
1419"lookup_error(errors) -> handler\n"
1420"\n"
1421"Return the error handler for the specified error handling name or raise a\n"
1422"LookupError, if no handler exists under this name.");
1423
1424#define _CODECS_LOOKUP_ERROR_METHODDEF \
1425 {"lookup_error", (PyCFunction)_codecs_lookup_error, METH_O, _codecs_lookup_error__doc__},
1426
1427static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001428_codecs_lookup_error_impl(PyObject *module, const char *name);
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001429
1430static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001431_codecs_lookup_error(PyObject *module, PyObject *arg)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001432{
1433 PyObject *return_value = NULL;
1434 const char *name;
1435
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001436 if (!PyArg_Parse(arg, "s:lookup_error", &name)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001437 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001438 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001439 return_value = _codecs_lookup_error_impl(module, name);
1440
1441exit:
1442 return return_value;
1443}
1444
1445#ifndef _CODECS_MBCS_DECODE_METHODDEF
1446 #define _CODECS_MBCS_DECODE_METHODDEF
1447#endif /* !defined(_CODECS_MBCS_DECODE_METHODDEF) */
1448
1449#ifndef _CODECS_CODE_PAGE_DECODE_METHODDEF
1450 #define _CODECS_CODE_PAGE_DECODE_METHODDEF
1451#endif /* !defined(_CODECS_CODE_PAGE_DECODE_METHODDEF) */
1452
1453#ifndef _CODECS_MBCS_ENCODE_METHODDEF
1454 #define _CODECS_MBCS_ENCODE_METHODDEF
1455#endif /* !defined(_CODECS_MBCS_ENCODE_METHODDEF) */
1456
1457#ifndef _CODECS_CODE_PAGE_ENCODE_METHODDEF
1458 #define _CODECS_CODE_PAGE_ENCODE_METHODDEF
1459#endif /* !defined(_CODECS_CODE_PAGE_ENCODE_METHODDEF) */
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +03001460/*[clinic end generated code: output=0221e4eece62c905 input=a9049054013a1b77]*/