blob: 982fc766c768f6618cd5aca1d434aa1a831ff277 [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 \
Victor Stinner37e4ef72016-09-09 20:00:13 -070058 {"encode", (PyCFunction)_codecs_encode, METH_FASTCALL, _codecs_encode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +030059
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 *
Victor Stinner37e4ef72016-09-09 20:00:13 -070065_codecs_encode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
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
Victor Stinner3e1fad62017-01-17 01:29:01 +010074 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_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 \
Victor Stinner37e4ef72016-09-09 20:00:13 -070097 {"decode", (PyCFunction)_codecs_decode, METH_FASTCALL, _codecs_decode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +030098
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 *
Victor Stinner37e4ef72016-09-09 20:00:13 -0700104_codecs_decode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
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
Victor Stinner3e1fad62017-01-17 01:29:01 +0100113 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_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 \
Victor Stinner259f0e42017-01-17 01:35:17 +0100156 {"escape_decode", (PyCFunction)_codecs_escape_decode, METH_FASTCALL, _codecs_escape_decode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300157
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 *
Victor Stinner259f0e42017-01-17 01:35:17 +0100163_codecs_escape_decode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
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
Victor Stinner259f0e42017-01-17 01:35:17 +0100169 if (!_PyArg_ParseStack(args, nargs, "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 }
Victor Stinner259f0e42017-01-17 01:35:17 +0100173
174 if (!_PyArg_NoStackKeywords("escape_decode", kwnames)) {
175 goto exit;
176 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300177 return_value = _codecs_escape_decode_impl(module, &data, errors);
178
179exit:
180 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300181 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300182 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300183 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300184
185 return return_value;
186}
187
188PyDoc_STRVAR(_codecs_escape_encode__doc__,
189"escape_encode($module, data, errors=None, /)\n"
190"--\n"
191"\n");
192
193#define _CODECS_ESCAPE_ENCODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +0100194 {"escape_encode", (PyCFunction)_codecs_escape_encode, METH_FASTCALL, _codecs_escape_encode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300195
196static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300197_codecs_escape_encode_impl(PyObject *module, PyObject *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300198 const char *errors);
199
200static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +0100201_codecs_escape_encode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300202{
203 PyObject *return_value = NULL;
204 PyObject *data;
205 const char *errors = NULL;
206
Victor Stinner259f0e42017-01-17 01:35:17 +0100207 if (!_PyArg_ParseStack(args, nargs, "O!|z:escape_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300208 &PyBytes_Type, &data, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300209 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300210 }
Victor Stinner259f0e42017-01-17 01:35:17 +0100211
212 if (!_PyArg_NoStackKeywords("escape_encode", kwnames)) {
213 goto exit;
214 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300215 return_value = _codecs_escape_encode_impl(module, data, errors);
216
217exit:
218 return return_value;
219}
220
221PyDoc_STRVAR(_codecs_unicode_internal_decode__doc__,
222"unicode_internal_decode($module, obj, errors=None, /)\n"
223"--\n"
224"\n");
225
226#define _CODECS_UNICODE_INTERNAL_DECODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +0100227 {"unicode_internal_decode", (PyCFunction)_codecs_unicode_internal_decode, METH_FASTCALL, _codecs_unicode_internal_decode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300228
229static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300230_codecs_unicode_internal_decode_impl(PyObject *module, PyObject *obj,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300231 const char *errors);
232
233static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +0100234_codecs_unicode_internal_decode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300235{
236 PyObject *return_value = NULL;
237 PyObject *obj;
238 const char *errors = NULL;
239
Victor Stinner259f0e42017-01-17 01:35:17 +0100240 if (!_PyArg_ParseStack(args, nargs, "O|z:unicode_internal_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300241 &obj, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300242 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300243 }
Victor Stinner259f0e42017-01-17 01:35:17 +0100244
245 if (!_PyArg_NoStackKeywords("unicode_internal_decode", kwnames)) {
246 goto exit;
247 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300248 return_value = _codecs_unicode_internal_decode_impl(module, obj, errors);
249
250exit:
251 return return_value;
252}
253
254PyDoc_STRVAR(_codecs_utf_7_decode__doc__,
255"utf_7_decode($module, data, errors=None, final=False, /)\n"
256"--\n"
257"\n");
258
259#define _CODECS_UTF_7_DECODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +0100260 {"utf_7_decode", (PyCFunction)_codecs_utf_7_decode, METH_FASTCALL, _codecs_utf_7_decode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300261
262static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300263_codecs_utf_7_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300264 const char *errors, int final);
265
266static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +0100267_codecs_utf_7_decode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300268{
269 PyObject *return_value = NULL;
270 Py_buffer data = {NULL, NULL};
271 const char *errors = NULL;
272 int final = 0;
273
Victor Stinner259f0e42017-01-17 01:35:17 +0100274 if (!_PyArg_ParseStack(args, nargs, "y*|zi:utf_7_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300275 &data, &errors, &final)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300276 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300277 }
Victor Stinner259f0e42017-01-17 01:35:17 +0100278
279 if (!_PyArg_NoStackKeywords("utf_7_decode", kwnames)) {
280 goto exit;
281 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300282 return_value = _codecs_utf_7_decode_impl(module, &data, errors, final);
283
284exit:
285 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300286 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300287 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300288 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300289
290 return return_value;
291}
292
293PyDoc_STRVAR(_codecs_utf_8_decode__doc__,
294"utf_8_decode($module, data, errors=None, final=False, /)\n"
295"--\n"
296"\n");
297
298#define _CODECS_UTF_8_DECODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +0100299 {"utf_8_decode", (PyCFunction)_codecs_utf_8_decode, METH_FASTCALL, _codecs_utf_8_decode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300300
301static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300302_codecs_utf_8_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300303 const char *errors, int final);
304
305static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +0100306_codecs_utf_8_decode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300307{
308 PyObject *return_value = NULL;
309 Py_buffer data = {NULL, NULL};
310 const char *errors = NULL;
311 int final = 0;
312
Victor Stinner259f0e42017-01-17 01:35:17 +0100313 if (!_PyArg_ParseStack(args, nargs, "y*|zi:utf_8_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300314 &data, &errors, &final)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300315 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300316 }
Victor Stinner259f0e42017-01-17 01:35:17 +0100317
318 if (!_PyArg_NoStackKeywords("utf_8_decode", kwnames)) {
319 goto exit;
320 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300321 return_value = _codecs_utf_8_decode_impl(module, &data, errors, final);
322
323exit:
324 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300325 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300326 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300327 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300328
329 return return_value;
330}
331
332PyDoc_STRVAR(_codecs_utf_16_decode__doc__,
333"utf_16_decode($module, data, errors=None, final=False, /)\n"
334"--\n"
335"\n");
336
337#define _CODECS_UTF_16_DECODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +0100338 {"utf_16_decode", (PyCFunction)_codecs_utf_16_decode, METH_FASTCALL, _codecs_utf_16_decode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300339
340static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300341_codecs_utf_16_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300342 const char *errors, int final);
343
344static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +0100345_codecs_utf_16_decode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300346{
347 PyObject *return_value = NULL;
348 Py_buffer data = {NULL, NULL};
349 const char *errors = NULL;
350 int final = 0;
351
Victor Stinner259f0e42017-01-17 01:35:17 +0100352 if (!_PyArg_ParseStack(args, nargs, "y*|zi:utf_16_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300353 &data, &errors, &final)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300354 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300355 }
Victor Stinner259f0e42017-01-17 01:35:17 +0100356
357 if (!_PyArg_NoStackKeywords("utf_16_decode", kwnames)) {
358 goto exit;
359 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300360 return_value = _codecs_utf_16_decode_impl(module, &data, errors, final);
361
362exit:
363 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300364 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300365 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300366 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300367
368 return return_value;
369}
370
371PyDoc_STRVAR(_codecs_utf_16_le_decode__doc__,
372"utf_16_le_decode($module, data, errors=None, final=False, /)\n"
373"--\n"
374"\n");
375
376#define _CODECS_UTF_16_LE_DECODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +0100377 {"utf_16_le_decode", (PyCFunction)_codecs_utf_16_le_decode, METH_FASTCALL, _codecs_utf_16_le_decode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300378
379static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300380_codecs_utf_16_le_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300381 const char *errors, int final);
382
383static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +0100384_codecs_utf_16_le_decode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300385{
386 PyObject *return_value = NULL;
387 Py_buffer data = {NULL, NULL};
388 const char *errors = NULL;
389 int final = 0;
390
Victor Stinner259f0e42017-01-17 01:35:17 +0100391 if (!_PyArg_ParseStack(args, nargs, "y*|zi:utf_16_le_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300392 &data, &errors, &final)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300393 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300394 }
Victor Stinner259f0e42017-01-17 01:35:17 +0100395
396 if (!_PyArg_NoStackKeywords("utf_16_le_decode", kwnames)) {
397 goto exit;
398 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300399 return_value = _codecs_utf_16_le_decode_impl(module, &data, errors, final);
400
401exit:
402 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300403 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300404 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300405 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300406
407 return return_value;
408}
409
410PyDoc_STRVAR(_codecs_utf_16_be_decode__doc__,
411"utf_16_be_decode($module, data, errors=None, final=False, /)\n"
412"--\n"
413"\n");
414
415#define _CODECS_UTF_16_BE_DECODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +0100416 {"utf_16_be_decode", (PyCFunction)_codecs_utf_16_be_decode, METH_FASTCALL, _codecs_utf_16_be_decode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300417
418static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300419_codecs_utf_16_be_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300420 const char *errors, int final);
421
422static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +0100423_codecs_utf_16_be_decode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300424{
425 PyObject *return_value = NULL;
426 Py_buffer data = {NULL, NULL};
427 const char *errors = NULL;
428 int final = 0;
429
Victor Stinner259f0e42017-01-17 01:35:17 +0100430 if (!_PyArg_ParseStack(args, nargs, "y*|zi:utf_16_be_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300431 &data, &errors, &final)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300432 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300433 }
Victor Stinner259f0e42017-01-17 01:35:17 +0100434
435 if (!_PyArg_NoStackKeywords("utf_16_be_decode", kwnames)) {
436 goto exit;
437 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300438 return_value = _codecs_utf_16_be_decode_impl(module, &data, errors, final);
439
440exit:
441 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300442 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300443 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300444 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300445
446 return return_value;
447}
448
449PyDoc_STRVAR(_codecs_utf_16_ex_decode__doc__,
450"utf_16_ex_decode($module, data, errors=None, byteorder=0, final=False,\n"
451" /)\n"
452"--\n"
453"\n");
454
455#define _CODECS_UTF_16_EX_DECODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +0100456 {"utf_16_ex_decode", (PyCFunction)_codecs_utf_16_ex_decode, METH_FASTCALL, _codecs_utf_16_ex_decode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300457
458static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300459_codecs_utf_16_ex_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300460 const char *errors, int byteorder, int final);
461
462static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +0100463_codecs_utf_16_ex_decode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300464{
465 PyObject *return_value = NULL;
466 Py_buffer data = {NULL, NULL};
467 const char *errors = NULL;
468 int byteorder = 0;
469 int final = 0;
470
Victor Stinner259f0e42017-01-17 01:35:17 +0100471 if (!_PyArg_ParseStack(args, nargs, "y*|zii:utf_16_ex_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300472 &data, &errors, &byteorder, &final)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300473 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300474 }
Victor Stinner259f0e42017-01-17 01:35:17 +0100475
476 if (!_PyArg_NoStackKeywords("utf_16_ex_decode", kwnames)) {
477 goto exit;
478 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300479 return_value = _codecs_utf_16_ex_decode_impl(module, &data, errors, byteorder, final);
480
481exit:
482 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300483 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300484 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300485 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300486
487 return return_value;
488}
489
490PyDoc_STRVAR(_codecs_utf_32_decode__doc__,
491"utf_32_decode($module, data, errors=None, final=False, /)\n"
492"--\n"
493"\n");
494
495#define _CODECS_UTF_32_DECODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +0100496 {"utf_32_decode", (PyCFunction)_codecs_utf_32_decode, METH_FASTCALL, _codecs_utf_32_decode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300497
498static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300499_codecs_utf_32_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300500 const char *errors, int final);
501
502static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +0100503_codecs_utf_32_decode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300504{
505 PyObject *return_value = NULL;
506 Py_buffer data = {NULL, NULL};
507 const char *errors = NULL;
508 int final = 0;
509
Victor Stinner259f0e42017-01-17 01:35:17 +0100510 if (!_PyArg_ParseStack(args, nargs, "y*|zi:utf_32_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300511 &data, &errors, &final)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300512 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300513 }
Victor Stinner259f0e42017-01-17 01:35:17 +0100514
515 if (!_PyArg_NoStackKeywords("utf_32_decode", kwnames)) {
516 goto exit;
517 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300518 return_value = _codecs_utf_32_decode_impl(module, &data, errors, final);
519
520exit:
521 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300522 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300523 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300524 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300525
526 return return_value;
527}
528
529PyDoc_STRVAR(_codecs_utf_32_le_decode__doc__,
530"utf_32_le_decode($module, data, errors=None, final=False, /)\n"
531"--\n"
532"\n");
533
534#define _CODECS_UTF_32_LE_DECODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +0100535 {"utf_32_le_decode", (PyCFunction)_codecs_utf_32_le_decode, METH_FASTCALL, _codecs_utf_32_le_decode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300536
537static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300538_codecs_utf_32_le_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300539 const char *errors, int final);
540
541static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +0100542_codecs_utf_32_le_decode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300543{
544 PyObject *return_value = NULL;
545 Py_buffer data = {NULL, NULL};
546 const char *errors = NULL;
547 int final = 0;
548
Victor Stinner259f0e42017-01-17 01:35:17 +0100549 if (!_PyArg_ParseStack(args, nargs, "y*|zi:utf_32_le_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300550 &data, &errors, &final)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300551 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300552 }
Victor Stinner259f0e42017-01-17 01:35:17 +0100553
554 if (!_PyArg_NoStackKeywords("utf_32_le_decode", kwnames)) {
555 goto exit;
556 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300557 return_value = _codecs_utf_32_le_decode_impl(module, &data, errors, final);
558
559exit:
560 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300561 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300562 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300563 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300564
565 return return_value;
566}
567
568PyDoc_STRVAR(_codecs_utf_32_be_decode__doc__,
569"utf_32_be_decode($module, data, errors=None, final=False, /)\n"
570"--\n"
571"\n");
572
573#define _CODECS_UTF_32_BE_DECODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +0100574 {"utf_32_be_decode", (PyCFunction)_codecs_utf_32_be_decode, METH_FASTCALL, _codecs_utf_32_be_decode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300575
576static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300577_codecs_utf_32_be_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300578 const char *errors, int final);
579
580static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +0100581_codecs_utf_32_be_decode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300582{
583 PyObject *return_value = NULL;
584 Py_buffer data = {NULL, NULL};
585 const char *errors = NULL;
586 int final = 0;
587
Victor Stinner259f0e42017-01-17 01:35:17 +0100588 if (!_PyArg_ParseStack(args, nargs, "y*|zi:utf_32_be_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300589 &data, &errors, &final)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300590 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300591 }
Victor Stinner259f0e42017-01-17 01:35:17 +0100592
593 if (!_PyArg_NoStackKeywords("utf_32_be_decode", kwnames)) {
594 goto exit;
595 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300596 return_value = _codecs_utf_32_be_decode_impl(module, &data, errors, final);
597
598exit:
599 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300600 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300601 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300602 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300603
604 return return_value;
605}
606
607PyDoc_STRVAR(_codecs_utf_32_ex_decode__doc__,
608"utf_32_ex_decode($module, data, errors=None, byteorder=0, final=False,\n"
609" /)\n"
610"--\n"
611"\n");
612
613#define _CODECS_UTF_32_EX_DECODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +0100614 {"utf_32_ex_decode", (PyCFunction)_codecs_utf_32_ex_decode, METH_FASTCALL, _codecs_utf_32_ex_decode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300615
616static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300617_codecs_utf_32_ex_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300618 const char *errors, int byteorder, int final);
619
620static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +0100621_codecs_utf_32_ex_decode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300622{
623 PyObject *return_value = NULL;
624 Py_buffer data = {NULL, NULL};
625 const char *errors = NULL;
626 int byteorder = 0;
627 int final = 0;
628
Victor Stinner259f0e42017-01-17 01:35:17 +0100629 if (!_PyArg_ParseStack(args, nargs, "y*|zii:utf_32_ex_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300630 &data, &errors, &byteorder, &final)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300631 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300632 }
Victor Stinner259f0e42017-01-17 01:35:17 +0100633
634 if (!_PyArg_NoStackKeywords("utf_32_ex_decode", kwnames)) {
635 goto exit;
636 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300637 return_value = _codecs_utf_32_ex_decode_impl(module, &data, errors, byteorder, final);
638
639exit:
640 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300641 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300642 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300643 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300644
645 return return_value;
646}
647
648PyDoc_STRVAR(_codecs_unicode_escape_decode__doc__,
649"unicode_escape_decode($module, data, errors=None, /)\n"
650"--\n"
651"\n");
652
653#define _CODECS_UNICODE_ESCAPE_DECODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +0100654 {"unicode_escape_decode", (PyCFunction)_codecs_unicode_escape_decode, METH_FASTCALL, _codecs_unicode_escape_decode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300655
656static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300657_codecs_unicode_escape_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300658 const char *errors);
659
660static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +0100661_codecs_unicode_escape_decode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300662{
663 PyObject *return_value = NULL;
664 Py_buffer data = {NULL, NULL};
665 const char *errors = NULL;
666
Victor Stinner259f0e42017-01-17 01:35:17 +0100667 if (!_PyArg_ParseStack(args, nargs, "s*|z:unicode_escape_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300668 &data, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300669 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300670 }
Victor Stinner259f0e42017-01-17 01:35:17 +0100671
672 if (!_PyArg_NoStackKeywords("unicode_escape_decode", kwnames)) {
673 goto exit;
674 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300675 return_value = _codecs_unicode_escape_decode_impl(module, &data, errors);
676
677exit:
678 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300679 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300680 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300681 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300682
683 return return_value;
684}
685
686PyDoc_STRVAR(_codecs_raw_unicode_escape_decode__doc__,
687"raw_unicode_escape_decode($module, data, errors=None, /)\n"
688"--\n"
689"\n");
690
691#define _CODECS_RAW_UNICODE_ESCAPE_DECODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +0100692 {"raw_unicode_escape_decode", (PyCFunction)_codecs_raw_unicode_escape_decode, METH_FASTCALL, _codecs_raw_unicode_escape_decode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300693
694static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300695_codecs_raw_unicode_escape_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300696 const char *errors);
697
698static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +0100699_codecs_raw_unicode_escape_decode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300700{
701 PyObject *return_value = NULL;
702 Py_buffer data = {NULL, NULL};
703 const char *errors = NULL;
704
Victor Stinner259f0e42017-01-17 01:35:17 +0100705 if (!_PyArg_ParseStack(args, nargs, "s*|z:raw_unicode_escape_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300706 &data, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300707 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300708 }
Victor Stinner259f0e42017-01-17 01:35:17 +0100709
710 if (!_PyArg_NoStackKeywords("raw_unicode_escape_decode", kwnames)) {
711 goto exit;
712 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300713 return_value = _codecs_raw_unicode_escape_decode_impl(module, &data, errors);
714
715exit:
716 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300717 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300718 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300719 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300720
721 return return_value;
722}
723
724PyDoc_STRVAR(_codecs_latin_1_decode__doc__,
725"latin_1_decode($module, data, errors=None, /)\n"
726"--\n"
727"\n");
728
729#define _CODECS_LATIN_1_DECODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +0100730 {"latin_1_decode", (PyCFunction)_codecs_latin_1_decode, METH_FASTCALL, _codecs_latin_1_decode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300731
732static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300733_codecs_latin_1_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300734 const char *errors);
735
736static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +0100737_codecs_latin_1_decode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300738{
739 PyObject *return_value = NULL;
740 Py_buffer data = {NULL, NULL};
741 const char *errors = NULL;
742
Victor Stinner259f0e42017-01-17 01:35:17 +0100743 if (!_PyArg_ParseStack(args, nargs, "y*|z:latin_1_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300744 &data, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300745 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300746 }
Victor Stinner259f0e42017-01-17 01:35:17 +0100747
748 if (!_PyArg_NoStackKeywords("latin_1_decode", kwnames)) {
749 goto exit;
750 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300751 return_value = _codecs_latin_1_decode_impl(module, &data, errors);
752
753exit:
754 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300755 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300756 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300757 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300758
759 return return_value;
760}
761
762PyDoc_STRVAR(_codecs_ascii_decode__doc__,
763"ascii_decode($module, data, errors=None, /)\n"
764"--\n"
765"\n");
766
767#define _CODECS_ASCII_DECODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +0100768 {"ascii_decode", (PyCFunction)_codecs_ascii_decode, METH_FASTCALL, _codecs_ascii_decode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300769
770static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300771_codecs_ascii_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300772 const char *errors);
773
774static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +0100775_codecs_ascii_decode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300776{
777 PyObject *return_value = NULL;
778 Py_buffer data = {NULL, NULL};
779 const char *errors = NULL;
780
Victor Stinner259f0e42017-01-17 01:35:17 +0100781 if (!_PyArg_ParseStack(args, nargs, "y*|z:ascii_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300782 &data, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300783 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300784 }
Victor Stinner259f0e42017-01-17 01:35:17 +0100785
786 if (!_PyArg_NoStackKeywords("ascii_decode", kwnames)) {
787 goto exit;
788 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300789 return_value = _codecs_ascii_decode_impl(module, &data, errors);
790
791exit:
792 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300793 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300794 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300795 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300796
797 return return_value;
798}
799
800PyDoc_STRVAR(_codecs_charmap_decode__doc__,
801"charmap_decode($module, data, errors=None, mapping=None, /)\n"
802"--\n"
803"\n");
804
805#define _CODECS_CHARMAP_DECODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +0100806 {"charmap_decode", (PyCFunction)_codecs_charmap_decode, METH_FASTCALL, _codecs_charmap_decode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300807
808static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300809_codecs_charmap_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300810 const char *errors, PyObject *mapping);
811
812static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +0100813_codecs_charmap_decode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300814{
815 PyObject *return_value = NULL;
816 Py_buffer data = {NULL, NULL};
817 const char *errors = NULL;
818 PyObject *mapping = NULL;
819
Victor Stinner259f0e42017-01-17 01:35:17 +0100820 if (!_PyArg_ParseStack(args, nargs, "y*|zO:charmap_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300821 &data, &errors, &mapping)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300822 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300823 }
Victor Stinner259f0e42017-01-17 01:35:17 +0100824
825 if (!_PyArg_NoStackKeywords("charmap_decode", kwnames)) {
826 goto exit;
827 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300828 return_value = _codecs_charmap_decode_impl(module, &data, errors, mapping);
829
830exit:
831 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300832 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300833 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300834 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300835
836 return return_value;
837}
838
Steve Dowercc16be82016-09-08 10:35:16 -0700839#if defined(MS_WINDOWS)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300840
841PyDoc_STRVAR(_codecs_mbcs_decode__doc__,
842"mbcs_decode($module, data, errors=None, final=False, /)\n"
843"--\n"
844"\n");
845
846#define _CODECS_MBCS_DECODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +0100847 {"mbcs_decode", (PyCFunction)_codecs_mbcs_decode, METH_FASTCALL, _codecs_mbcs_decode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300848
849static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300850_codecs_mbcs_decode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300851 const char *errors, int final);
852
853static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +0100854_codecs_mbcs_decode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300855{
856 PyObject *return_value = NULL;
857 Py_buffer data = {NULL, NULL};
858 const char *errors = NULL;
859 int final = 0;
860
Victor Stinner259f0e42017-01-17 01:35:17 +0100861 if (!_PyArg_ParseStack(args, nargs, "y*|zi:mbcs_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300862 &data, &errors, &final)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300863 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300864 }
Victor Stinner259f0e42017-01-17 01:35:17 +0100865
866 if (!_PyArg_NoStackKeywords("mbcs_decode", kwnames)) {
867 goto exit;
868 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300869 return_value = _codecs_mbcs_decode_impl(module, &data, errors, final);
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
Steve Dowercc16be82016-09-08 10:35:16 -0700880#endif /* defined(MS_WINDOWS) */
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300881
Steve Dowercc16be82016-09-08 10:35:16 -0700882#if defined(MS_WINDOWS)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300883
Steve Dowerf5aba582016-09-06 19:42:27 -0700884PyDoc_STRVAR(_codecs_oem_decode__doc__,
885"oem_decode($module, data, errors=None, final=False, /)\n"
886"--\n"
887"\n");
888
889#define _CODECS_OEM_DECODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +0100890 {"oem_decode", (PyCFunction)_codecs_oem_decode, METH_FASTCALL, _codecs_oem_decode__doc__},
Steve Dowerf5aba582016-09-06 19:42:27 -0700891
892static PyObject *
893_codecs_oem_decode_impl(PyObject *module, Py_buffer *data,
894 const char *errors, int final);
895
896static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +0100897_codecs_oem_decode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Steve Dowerf5aba582016-09-06 19:42:27 -0700898{
899 PyObject *return_value = NULL;
900 Py_buffer data = {NULL, NULL};
901 const char *errors = NULL;
902 int final = 0;
903
Victor Stinner259f0e42017-01-17 01:35:17 +0100904 if (!_PyArg_ParseStack(args, nargs, "y*|zi:oem_decode",
Steve Dowerf5aba582016-09-06 19:42:27 -0700905 &data, &errors, &final)) {
906 goto exit;
907 }
Victor Stinner259f0e42017-01-17 01:35:17 +0100908
909 if (!_PyArg_NoStackKeywords("oem_decode", kwnames)) {
910 goto exit;
911 }
Steve Dowerf5aba582016-09-06 19:42:27 -0700912 return_value = _codecs_oem_decode_impl(module, &data, errors, final);
913
914exit:
915 /* Cleanup for data */
916 if (data.obj) {
917 PyBuffer_Release(&data);
918 }
919
920 return return_value;
921}
922
Steve Dowercc16be82016-09-08 10:35:16 -0700923#endif /* defined(MS_WINDOWS) */
Steve Dowerf5aba582016-09-06 19:42:27 -0700924
Steve Dowercc16be82016-09-08 10:35:16 -0700925#if defined(MS_WINDOWS)
Steve Dowerf5aba582016-09-06 19:42:27 -0700926
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300927PyDoc_STRVAR(_codecs_code_page_decode__doc__,
928"code_page_decode($module, codepage, data, errors=None, final=False, /)\n"
929"--\n"
930"\n");
931
932#define _CODECS_CODE_PAGE_DECODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +0100933 {"code_page_decode", (PyCFunction)_codecs_code_page_decode, METH_FASTCALL, _codecs_code_page_decode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300934
935static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300936_codecs_code_page_decode_impl(PyObject *module, int codepage,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300937 Py_buffer *data, const char *errors, int final);
938
939static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +0100940_codecs_code_page_decode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300941{
942 PyObject *return_value = NULL;
943 int codepage;
944 Py_buffer data = {NULL, NULL};
945 const char *errors = NULL;
946 int final = 0;
947
Victor Stinner259f0e42017-01-17 01:35:17 +0100948 if (!_PyArg_ParseStack(args, nargs, "iy*|zi:code_page_decode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300949 &codepage, &data, &errors, &final)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300950 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300951 }
Victor Stinner259f0e42017-01-17 01:35:17 +0100952
953 if (!_PyArg_NoStackKeywords("code_page_decode", kwnames)) {
954 goto exit;
955 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300956 return_value = _codecs_code_page_decode_impl(module, codepage, &data, errors, final);
957
958exit:
959 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300960 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300961 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300962 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300963
964 return return_value;
965}
966
Steve Dowercc16be82016-09-08 10:35:16 -0700967#endif /* defined(MS_WINDOWS) */
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300968
969PyDoc_STRVAR(_codecs_readbuffer_encode__doc__,
970"readbuffer_encode($module, data, errors=None, /)\n"
971"--\n"
972"\n");
973
974#define _CODECS_READBUFFER_ENCODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +0100975 {"readbuffer_encode", (PyCFunction)_codecs_readbuffer_encode, METH_FASTCALL, _codecs_readbuffer_encode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300976
977static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300978_codecs_readbuffer_encode_impl(PyObject *module, Py_buffer *data,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300979 const char *errors);
980
981static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +0100982_codecs_readbuffer_encode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300983{
984 PyObject *return_value = NULL;
985 Py_buffer data = {NULL, NULL};
986 const char *errors = NULL;
987
Victor Stinner259f0e42017-01-17 01:35:17 +0100988 if (!_PyArg_ParseStack(args, nargs, "s*|z:readbuffer_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300989 &data, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300990 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300991 }
Victor Stinner259f0e42017-01-17 01:35:17 +0100992
993 if (!_PyArg_NoStackKeywords("readbuffer_encode", kwnames)) {
994 goto exit;
995 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +0300996 return_value = _codecs_readbuffer_encode_impl(module, &data, errors);
997
998exit:
999 /* Cleanup for data */
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001000 if (data.obj) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001001 PyBuffer_Release(&data);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001002 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001003
1004 return return_value;
1005}
1006
1007PyDoc_STRVAR(_codecs_unicode_internal_encode__doc__,
1008"unicode_internal_encode($module, obj, errors=None, /)\n"
1009"--\n"
1010"\n");
1011
1012#define _CODECS_UNICODE_INTERNAL_ENCODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +01001013 {"unicode_internal_encode", (PyCFunction)_codecs_unicode_internal_encode, METH_FASTCALL, _codecs_unicode_internal_encode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001014
1015static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001016_codecs_unicode_internal_encode_impl(PyObject *module, PyObject *obj,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001017 const char *errors);
1018
1019static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +01001020_codecs_unicode_internal_encode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001021{
1022 PyObject *return_value = NULL;
1023 PyObject *obj;
1024 const char *errors = NULL;
1025
Victor Stinner259f0e42017-01-17 01:35:17 +01001026 if (!_PyArg_ParseStack(args, nargs, "O|z:unicode_internal_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001027 &obj, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001028 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001029 }
Victor Stinner259f0e42017-01-17 01:35:17 +01001030
1031 if (!_PyArg_NoStackKeywords("unicode_internal_encode", kwnames)) {
1032 goto exit;
1033 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001034 return_value = _codecs_unicode_internal_encode_impl(module, obj, errors);
1035
1036exit:
1037 return return_value;
1038}
1039
1040PyDoc_STRVAR(_codecs_utf_7_encode__doc__,
1041"utf_7_encode($module, str, errors=None, /)\n"
1042"--\n"
1043"\n");
1044
1045#define _CODECS_UTF_7_ENCODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +01001046 {"utf_7_encode", (PyCFunction)_codecs_utf_7_encode, METH_FASTCALL, _codecs_utf_7_encode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001047
1048static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001049_codecs_utf_7_encode_impl(PyObject *module, PyObject *str,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001050 const char *errors);
1051
1052static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +01001053_codecs_utf_7_encode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001054{
1055 PyObject *return_value = NULL;
1056 PyObject *str;
1057 const char *errors = NULL;
1058
Victor Stinner259f0e42017-01-17 01:35:17 +01001059 if (!_PyArg_ParseStack(args, nargs, "U|z:utf_7_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001060 &str, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001061 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001062 }
Victor Stinner259f0e42017-01-17 01:35:17 +01001063
1064 if (!_PyArg_NoStackKeywords("utf_7_encode", kwnames)) {
1065 goto exit;
1066 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001067 return_value = _codecs_utf_7_encode_impl(module, str, errors);
1068
1069exit:
1070 return return_value;
1071}
1072
1073PyDoc_STRVAR(_codecs_utf_8_encode__doc__,
1074"utf_8_encode($module, str, errors=None, /)\n"
1075"--\n"
1076"\n");
1077
1078#define _CODECS_UTF_8_ENCODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +01001079 {"utf_8_encode", (PyCFunction)_codecs_utf_8_encode, METH_FASTCALL, _codecs_utf_8_encode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001080
1081static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001082_codecs_utf_8_encode_impl(PyObject *module, PyObject *str,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001083 const char *errors);
1084
1085static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +01001086_codecs_utf_8_encode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001087{
1088 PyObject *return_value = NULL;
1089 PyObject *str;
1090 const char *errors = NULL;
1091
Victor Stinner259f0e42017-01-17 01:35:17 +01001092 if (!_PyArg_ParseStack(args, nargs, "U|z:utf_8_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001093 &str, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001094 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001095 }
Victor Stinner259f0e42017-01-17 01:35:17 +01001096
1097 if (!_PyArg_NoStackKeywords("utf_8_encode", kwnames)) {
1098 goto exit;
1099 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001100 return_value = _codecs_utf_8_encode_impl(module, str, errors);
1101
1102exit:
1103 return return_value;
1104}
1105
1106PyDoc_STRVAR(_codecs_utf_16_encode__doc__,
1107"utf_16_encode($module, str, errors=None, byteorder=0, /)\n"
1108"--\n"
1109"\n");
1110
1111#define _CODECS_UTF_16_ENCODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +01001112 {"utf_16_encode", (PyCFunction)_codecs_utf_16_encode, METH_FASTCALL, _codecs_utf_16_encode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001113
1114static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001115_codecs_utf_16_encode_impl(PyObject *module, PyObject *str,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001116 const char *errors, int byteorder);
1117
1118static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +01001119_codecs_utf_16_encode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001120{
1121 PyObject *return_value = NULL;
1122 PyObject *str;
1123 const char *errors = NULL;
1124 int byteorder = 0;
1125
Victor Stinner259f0e42017-01-17 01:35:17 +01001126 if (!_PyArg_ParseStack(args, nargs, "U|zi:utf_16_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001127 &str, &errors, &byteorder)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001128 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001129 }
Victor Stinner259f0e42017-01-17 01:35:17 +01001130
1131 if (!_PyArg_NoStackKeywords("utf_16_encode", kwnames)) {
1132 goto exit;
1133 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001134 return_value = _codecs_utf_16_encode_impl(module, str, errors, byteorder);
1135
1136exit:
1137 return return_value;
1138}
1139
1140PyDoc_STRVAR(_codecs_utf_16_le_encode__doc__,
1141"utf_16_le_encode($module, str, errors=None, /)\n"
1142"--\n"
1143"\n");
1144
1145#define _CODECS_UTF_16_LE_ENCODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +01001146 {"utf_16_le_encode", (PyCFunction)_codecs_utf_16_le_encode, METH_FASTCALL, _codecs_utf_16_le_encode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001147
1148static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001149_codecs_utf_16_le_encode_impl(PyObject *module, PyObject *str,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001150 const char *errors);
1151
1152static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +01001153_codecs_utf_16_le_encode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001154{
1155 PyObject *return_value = NULL;
1156 PyObject *str;
1157 const char *errors = NULL;
1158
Victor Stinner259f0e42017-01-17 01:35:17 +01001159 if (!_PyArg_ParseStack(args, nargs, "U|z:utf_16_le_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001160 &str, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001161 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001162 }
Victor Stinner259f0e42017-01-17 01:35:17 +01001163
1164 if (!_PyArg_NoStackKeywords("utf_16_le_encode", kwnames)) {
1165 goto exit;
1166 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001167 return_value = _codecs_utf_16_le_encode_impl(module, str, errors);
1168
1169exit:
1170 return return_value;
1171}
1172
1173PyDoc_STRVAR(_codecs_utf_16_be_encode__doc__,
1174"utf_16_be_encode($module, str, errors=None, /)\n"
1175"--\n"
1176"\n");
1177
1178#define _CODECS_UTF_16_BE_ENCODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +01001179 {"utf_16_be_encode", (PyCFunction)_codecs_utf_16_be_encode, METH_FASTCALL, _codecs_utf_16_be_encode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001180
1181static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001182_codecs_utf_16_be_encode_impl(PyObject *module, PyObject *str,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001183 const char *errors);
1184
1185static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +01001186_codecs_utf_16_be_encode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001187{
1188 PyObject *return_value = NULL;
1189 PyObject *str;
1190 const char *errors = NULL;
1191
Victor Stinner259f0e42017-01-17 01:35:17 +01001192 if (!_PyArg_ParseStack(args, nargs, "U|z:utf_16_be_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001193 &str, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001194 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001195 }
Victor Stinner259f0e42017-01-17 01:35:17 +01001196
1197 if (!_PyArg_NoStackKeywords("utf_16_be_encode", kwnames)) {
1198 goto exit;
1199 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001200 return_value = _codecs_utf_16_be_encode_impl(module, str, errors);
1201
1202exit:
1203 return return_value;
1204}
1205
1206PyDoc_STRVAR(_codecs_utf_32_encode__doc__,
1207"utf_32_encode($module, str, errors=None, byteorder=0, /)\n"
1208"--\n"
1209"\n");
1210
1211#define _CODECS_UTF_32_ENCODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +01001212 {"utf_32_encode", (PyCFunction)_codecs_utf_32_encode, METH_FASTCALL, _codecs_utf_32_encode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001213
1214static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001215_codecs_utf_32_encode_impl(PyObject *module, PyObject *str,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001216 const char *errors, int byteorder);
1217
1218static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +01001219_codecs_utf_32_encode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001220{
1221 PyObject *return_value = NULL;
1222 PyObject *str;
1223 const char *errors = NULL;
1224 int byteorder = 0;
1225
Victor Stinner259f0e42017-01-17 01:35:17 +01001226 if (!_PyArg_ParseStack(args, nargs, "U|zi:utf_32_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001227 &str, &errors, &byteorder)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001228 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001229 }
Victor Stinner259f0e42017-01-17 01:35:17 +01001230
1231 if (!_PyArg_NoStackKeywords("utf_32_encode", kwnames)) {
1232 goto exit;
1233 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001234 return_value = _codecs_utf_32_encode_impl(module, str, errors, byteorder);
1235
1236exit:
1237 return return_value;
1238}
1239
1240PyDoc_STRVAR(_codecs_utf_32_le_encode__doc__,
1241"utf_32_le_encode($module, str, errors=None, /)\n"
1242"--\n"
1243"\n");
1244
1245#define _CODECS_UTF_32_LE_ENCODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +01001246 {"utf_32_le_encode", (PyCFunction)_codecs_utf_32_le_encode, METH_FASTCALL, _codecs_utf_32_le_encode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001247
1248static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001249_codecs_utf_32_le_encode_impl(PyObject *module, PyObject *str,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001250 const char *errors);
1251
1252static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +01001253_codecs_utf_32_le_encode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001254{
1255 PyObject *return_value = NULL;
1256 PyObject *str;
1257 const char *errors = NULL;
1258
Victor Stinner259f0e42017-01-17 01:35:17 +01001259 if (!_PyArg_ParseStack(args, nargs, "U|z:utf_32_le_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001260 &str, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001261 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001262 }
Victor Stinner259f0e42017-01-17 01:35:17 +01001263
1264 if (!_PyArg_NoStackKeywords("utf_32_le_encode", kwnames)) {
1265 goto exit;
1266 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001267 return_value = _codecs_utf_32_le_encode_impl(module, str, errors);
1268
1269exit:
1270 return return_value;
1271}
1272
1273PyDoc_STRVAR(_codecs_utf_32_be_encode__doc__,
1274"utf_32_be_encode($module, str, errors=None, /)\n"
1275"--\n"
1276"\n");
1277
1278#define _CODECS_UTF_32_BE_ENCODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +01001279 {"utf_32_be_encode", (PyCFunction)_codecs_utf_32_be_encode, METH_FASTCALL, _codecs_utf_32_be_encode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001280
1281static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001282_codecs_utf_32_be_encode_impl(PyObject *module, PyObject *str,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001283 const char *errors);
1284
1285static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +01001286_codecs_utf_32_be_encode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001287{
1288 PyObject *return_value = NULL;
1289 PyObject *str;
1290 const char *errors = NULL;
1291
Victor Stinner259f0e42017-01-17 01:35:17 +01001292 if (!_PyArg_ParseStack(args, nargs, "U|z:utf_32_be_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001293 &str, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001294 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001295 }
Victor Stinner259f0e42017-01-17 01:35:17 +01001296
1297 if (!_PyArg_NoStackKeywords("utf_32_be_encode", kwnames)) {
1298 goto exit;
1299 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001300 return_value = _codecs_utf_32_be_encode_impl(module, str, errors);
1301
1302exit:
1303 return return_value;
1304}
1305
1306PyDoc_STRVAR(_codecs_unicode_escape_encode__doc__,
1307"unicode_escape_encode($module, str, errors=None, /)\n"
1308"--\n"
1309"\n");
1310
1311#define _CODECS_UNICODE_ESCAPE_ENCODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +01001312 {"unicode_escape_encode", (PyCFunction)_codecs_unicode_escape_encode, METH_FASTCALL, _codecs_unicode_escape_encode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001313
1314static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001315_codecs_unicode_escape_encode_impl(PyObject *module, PyObject *str,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001316 const char *errors);
1317
1318static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +01001319_codecs_unicode_escape_encode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001320{
1321 PyObject *return_value = NULL;
1322 PyObject *str;
1323 const char *errors = NULL;
1324
Victor Stinner259f0e42017-01-17 01:35:17 +01001325 if (!_PyArg_ParseStack(args, nargs, "U|z:unicode_escape_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001326 &str, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001327 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001328 }
Victor Stinner259f0e42017-01-17 01:35:17 +01001329
1330 if (!_PyArg_NoStackKeywords("unicode_escape_encode", kwnames)) {
1331 goto exit;
1332 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001333 return_value = _codecs_unicode_escape_encode_impl(module, str, errors);
1334
1335exit:
1336 return return_value;
1337}
1338
1339PyDoc_STRVAR(_codecs_raw_unicode_escape_encode__doc__,
1340"raw_unicode_escape_encode($module, str, errors=None, /)\n"
1341"--\n"
1342"\n");
1343
1344#define _CODECS_RAW_UNICODE_ESCAPE_ENCODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +01001345 {"raw_unicode_escape_encode", (PyCFunction)_codecs_raw_unicode_escape_encode, METH_FASTCALL, _codecs_raw_unicode_escape_encode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001346
1347static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001348_codecs_raw_unicode_escape_encode_impl(PyObject *module, PyObject *str,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001349 const char *errors);
1350
1351static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +01001352_codecs_raw_unicode_escape_encode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001353{
1354 PyObject *return_value = NULL;
1355 PyObject *str;
1356 const char *errors = NULL;
1357
Victor Stinner259f0e42017-01-17 01:35:17 +01001358 if (!_PyArg_ParseStack(args, nargs, "U|z:raw_unicode_escape_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001359 &str, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001360 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001361 }
Victor Stinner259f0e42017-01-17 01:35:17 +01001362
1363 if (!_PyArg_NoStackKeywords("raw_unicode_escape_encode", kwnames)) {
1364 goto exit;
1365 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001366 return_value = _codecs_raw_unicode_escape_encode_impl(module, str, errors);
1367
1368exit:
1369 return return_value;
1370}
1371
1372PyDoc_STRVAR(_codecs_latin_1_encode__doc__,
1373"latin_1_encode($module, str, errors=None, /)\n"
1374"--\n"
1375"\n");
1376
1377#define _CODECS_LATIN_1_ENCODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +01001378 {"latin_1_encode", (PyCFunction)_codecs_latin_1_encode, METH_FASTCALL, _codecs_latin_1_encode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001379
1380static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001381_codecs_latin_1_encode_impl(PyObject *module, PyObject *str,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001382 const char *errors);
1383
1384static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +01001385_codecs_latin_1_encode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001386{
1387 PyObject *return_value = NULL;
1388 PyObject *str;
1389 const char *errors = NULL;
1390
Victor Stinner259f0e42017-01-17 01:35:17 +01001391 if (!_PyArg_ParseStack(args, nargs, "U|z:latin_1_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001392 &str, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001393 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001394 }
Victor Stinner259f0e42017-01-17 01:35:17 +01001395
1396 if (!_PyArg_NoStackKeywords("latin_1_encode", kwnames)) {
1397 goto exit;
1398 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001399 return_value = _codecs_latin_1_encode_impl(module, str, errors);
1400
1401exit:
1402 return return_value;
1403}
1404
1405PyDoc_STRVAR(_codecs_ascii_encode__doc__,
1406"ascii_encode($module, str, errors=None, /)\n"
1407"--\n"
1408"\n");
1409
1410#define _CODECS_ASCII_ENCODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +01001411 {"ascii_encode", (PyCFunction)_codecs_ascii_encode, METH_FASTCALL, _codecs_ascii_encode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001412
1413static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001414_codecs_ascii_encode_impl(PyObject *module, PyObject *str,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001415 const char *errors);
1416
1417static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +01001418_codecs_ascii_encode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001419{
1420 PyObject *return_value = NULL;
1421 PyObject *str;
1422 const char *errors = NULL;
1423
Victor Stinner259f0e42017-01-17 01:35:17 +01001424 if (!_PyArg_ParseStack(args, nargs, "U|z:ascii_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001425 &str, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001426 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001427 }
Victor Stinner259f0e42017-01-17 01:35:17 +01001428
1429 if (!_PyArg_NoStackKeywords("ascii_encode", kwnames)) {
1430 goto exit;
1431 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001432 return_value = _codecs_ascii_encode_impl(module, str, errors);
1433
1434exit:
1435 return return_value;
1436}
1437
1438PyDoc_STRVAR(_codecs_charmap_encode__doc__,
1439"charmap_encode($module, str, errors=None, mapping=None, /)\n"
1440"--\n"
1441"\n");
1442
1443#define _CODECS_CHARMAP_ENCODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +01001444 {"charmap_encode", (PyCFunction)_codecs_charmap_encode, METH_FASTCALL, _codecs_charmap_encode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001445
1446static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001447_codecs_charmap_encode_impl(PyObject *module, PyObject *str,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001448 const char *errors, PyObject *mapping);
1449
1450static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +01001451_codecs_charmap_encode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001452{
1453 PyObject *return_value = NULL;
1454 PyObject *str;
1455 const char *errors = NULL;
1456 PyObject *mapping = NULL;
1457
Victor Stinner259f0e42017-01-17 01:35:17 +01001458 if (!_PyArg_ParseStack(args, nargs, "U|zO:charmap_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001459 &str, &errors, &mapping)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001460 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001461 }
Victor Stinner259f0e42017-01-17 01:35:17 +01001462
1463 if (!_PyArg_NoStackKeywords("charmap_encode", kwnames)) {
1464 goto exit;
1465 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001466 return_value = _codecs_charmap_encode_impl(module, str, errors, mapping);
1467
1468exit:
1469 return return_value;
1470}
1471
1472PyDoc_STRVAR(_codecs_charmap_build__doc__,
1473"charmap_build($module, map, /)\n"
1474"--\n"
1475"\n");
1476
1477#define _CODECS_CHARMAP_BUILD_METHODDEF \
1478 {"charmap_build", (PyCFunction)_codecs_charmap_build, METH_O, _codecs_charmap_build__doc__},
1479
1480static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001481_codecs_charmap_build_impl(PyObject *module, PyObject *map);
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001482
1483static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001484_codecs_charmap_build(PyObject *module, PyObject *arg)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001485{
1486 PyObject *return_value = NULL;
1487 PyObject *map;
1488
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001489 if (!PyArg_Parse(arg, "U:charmap_build", &map)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001490 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001491 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001492 return_value = _codecs_charmap_build_impl(module, map);
1493
1494exit:
1495 return return_value;
1496}
1497
Steve Dowercc16be82016-09-08 10:35:16 -07001498#if defined(MS_WINDOWS)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001499
1500PyDoc_STRVAR(_codecs_mbcs_encode__doc__,
1501"mbcs_encode($module, str, errors=None, /)\n"
1502"--\n"
1503"\n");
1504
1505#define _CODECS_MBCS_ENCODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +01001506 {"mbcs_encode", (PyCFunction)_codecs_mbcs_encode, METH_FASTCALL, _codecs_mbcs_encode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001507
1508static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001509_codecs_mbcs_encode_impl(PyObject *module, PyObject *str, const char *errors);
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001510
1511static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +01001512_codecs_mbcs_encode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001513{
1514 PyObject *return_value = NULL;
1515 PyObject *str;
1516 const char *errors = NULL;
1517
Victor Stinner259f0e42017-01-17 01:35:17 +01001518 if (!_PyArg_ParseStack(args, nargs, "U|z:mbcs_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001519 &str, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001520 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001521 }
Victor Stinner259f0e42017-01-17 01:35:17 +01001522
1523 if (!_PyArg_NoStackKeywords("mbcs_encode", kwnames)) {
1524 goto exit;
1525 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001526 return_value = _codecs_mbcs_encode_impl(module, str, errors);
1527
1528exit:
1529 return return_value;
1530}
1531
Steve Dowercc16be82016-09-08 10:35:16 -07001532#endif /* defined(MS_WINDOWS) */
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001533
Steve Dowercc16be82016-09-08 10:35:16 -07001534#if defined(MS_WINDOWS)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001535
Steve Dowerf5aba582016-09-06 19:42:27 -07001536PyDoc_STRVAR(_codecs_oem_encode__doc__,
1537"oem_encode($module, str, errors=None, /)\n"
1538"--\n"
1539"\n");
1540
1541#define _CODECS_OEM_ENCODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +01001542 {"oem_encode", (PyCFunction)_codecs_oem_encode, METH_FASTCALL, _codecs_oem_encode__doc__},
Steve Dowerf5aba582016-09-06 19:42:27 -07001543
1544static PyObject *
1545_codecs_oem_encode_impl(PyObject *module, PyObject *str, const char *errors);
1546
1547static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +01001548_codecs_oem_encode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Steve Dowerf5aba582016-09-06 19:42:27 -07001549{
1550 PyObject *return_value = NULL;
1551 PyObject *str;
1552 const char *errors = NULL;
1553
Victor Stinner259f0e42017-01-17 01:35:17 +01001554 if (!_PyArg_ParseStack(args, nargs, "U|z:oem_encode",
Steve Dowerf5aba582016-09-06 19:42:27 -07001555 &str, &errors)) {
1556 goto exit;
1557 }
Victor Stinner259f0e42017-01-17 01:35:17 +01001558
1559 if (!_PyArg_NoStackKeywords("oem_encode", kwnames)) {
1560 goto exit;
1561 }
Steve Dowerf5aba582016-09-06 19:42:27 -07001562 return_value = _codecs_oem_encode_impl(module, str, errors);
1563
1564exit:
1565 return return_value;
1566}
1567
Steve Dowercc16be82016-09-08 10:35:16 -07001568#endif /* defined(MS_WINDOWS) */
Steve Dowerf5aba582016-09-06 19:42:27 -07001569
Steve Dowercc16be82016-09-08 10:35:16 -07001570#if defined(MS_WINDOWS)
Steve Dowerf5aba582016-09-06 19:42:27 -07001571
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001572PyDoc_STRVAR(_codecs_code_page_encode__doc__,
1573"code_page_encode($module, code_page, str, errors=None, /)\n"
1574"--\n"
1575"\n");
1576
1577#define _CODECS_CODE_PAGE_ENCODE_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +01001578 {"code_page_encode", (PyCFunction)_codecs_code_page_encode, METH_FASTCALL, _codecs_code_page_encode__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001579
1580static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001581_codecs_code_page_encode_impl(PyObject *module, int code_page, PyObject *str,
1582 const char *errors);
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001583
1584static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +01001585_codecs_code_page_encode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001586{
1587 PyObject *return_value = NULL;
1588 int code_page;
1589 PyObject *str;
1590 const char *errors = NULL;
1591
Victor Stinner259f0e42017-01-17 01:35:17 +01001592 if (!_PyArg_ParseStack(args, nargs, "iU|z:code_page_encode",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001593 &code_page, &str, &errors)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001594 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001595 }
Victor Stinner259f0e42017-01-17 01:35:17 +01001596
1597 if (!_PyArg_NoStackKeywords("code_page_encode", kwnames)) {
1598 goto exit;
1599 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001600 return_value = _codecs_code_page_encode_impl(module, code_page, str, errors);
1601
1602exit:
1603 return return_value;
1604}
1605
Steve Dowercc16be82016-09-08 10:35:16 -07001606#endif /* defined(MS_WINDOWS) */
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001607
1608PyDoc_STRVAR(_codecs_register_error__doc__,
1609"register_error($module, errors, handler, /)\n"
1610"--\n"
1611"\n"
1612"Register the specified error handler under the name errors.\n"
1613"\n"
1614"handler must be a callable object, that will be called with an exception\n"
1615"instance containing information about the location of the encoding/decoding\n"
1616"error and must return a (replacement, new position) tuple.");
1617
1618#define _CODECS_REGISTER_ERROR_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +01001619 {"register_error", (PyCFunction)_codecs_register_error, METH_FASTCALL, _codecs_register_error__doc__},
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001620
1621static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001622_codecs_register_error_impl(PyObject *module, const char *errors,
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001623 PyObject *handler);
1624
1625static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +01001626_codecs_register_error(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001627{
1628 PyObject *return_value = NULL;
1629 const char *errors;
1630 PyObject *handler;
1631
Victor Stinner259f0e42017-01-17 01:35:17 +01001632 if (!_PyArg_ParseStack(args, nargs, "sO:register_error",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001633 &errors, &handler)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001634 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001635 }
Victor Stinner259f0e42017-01-17 01:35:17 +01001636
1637 if (!_PyArg_NoStackKeywords("register_error", kwnames)) {
1638 goto exit;
1639 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001640 return_value = _codecs_register_error_impl(module, errors, handler);
1641
1642exit:
1643 return return_value;
1644}
1645
1646PyDoc_STRVAR(_codecs_lookup_error__doc__,
1647"lookup_error($module, name, /)\n"
1648"--\n"
1649"\n"
1650"lookup_error(errors) -> handler\n"
1651"\n"
1652"Return the error handler for the specified error handling name or raise a\n"
1653"LookupError, if no handler exists under this name.");
1654
1655#define _CODECS_LOOKUP_ERROR_METHODDEF \
1656 {"lookup_error", (PyCFunction)_codecs_lookup_error, METH_O, _codecs_lookup_error__doc__},
1657
1658static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001659_codecs_lookup_error_impl(PyObject *module, const char *name);
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001660
1661static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +03001662_codecs_lookup_error(PyObject *module, PyObject *arg)
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001663{
1664 PyObject *return_value = NULL;
1665 const char *name;
1666
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001667 if (!PyArg_Parse(arg, "s:lookup_error", &name)) {
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001668 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +03001669 }
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001670 return_value = _codecs_lookup_error_impl(module, name);
1671
1672exit:
1673 return return_value;
1674}
1675
1676#ifndef _CODECS_MBCS_DECODE_METHODDEF
1677 #define _CODECS_MBCS_DECODE_METHODDEF
1678#endif /* !defined(_CODECS_MBCS_DECODE_METHODDEF) */
1679
Steve Dowerf5aba582016-09-06 19:42:27 -07001680#ifndef _CODECS_OEM_DECODE_METHODDEF
1681 #define _CODECS_OEM_DECODE_METHODDEF
1682#endif /* !defined(_CODECS_OEM_DECODE_METHODDEF) */
1683
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001684#ifndef _CODECS_CODE_PAGE_DECODE_METHODDEF
1685 #define _CODECS_CODE_PAGE_DECODE_METHODDEF
1686#endif /* !defined(_CODECS_CODE_PAGE_DECODE_METHODDEF) */
1687
1688#ifndef _CODECS_MBCS_ENCODE_METHODDEF
1689 #define _CODECS_MBCS_ENCODE_METHODDEF
1690#endif /* !defined(_CODECS_MBCS_ENCODE_METHODDEF) */
1691
Steve Dowerf5aba582016-09-06 19:42:27 -07001692#ifndef _CODECS_OEM_ENCODE_METHODDEF
1693 #define _CODECS_OEM_ENCODE_METHODDEF
1694#endif /* !defined(_CODECS_OEM_ENCODE_METHODDEF) */
1695
Serhiy Storchaka0c59ff62015-05-12 13:15:57 +03001696#ifndef _CODECS_CODE_PAGE_ENCODE_METHODDEF
1697 #define _CODECS_CODE_PAGE_ENCODE_METHODDEF
1698#endif /* !defined(_CODECS_CODE_PAGE_ENCODE_METHODDEF) */
Victor Stinner259f0e42017-01-17 01:35:17 +01001699/*[clinic end generated code: output=36fb42f450a3b4dc input=a9049054013a1b77]*/