blob: fbc5ba44f0b9a7e80ec72eb2da28500a5ee00555 [file] [log] [blame]
Serhiy Storchakaa860aea2015-05-03 15:54:23 +03001/*[clinic input]
2preserve
3[clinic start generated code]*/
4
5PyDoc_STRVAR(_sre_getcodesize__doc__,
6"getcodesize($module, /)\n"
7"--\n"
8"\n");
9
10#define _SRE_GETCODESIZE_METHODDEF \
11 {"getcodesize", (PyCFunction)_sre_getcodesize, METH_NOARGS, _sre_getcodesize__doc__},
12
13static int
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +030014_sre_getcodesize_impl(PyObject *module);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030015
16static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +030017_sre_getcodesize(PyObject *module, PyObject *Py_UNUSED(ignored))
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030018{
19 PyObject *return_value = NULL;
20 int _return_value;
21
22 _return_value = _sre_getcodesize_impl(module);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030023 if ((_return_value == -1) && PyErr_Occurred()) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030024 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030025 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030026 return_value = PyLong_FromLong((long)_return_value);
27
28exit:
29 return return_value;
30}
31
Serhiy Storchaka6d336a02017-05-09 23:37:14 +030032PyDoc_STRVAR(_sre_ascii_iscased__doc__,
33"ascii_iscased($module, character, /)\n"
34"--\n"
35"\n");
36
37#define _SRE_ASCII_ISCASED_METHODDEF \
38 {"ascii_iscased", (PyCFunction)_sre_ascii_iscased, METH_O, _sre_ascii_iscased__doc__},
39
40static int
41_sre_ascii_iscased_impl(PyObject *module, int character);
42
43static PyObject *
44_sre_ascii_iscased(PyObject *module, PyObject *arg)
45{
46 PyObject *return_value = NULL;
47 int character;
48 int _return_value;
49
50 if (!PyArg_Parse(arg, "i:ascii_iscased", &character)) {
51 goto exit;
52 }
53 _return_value = _sre_ascii_iscased_impl(module, character);
54 if ((_return_value == -1) && PyErr_Occurred()) {
55 goto exit;
56 }
57 return_value = PyBool_FromLong((long)_return_value);
58
59exit:
60 return return_value;
61}
62
63PyDoc_STRVAR(_sre_unicode_iscased__doc__,
64"unicode_iscased($module, character, /)\n"
65"--\n"
66"\n");
67
68#define _SRE_UNICODE_ISCASED_METHODDEF \
69 {"unicode_iscased", (PyCFunction)_sre_unicode_iscased, METH_O, _sre_unicode_iscased__doc__},
70
71static int
72_sre_unicode_iscased_impl(PyObject *module, int character);
73
74static PyObject *
75_sre_unicode_iscased(PyObject *module, PyObject *arg)
76{
77 PyObject *return_value = NULL;
78 int character;
79 int _return_value;
80
81 if (!PyArg_Parse(arg, "i:unicode_iscased", &character)) {
82 goto exit;
83 }
84 _return_value = _sre_unicode_iscased_impl(module, character);
85 if ((_return_value == -1) && PyErr_Occurred()) {
86 goto exit;
87 }
88 return_value = PyBool_FromLong((long)_return_value);
89
90exit:
91 return return_value;
92}
93
Serhiy Storchaka7186cc22017-05-05 10:42:46 +030094PyDoc_STRVAR(_sre_ascii_tolower__doc__,
95"ascii_tolower($module, character, /)\n"
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030096"--\n"
97"\n");
98
Serhiy Storchaka7186cc22017-05-05 10:42:46 +030099#define _SRE_ASCII_TOLOWER_METHODDEF \
100 {"ascii_tolower", (PyCFunction)_sre_ascii_tolower, METH_O, _sre_ascii_tolower__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300101
102static int
Serhiy Storchaka7186cc22017-05-05 10:42:46 +0300103_sre_ascii_tolower_impl(PyObject *module, int character);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300104
105static PyObject *
Serhiy Storchaka7186cc22017-05-05 10:42:46 +0300106_sre_ascii_tolower(PyObject *module, PyObject *arg)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300107{
108 PyObject *return_value = NULL;
109 int character;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300110 int _return_value;
111
Serhiy Storchaka7186cc22017-05-05 10:42:46 +0300112 if (!PyArg_Parse(arg, "i:ascii_tolower", &character)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300113 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300114 }
Serhiy Storchaka7186cc22017-05-05 10:42:46 +0300115 _return_value = _sre_ascii_tolower_impl(module, character);
116 if ((_return_value == -1) && PyErr_Occurred()) {
117 goto exit;
118 }
119 return_value = PyLong_FromLong((long)_return_value);
Victor Stinner259f0e42017-01-17 01:35:17 +0100120
Serhiy Storchaka7186cc22017-05-05 10:42:46 +0300121exit:
122 return return_value;
123}
124
125PyDoc_STRVAR(_sre_unicode_tolower__doc__,
126"unicode_tolower($module, character, /)\n"
127"--\n"
128"\n");
129
130#define _SRE_UNICODE_TOLOWER_METHODDEF \
131 {"unicode_tolower", (PyCFunction)_sre_unicode_tolower, METH_O, _sre_unicode_tolower__doc__},
132
133static int
134_sre_unicode_tolower_impl(PyObject *module, int character);
135
136static PyObject *
137_sre_unicode_tolower(PyObject *module, PyObject *arg)
138{
139 PyObject *return_value = NULL;
140 int character;
141 int _return_value;
142
143 if (!PyArg_Parse(arg, "i:unicode_tolower", &character)) {
Victor Stinner259f0e42017-01-17 01:35:17 +0100144 goto exit;
145 }
Serhiy Storchaka7186cc22017-05-05 10:42:46 +0300146 _return_value = _sre_unicode_tolower_impl(module, character);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300147 if ((_return_value == -1) && PyErr_Occurred()) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300148 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300149 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300150 return_value = PyLong_FromLong((long)_return_value);
151
152exit:
153 return return_value;
154}
155
156PyDoc_STRVAR(_sre_SRE_Pattern_match__doc__,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200157"match($self, /, string, pos=0, endpos=sys.maxsize)\n"
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300158"--\n"
159"\n"
160"Matches zero or more characters at the beginning of the string.");
161
162#define _SRE_SRE_PATTERN_MATCH_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200163 {"match", (PyCFunction)(void(*)(void))_sre_SRE_Pattern_match, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_match__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300164
165static PyObject *
166_sre_SRE_Pattern_match_impl(PatternObject *self, PyObject *string,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200167 Py_ssize_t pos, Py_ssize_t endpos);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300168
169static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200170_sre_SRE_Pattern_match(PatternObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300171{
172 PyObject *return_value = NULL;
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200173 static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
174 static _PyArg_Parser _parser = {"O|nn:match", _keywords, 0};
175 PyObject *string;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300176 Py_ssize_t pos = 0;
177 Py_ssize_t endpos = PY_SSIZE_T_MAX;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300178
Victor Stinner3e1fad62017-01-17 01:29:01 +0100179 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200180 &string, &pos, &endpos)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300181 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300182 }
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200183 return_value = _sre_SRE_Pattern_match_impl(self, string, pos, endpos);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300184
185exit:
186 return return_value;
187}
188
189PyDoc_STRVAR(_sre_SRE_Pattern_fullmatch__doc__,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200190"fullmatch($self, /, string, pos=0, endpos=sys.maxsize)\n"
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300191"--\n"
192"\n"
Serhiy Storchaka0b5e61d2017-10-04 20:09:49 +0300193"Matches against all of the string.");
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300194
195#define _SRE_SRE_PATTERN_FULLMATCH_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200196 {"fullmatch", (PyCFunction)(void(*)(void))_sre_SRE_Pattern_fullmatch, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_fullmatch__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300197
198static PyObject *
199_sre_SRE_Pattern_fullmatch_impl(PatternObject *self, PyObject *string,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200200 Py_ssize_t pos, Py_ssize_t endpos);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300201
202static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200203_sre_SRE_Pattern_fullmatch(PatternObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300204{
205 PyObject *return_value = NULL;
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200206 static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
207 static _PyArg_Parser _parser = {"O|nn:fullmatch", _keywords, 0};
208 PyObject *string;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300209 Py_ssize_t pos = 0;
210 Py_ssize_t endpos = PY_SSIZE_T_MAX;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300211
Victor Stinner3e1fad62017-01-17 01:29:01 +0100212 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200213 &string, &pos, &endpos)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300214 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300215 }
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200216 return_value = _sre_SRE_Pattern_fullmatch_impl(self, string, pos, endpos);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300217
218exit:
219 return return_value;
220}
221
222PyDoc_STRVAR(_sre_SRE_Pattern_search__doc__,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200223"search($self, /, string, pos=0, endpos=sys.maxsize)\n"
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300224"--\n"
225"\n"
226"Scan through string looking for a match, and return a corresponding match object instance.\n"
227"\n"
228"Return None if no position in the string matches.");
229
230#define _SRE_SRE_PATTERN_SEARCH_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200231 {"search", (PyCFunction)(void(*)(void))_sre_SRE_Pattern_search, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_search__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300232
233static PyObject *
234_sre_SRE_Pattern_search_impl(PatternObject *self, PyObject *string,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200235 Py_ssize_t pos, Py_ssize_t endpos);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300236
237static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200238_sre_SRE_Pattern_search(PatternObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300239{
240 PyObject *return_value = NULL;
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200241 static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
242 static _PyArg_Parser _parser = {"O|nn:search", _keywords, 0};
243 PyObject *string;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300244 Py_ssize_t pos = 0;
245 Py_ssize_t endpos = PY_SSIZE_T_MAX;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300246
Victor Stinner3e1fad62017-01-17 01:29:01 +0100247 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200248 &string, &pos, &endpos)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300249 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300250 }
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200251 return_value = _sre_SRE_Pattern_search_impl(self, string, pos, endpos);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300252
253exit:
254 return return_value;
255}
256
257PyDoc_STRVAR(_sre_SRE_Pattern_findall__doc__,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200258"findall($self, /, string, pos=0, endpos=sys.maxsize)\n"
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300259"--\n"
260"\n"
261"Return a list of all non-overlapping matches of pattern in string.");
262
263#define _SRE_SRE_PATTERN_FINDALL_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200264 {"findall", (PyCFunction)(void(*)(void))_sre_SRE_Pattern_findall, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_findall__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300265
266static PyObject *
267_sre_SRE_Pattern_findall_impl(PatternObject *self, PyObject *string,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200268 Py_ssize_t pos, Py_ssize_t endpos);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300269
270static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200271_sre_SRE_Pattern_findall(PatternObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300272{
273 PyObject *return_value = NULL;
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200274 static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
275 static _PyArg_Parser _parser = {"O|nn:findall", _keywords, 0};
276 PyObject *string;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300277 Py_ssize_t pos = 0;
278 Py_ssize_t endpos = PY_SSIZE_T_MAX;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300279
Victor Stinner3e1fad62017-01-17 01:29:01 +0100280 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200281 &string, &pos, &endpos)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300282 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300283 }
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200284 return_value = _sre_SRE_Pattern_findall_impl(self, string, pos, endpos);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300285
286exit:
287 return return_value;
288}
289
290PyDoc_STRVAR(_sre_SRE_Pattern_finditer__doc__,
291"finditer($self, /, string, pos=0, endpos=sys.maxsize)\n"
292"--\n"
293"\n"
294"Return an iterator over all non-overlapping matches for the RE pattern in string.\n"
295"\n"
296"For each match, the iterator returns a match object.");
297
298#define _SRE_SRE_PATTERN_FINDITER_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200299 {"finditer", (PyCFunction)(void(*)(void))_sre_SRE_Pattern_finditer, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_finditer__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300300
301static PyObject *
302_sre_SRE_Pattern_finditer_impl(PatternObject *self, PyObject *string,
303 Py_ssize_t pos, Py_ssize_t endpos);
304
305static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200306_sre_SRE_Pattern_finditer(PatternObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300307{
308 PyObject *return_value = NULL;
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +0300309 static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
310 static _PyArg_Parser _parser = {"O|nn:finditer", _keywords, 0};
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300311 PyObject *string;
312 Py_ssize_t pos = 0;
313 Py_ssize_t endpos = PY_SSIZE_T_MAX;
314
Victor Stinner3e1fad62017-01-17 01:29:01 +0100315 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300316 &string, &pos, &endpos)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300317 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300318 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300319 return_value = _sre_SRE_Pattern_finditer_impl(self, string, pos, endpos);
320
321exit:
322 return return_value;
323}
324
325PyDoc_STRVAR(_sre_SRE_Pattern_scanner__doc__,
326"scanner($self, /, string, pos=0, endpos=sys.maxsize)\n"
327"--\n"
328"\n");
329
330#define _SRE_SRE_PATTERN_SCANNER_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200331 {"scanner", (PyCFunction)(void(*)(void))_sre_SRE_Pattern_scanner, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_scanner__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300332
333static PyObject *
334_sre_SRE_Pattern_scanner_impl(PatternObject *self, PyObject *string,
335 Py_ssize_t pos, Py_ssize_t endpos);
336
337static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200338_sre_SRE_Pattern_scanner(PatternObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300339{
340 PyObject *return_value = NULL;
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +0300341 static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
342 static _PyArg_Parser _parser = {"O|nn:scanner", _keywords, 0};
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300343 PyObject *string;
344 Py_ssize_t pos = 0;
345 Py_ssize_t endpos = PY_SSIZE_T_MAX;
346
Victor Stinner3e1fad62017-01-17 01:29:01 +0100347 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300348 &string, &pos, &endpos)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300349 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300350 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300351 return_value = _sre_SRE_Pattern_scanner_impl(self, string, pos, endpos);
352
353exit:
354 return return_value;
355}
356
357PyDoc_STRVAR(_sre_SRE_Pattern_split__doc__,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200358"split($self, /, string, maxsplit=0)\n"
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300359"--\n"
360"\n"
361"Split string by the occurrences of pattern.");
362
363#define _SRE_SRE_PATTERN_SPLIT_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200364 {"split", (PyCFunction)(void(*)(void))_sre_SRE_Pattern_split, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_split__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300365
366static PyObject *
367_sre_SRE_Pattern_split_impl(PatternObject *self, PyObject *string,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200368 Py_ssize_t maxsplit);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300369
370static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200371_sre_SRE_Pattern_split(PatternObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300372{
373 PyObject *return_value = NULL;
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200374 static const char * const _keywords[] = {"string", "maxsplit", NULL};
375 static _PyArg_Parser _parser = {"O|n:split", _keywords, 0};
376 PyObject *string;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300377 Py_ssize_t maxsplit = 0;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300378
Victor Stinner3e1fad62017-01-17 01:29:01 +0100379 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200380 &string, &maxsplit)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300381 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300382 }
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200383 return_value = _sre_SRE_Pattern_split_impl(self, string, maxsplit);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300384
385exit:
386 return return_value;
387}
388
389PyDoc_STRVAR(_sre_SRE_Pattern_sub__doc__,
390"sub($self, /, repl, string, count=0)\n"
391"--\n"
392"\n"
393"Return the string obtained by replacing the leftmost non-overlapping occurrences of pattern in string by the replacement repl.");
394
395#define _SRE_SRE_PATTERN_SUB_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200396 {"sub", (PyCFunction)(void(*)(void))_sre_SRE_Pattern_sub, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_sub__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300397
398static PyObject *
399_sre_SRE_Pattern_sub_impl(PatternObject *self, PyObject *repl,
400 PyObject *string, Py_ssize_t count);
401
402static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200403_sre_SRE_Pattern_sub(PatternObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300404{
405 PyObject *return_value = NULL;
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +0300406 static const char * const _keywords[] = {"repl", "string", "count", NULL};
407 static _PyArg_Parser _parser = {"OO|n:sub", _keywords, 0};
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300408 PyObject *repl;
409 PyObject *string;
410 Py_ssize_t count = 0;
411
Victor Stinner3e1fad62017-01-17 01:29:01 +0100412 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300413 &repl, &string, &count)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300414 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300415 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300416 return_value = _sre_SRE_Pattern_sub_impl(self, repl, string, count);
417
418exit:
419 return return_value;
420}
421
422PyDoc_STRVAR(_sre_SRE_Pattern_subn__doc__,
423"subn($self, /, repl, string, count=0)\n"
424"--\n"
425"\n"
426"Return the tuple (new_string, number_of_subs_made) found by replacing the leftmost non-overlapping occurrences of pattern with the replacement repl.");
427
428#define _SRE_SRE_PATTERN_SUBN_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200429 {"subn", (PyCFunction)(void(*)(void))_sre_SRE_Pattern_subn, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Pattern_subn__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300430
431static PyObject *
432_sre_SRE_Pattern_subn_impl(PatternObject *self, PyObject *repl,
433 PyObject *string, Py_ssize_t count);
434
435static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200436_sre_SRE_Pattern_subn(PatternObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300437{
438 PyObject *return_value = NULL;
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +0300439 static const char * const _keywords[] = {"repl", "string", "count", NULL};
440 static _PyArg_Parser _parser = {"OO|n:subn", _keywords, 0};
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300441 PyObject *repl;
442 PyObject *string;
443 Py_ssize_t count = 0;
444
Victor Stinner3e1fad62017-01-17 01:29:01 +0100445 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300446 &repl, &string, &count)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300447 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300448 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300449 return_value = _sre_SRE_Pattern_subn_impl(self, repl, string, count);
450
451exit:
452 return return_value;
453}
454
455PyDoc_STRVAR(_sre_SRE_Pattern___copy____doc__,
456"__copy__($self, /)\n"
457"--\n"
458"\n");
459
460#define _SRE_SRE_PATTERN___COPY___METHODDEF \
461 {"__copy__", (PyCFunction)_sre_SRE_Pattern___copy__, METH_NOARGS, _sre_SRE_Pattern___copy____doc__},
462
463static PyObject *
464_sre_SRE_Pattern___copy___impl(PatternObject *self);
465
466static PyObject *
467_sre_SRE_Pattern___copy__(PatternObject *self, PyObject *Py_UNUSED(ignored))
468{
469 return _sre_SRE_Pattern___copy___impl(self);
470}
471
472PyDoc_STRVAR(_sre_SRE_Pattern___deepcopy____doc__,
Serhiy Storchakafdbd0112017-04-16 10:16:03 +0300473"__deepcopy__($self, memo, /)\n"
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300474"--\n"
475"\n");
476
477#define _SRE_SRE_PATTERN___DEEPCOPY___METHODDEF \
Serhiy Storchakafdbd0112017-04-16 10:16:03 +0300478 {"__deepcopy__", (PyCFunction)_sre_SRE_Pattern___deepcopy__, METH_O, _sre_SRE_Pattern___deepcopy____doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300479
480PyDoc_STRVAR(_sre_compile__doc__,
481"compile($module, /, pattern, flags, code, groups, groupindex,\n"
482" indexgroup)\n"
483"--\n"
484"\n");
485
486#define _SRE_COMPILE_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200487 {"compile", (PyCFunction)(void(*)(void))_sre_compile, METH_FASTCALL|METH_KEYWORDS, _sre_compile__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300488
489static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300490_sre_compile_impl(PyObject *module, PyObject *pattern, int flags,
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300491 PyObject *code, Py_ssize_t groups, PyObject *groupindex,
492 PyObject *indexgroup);
493
494static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200495_sre_compile(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300496{
497 PyObject *return_value = NULL;
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +0300498 static const char * const _keywords[] = {"pattern", "flags", "code", "groups", "groupindex", "indexgroup", NULL};
Victor Stinner726a57d2016-11-22 23:04:39 +0100499 static _PyArg_Parser _parser = {"OiO!nO!O!:compile", _keywords, 0};
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300500 PyObject *pattern;
501 int flags;
502 PyObject *code;
503 Py_ssize_t groups;
504 PyObject *groupindex;
505 PyObject *indexgroup;
506
Victor Stinner3e1fad62017-01-17 01:29:01 +0100507 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Victor Stinner726a57d2016-11-22 23:04:39 +0100508 &pattern, &flags, &PyList_Type, &code, &groups, &PyDict_Type, &groupindex, &PyTuple_Type, &indexgroup)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300509 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300510 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300511 return_value = _sre_compile_impl(module, pattern, flags, code, groups, groupindex, indexgroup);
512
513exit:
514 return return_value;
515}
516
517PyDoc_STRVAR(_sre_SRE_Match_expand__doc__,
518"expand($self, /, template)\n"
519"--\n"
520"\n"
521"Return the string obtained by doing backslash substitution on the string template, as done by the sub() method.");
522
523#define _SRE_SRE_MATCH_EXPAND_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200524 {"expand", (PyCFunction)(void(*)(void))_sre_SRE_Match_expand, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Match_expand__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300525
526static PyObject *
527_sre_SRE_Match_expand_impl(MatchObject *self, PyObject *template);
528
529static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200530_sre_SRE_Match_expand(MatchObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300531{
532 PyObject *return_value = NULL;
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +0300533 static const char * const _keywords[] = {"template", NULL};
534 static _PyArg_Parser _parser = {"O:expand", _keywords, 0};
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300535 PyObject *template;
536
Victor Stinner3e1fad62017-01-17 01:29:01 +0100537 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300538 &template)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300539 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300540 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300541 return_value = _sre_SRE_Match_expand_impl(self, template);
542
543exit:
544 return return_value;
545}
546
547PyDoc_STRVAR(_sre_SRE_Match_groups__doc__,
548"groups($self, /, default=None)\n"
549"--\n"
550"\n"
551"Return a tuple containing all the subgroups of the match, from 1.\n"
552"\n"
553" default\n"
554" Is used for groups that did not participate in the match.");
555
556#define _SRE_SRE_MATCH_GROUPS_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200557 {"groups", (PyCFunction)(void(*)(void))_sre_SRE_Match_groups, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Match_groups__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300558
559static PyObject *
560_sre_SRE_Match_groups_impl(MatchObject *self, PyObject *default_value);
561
562static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200563_sre_SRE_Match_groups(MatchObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300564{
565 PyObject *return_value = NULL;
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +0300566 static const char * const _keywords[] = {"default", NULL};
567 static _PyArg_Parser _parser = {"|O:groups", _keywords, 0};
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300568 PyObject *default_value = Py_None;
569
Victor Stinner3e1fad62017-01-17 01:29:01 +0100570 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300571 &default_value)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300572 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300573 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300574 return_value = _sre_SRE_Match_groups_impl(self, default_value);
575
576exit:
577 return return_value;
578}
579
580PyDoc_STRVAR(_sre_SRE_Match_groupdict__doc__,
581"groupdict($self, /, default=None)\n"
582"--\n"
583"\n"
584"Return a dictionary containing all the named subgroups of the match, keyed by the subgroup name.\n"
585"\n"
586" default\n"
587" Is used for groups that did not participate in the match.");
588
589#define _SRE_SRE_MATCH_GROUPDICT_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200590 {"groupdict", (PyCFunction)(void(*)(void))_sre_SRE_Match_groupdict, METH_FASTCALL|METH_KEYWORDS, _sre_SRE_Match_groupdict__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300591
592static PyObject *
593_sre_SRE_Match_groupdict_impl(MatchObject *self, PyObject *default_value);
594
595static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200596_sre_SRE_Match_groupdict(MatchObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300597{
598 PyObject *return_value = NULL;
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +0300599 static const char * const _keywords[] = {"default", NULL};
600 static _PyArg_Parser _parser = {"|O:groupdict", _keywords, 0};
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300601 PyObject *default_value = Py_None;
602
Victor Stinner3e1fad62017-01-17 01:29:01 +0100603 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300604 &default_value)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300605 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300606 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300607 return_value = _sre_SRE_Match_groupdict_impl(self, default_value);
608
609exit:
610 return return_value;
611}
612
613PyDoc_STRVAR(_sre_SRE_Match_start__doc__,
614"start($self, group=0, /)\n"
615"--\n"
616"\n"
617"Return index of the start of the substring matched by group.");
618
619#define _SRE_SRE_MATCH_START_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200620 {"start", (PyCFunction)(void(*)(void))_sre_SRE_Match_start, METH_FASTCALL, _sre_SRE_Match_start__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300621
622static Py_ssize_t
623_sre_SRE_Match_start_impl(MatchObject *self, PyObject *group);
624
625static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200626_sre_SRE_Match_start(MatchObject *self, PyObject *const *args, Py_ssize_t nargs)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300627{
628 PyObject *return_value = NULL;
629 PyObject *group = NULL;
630 Py_ssize_t _return_value;
631
Sylvain74453812017-06-10 06:51:48 +0200632 if (!_PyArg_UnpackStack(args, nargs, "start",
633 0, 1,
634 &group)) {
Victor Stinner0c4a8282017-01-17 02:21:47 +0100635 goto exit;
636 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300637 _return_value = _sre_SRE_Match_start_impl(self, group);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300638 if ((_return_value == -1) && PyErr_Occurred()) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300639 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300640 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300641 return_value = PyLong_FromSsize_t(_return_value);
642
643exit:
644 return return_value;
645}
646
647PyDoc_STRVAR(_sre_SRE_Match_end__doc__,
648"end($self, group=0, /)\n"
649"--\n"
650"\n"
651"Return index of the end of the substring matched by group.");
652
653#define _SRE_SRE_MATCH_END_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200654 {"end", (PyCFunction)(void(*)(void))_sre_SRE_Match_end, METH_FASTCALL, _sre_SRE_Match_end__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300655
656static Py_ssize_t
657_sre_SRE_Match_end_impl(MatchObject *self, PyObject *group);
658
659static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200660_sre_SRE_Match_end(MatchObject *self, PyObject *const *args, Py_ssize_t nargs)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300661{
662 PyObject *return_value = NULL;
663 PyObject *group = NULL;
664 Py_ssize_t _return_value;
665
Sylvain74453812017-06-10 06:51:48 +0200666 if (!_PyArg_UnpackStack(args, nargs, "end",
667 0, 1,
668 &group)) {
Victor Stinner0c4a8282017-01-17 02:21:47 +0100669 goto exit;
670 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300671 _return_value = _sre_SRE_Match_end_impl(self, group);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300672 if ((_return_value == -1) && PyErr_Occurred()) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300673 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300674 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300675 return_value = PyLong_FromSsize_t(_return_value);
676
677exit:
678 return return_value;
679}
680
681PyDoc_STRVAR(_sre_SRE_Match_span__doc__,
682"span($self, group=0, /)\n"
683"--\n"
684"\n"
Serhiy Storchaka0b5e61d2017-10-04 20:09:49 +0300685"For match object m, return the 2-tuple (m.start(group), m.end(group)).");
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300686
687#define _SRE_SRE_MATCH_SPAN_METHODDEF \
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200688 {"span", (PyCFunction)(void(*)(void))_sre_SRE_Match_span, METH_FASTCALL, _sre_SRE_Match_span__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300689
690static PyObject *
691_sre_SRE_Match_span_impl(MatchObject *self, PyObject *group);
692
693static PyObject *
Serhiy Storchakaa5552f02017-12-15 13:11:11 +0200694_sre_SRE_Match_span(MatchObject *self, PyObject *const *args, Py_ssize_t nargs)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300695{
696 PyObject *return_value = NULL;
697 PyObject *group = NULL;
698
Sylvain74453812017-06-10 06:51:48 +0200699 if (!_PyArg_UnpackStack(args, nargs, "span",
700 0, 1,
701 &group)) {
Victor Stinner0c4a8282017-01-17 02:21:47 +0100702 goto exit;
703 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300704 return_value = _sre_SRE_Match_span_impl(self, group);
705
706exit:
707 return return_value;
708}
709
710PyDoc_STRVAR(_sre_SRE_Match___copy____doc__,
711"__copy__($self, /)\n"
712"--\n"
713"\n");
714
715#define _SRE_SRE_MATCH___COPY___METHODDEF \
716 {"__copy__", (PyCFunction)_sre_SRE_Match___copy__, METH_NOARGS, _sre_SRE_Match___copy____doc__},
717
718static PyObject *
719_sre_SRE_Match___copy___impl(MatchObject *self);
720
721static PyObject *
722_sre_SRE_Match___copy__(MatchObject *self, PyObject *Py_UNUSED(ignored))
723{
724 return _sre_SRE_Match___copy___impl(self);
725}
726
727PyDoc_STRVAR(_sre_SRE_Match___deepcopy____doc__,
Serhiy Storchakafdbd0112017-04-16 10:16:03 +0300728"__deepcopy__($self, memo, /)\n"
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300729"--\n"
730"\n");
731
732#define _SRE_SRE_MATCH___DEEPCOPY___METHODDEF \
Serhiy Storchakafdbd0112017-04-16 10:16:03 +0300733 {"__deepcopy__", (PyCFunction)_sre_SRE_Match___deepcopy__, METH_O, _sre_SRE_Match___deepcopy____doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300734
735PyDoc_STRVAR(_sre_SRE_Scanner_match__doc__,
736"match($self, /)\n"
737"--\n"
738"\n");
739
740#define _SRE_SRE_SCANNER_MATCH_METHODDEF \
741 {"match", (PyCFunction)_sre_SRE_Scanner_match, METH_NOARGS, _sre_SRE_Scanner_match__doc__},
742
743static PyObject *
744_sre_SRE_Scanner_match_impl(ScannerObject *self);
745
746static PyObject *
747_sre_SRE_Scanner_match(ScannerObject *self, PyObject *Py_UNUSED(ignored))
748{
749 return _sre_SRE_Scanner_match_impl(self);
750}
751
752PyDoc_STRVAR(_sre_SRE_Scanner_search__doc__,
753"search($self, /)\n"
754"--\n"
755"\n");
756
757#define _SRE_SRE_SCANNER_SEARCH_METHODDEF \
758 {"search", (PyCFunction)_sre_SRE_Scanner_search, METH_NOARGS, _sre_SRE_Scanner_search__doc__},
759
760static PyObject *
761_sre_SRE_Scanner_search_impl(ScannerObject *self);
762
763static PyObject *
764_sre_SRE_Scanner_search(ScannerObject *self, PyObject *Py_UNUSED(ignored))
765{
766 return _sre_SRE_Scanner_search_impl(self);
767}
Serhiy Storchaka4a934d42018-11-27 11:27:36 +0200768/*[clinic end generated code: output=5edeca5ec36b5f34 input=a9049054013a1b77]*/