blob: 39b2e270daf8348d160ea2fca8d696cd4b37a228 [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
32PyDoc_STRVAR(_sre_getlower__doc__,
33"getlower($module, character, flags, /)\n"
34"--\n"
35"\n");
36
37#define _SRE_GETLOWER_METHODDEF \
Victor Stinner259f0e42017-01-17 01:35:17 +010038 {"getlower", (PyCFunction)_sre_getlower, METH_FASTCALL, _sre_getlower__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030039
40static int
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +030041_sre_getlower_impl(PyObject *module, int character, int flags);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030042
43static PyObject *
Victor Stinner259f0e42017-01-17 01:35:17 +010044_sre_getlower(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030045{
46 PyObject *return_value = NULL;
47 int character;
48 int flags;
49 int _return_value;
50
Victor Stinner259f0e42017-01-17 01:35:17 +010051 if (!_PyArg_ParseStack(args, nargs, "ii:getlower",
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030052 &character, &flags)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030053 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030054 }
Victor Stinner259f0e42017-01-17 01:35:17 +010055
56 if (!_PyArg_NoStackKeywords("getlower", kwnames)) {
57 goto exit;
58 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030059 _return_value = _sre_getlower_impl(module, character, flags);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030060 if ((_return_value == -1) && PyErr_Occurred()) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030061 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030062 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030063 return_value = PyLong_FromLong((long)_return_value);
64
65exit:
66 return return_value;
67}
68
69PyDoc_STRVAR(_sre_SRE_Pattern_match__doc__,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +020070"match($self, /, string, pos=0, endpos=sys.maxsize)\n"
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030071"--\n"
72"\n"
73"Matches zero or more characters at the beginning of the string.");
74
75#define _SRE_SRE_PATTERN_MATCH_METHODDEF \
Victor Stinner37e4ef72016-09-09 20:00:13 -070076 {"match", (PyCFunction)_sre_SRE_Pattern_match, METH_FASTCALL, _sre_SRE_Pattern_match__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030077
78static PyObject *
79_sre_SRE_Pattern_match_impl(PatternObject *self, PyObject *string,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +020080 Py_ssize_t pos, Py_ssize_t endpos);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030081
82static PyObject *
Victor Stinner37e4ef72016-09-09 20:00:13 -070083_sre_SRE_Pattern_match(PatternObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030084{
85 PyObject *return_value = NULL;
Serhiy Storchakab37f3f62017-01-13 08:53:58 +020086 static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
87 static _PyArg_Parser _parser = {"O|nn:match", _keywords, 0};
88 PyObject *string;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030089 Py_ssize_t pos = 0;
90 Py_ssize_t endpos = PY_SSIZE_T_MAX;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030091
Victor Stinner3e1fad62017-01-17 01:29:01 +010092 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +020093 &string, &pos, &endpos)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030094 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +030095 }
Serhiy Storchakab37f3f62017-01-13 08:53:58 +020096 return_value = _sre_SRE_Pattern_match_impl(self, string, pos, endpos);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +030097
98exit:
99 return return_value;
100}
101
102PyDoc_STRVAR(_sre_SRE_Pattern_fullmatch__doc__,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200103"fullmatch($self, /, string, pos=0, endpos=sys.maxsize)\n"
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300104"--\n"
105"\n"
106"Matches against all of the string");
107
108#define _SRE_SRE_PATTERN_FULLMATCH_METHODDEF \
Victor Stinner37e4ef72016-09-09 20:00:13 -0700109 {"fullmatch", (PyCFunction)_sre_SRE_Pattern_fullmatch, METH_FASTCALL, _sre_SRE_Pattern_fullmatch__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300110
111static PyObject *
112_sre_SRE_Pattern_fullmatch_impl(PatternObject *self, PyObject *string,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200113 Py_ssize_t pos, Py_ssize_t endpos);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300114
115static PyObject *
Victor Stinner37e4ef72016-09-09 20:00:13 -0700116_sre_SRE_Pattern_fullmatch(PatternObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300117{
118 PyObject *return_value = NULL;
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200119 static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
120 static _PyArg_Parser _parser = {"O|nn:fullmatch", _keywords, 0};
121 PyObject *string;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300122 Py_ssize_t pos = 0;
123 Py_ssize_t endpos = PY_SSIZE_T_MAX;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300124
Victor Stinner3e1fad62017-01-17 01:29:01 +0100125 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200126 &string, &pos, &endpos)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300127 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300128 }
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200129 return_value = _sre_SRE_Pattern_fullmatch_impl(self, string, pos, endpos);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300130
131exit:
132 return return_value;
133}
134
135PyDoc_STRVAR(_sre_SRE_Pattern_search__doc__,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200136"search($self, /, string, pos=0, endpos=sys.maxsize)\n"
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300137"--\n"
138"\n"
139"Scan through string looking for a match, and return a corresponding match object instance.\n"
140"\n"
141"Return None if no position in the string matches.");
142
143#define _SRE_SRE_PATTERN_SEARCH_METHODDEF \
Victor Stinner37e4ef72016-09-09 20:00:13 -0700144 {"search", (PyCFunction)_sre_SRE_Pattern_search, METH_FASTCALL, _sre_SRE_Pattern_search__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300145
146static PyObject *
147_sre_SRE_Pattern_search_impl(PatternObject *self, PyObject *string,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200148 Py_ssize_t pos, Py_ssize_t endpos);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300149
150static PyObject *
Victor Stinner37e4ef72016-09-09 20:00:13 -0700151_sre_SRE_Pattern_search(PatternObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300152{
153 PyObject *return_value = NULL;
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200154 static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
155 static _PyArg_Parser _parser = {"O|nn:search", _keywords, 0};
156 PyObject *string;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300157 Py_ssize_t pos = 0;
158 Py_ssize_t endpos = PY_SSIZE_T_MAX;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300159
Victor Stinner3e1fad62017-01-17 01:29:01 +0100160 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200161 &string, &pos, &endpos)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300162 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300163 }
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200164 return_value = _sre_SRE_Pattern_search_impl(self, string, pos, endpos);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300165
166exit:
167 return return_value;
168}
169
170PyDoc_STRVAR(_sre_SRE_Pattern_findall__doc__,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200171"findall($self, /, string, pos=0, endpos=sys.maxsize)\n"
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300172"--\n"
173"\n"
174"Return a list of all non-overlapping matches of pattern in string.");
175
176#define _SRE_SRE_PATTERN_FINDALL_METHODDEF \
Victor Stinner37e4ef72016-09-09 20:00:13 -0700177 {"findall", (PyCFunction)_sre_SRE_Pattern_findall, METH_FASTCALL, _sre_SRE_Pattern_findall__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300178
179static PyObject *
180_sre_SRE_Pattern_findall_impl(PatternObject *self, PyObject *string,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200181 Py_ssize_t pos, Py_ssize_t endpos);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300182
183static PyObject *
Victor Stinner37e4ef72016-09-09 20:00:13 -0700184_sre_SRE_Pattern_findall(PatternObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300185{
186 PyObject *return_value = NULL;
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200187 static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
188 static _PyArg_Parser _parser = {"O|nn:findall", _keywords, 0};
189 PyObject *string;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300190 Py_ssize_t pos = 0;
191 Py_ssize_t endpos = PY_SSIZE_T_MAX;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300192
Victor Stinner3e1fad62017-01-17 01:29:01 +0100193 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200194 &string, &pos, &endpos)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300195 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300196 }
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200197 return_value = _sre_SRE_Pattern_findall_impl(self, string, pos, endpos);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300198
199exit:
200 return return_value;
201}
202
203PyDoc_STRVAR(_sre_SRE_Pattern_finditer__doc__,
204"finditer($self, /, string, pos=0, endpos=sys.maxsize)\n"
205"--\n"
206"\n"
207"Return an iterator over all non-overlapping matches for the RE pattern in string.\n"
208"\n"
209"For each match, the iterator returns a match object.");
210
211#define _SRE_SRE_PATTERN_FINDITER_METHODDEF \
Victor Stinner37e4ef72016-09-09 20:00:13 -0700212 {"finditer", (PyCFunction)_sre_SRE_Pattern_finditer, METH_FASTCALL, _sre_SRE_Pattern_finditer__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300213
214static PyObject *
215_sre_SRE_Pattern_finditer_impl(PatternObject *self, PyObject *string,
216 Py_ssize_t pos, Py_ssize_t endpos);
217
218static PyObject *
Victor Stinner37e4ef72016-09-09 20:00:13 -0700219_sre_SRE_Pattern_finditer(PatternObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300220{
221 PyObject *return_value = NULL;
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +0300222 static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
223 static _PyArg_Parser _parser = {"O|nn:finditer", _keywords, 0};
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300224 PyObject *string;
225 Py_ssize_t pos = 0;
226 Py_ssize_t endpos = PY_SSIZE_T_MAX;
227
Victor Stinner3e1fad62017-01-17 01:29:01 +0100228 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300229 &string, &pos, &endpos)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300230 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300231 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300232 return_value = _sre_SRE_Pattern_finditer_impl(self, string, pos, endpos);
233
234exit:
235 return return_value;
236}
237
238PyDoc_STRVAR(_sre_SRE_Pattern_scanner__doc__,
239"scanner($self, /, string, pos=0, endpos=sys.maxsize)\n"
240"--\n"
241"\n");
242
243#define _SRE_SRE_PATTERN_SCANNER_METHODDEF \
Victor Stinner37e4ef72016-09-09 20:00:13 -0700244 {"scanner", (PyCFunction)_sre_SRE_Pattern_scanner, METH_FASTCALL, _sre_SRE_Pattern_scanner__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300245
246static PyObject *
247_sre_SRE_Pattern_scanner_impl(PatternObject *self, PyObject *string,
248 Py_ssize_t pos, Py_ssize_t endpos);
249
250static PyObject *
Victor Stinner37e4ef72016-09-09 20:00:13 -0700251_sre_SRE_Pattern_scanner(PatternObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300252{
253 PyObject *return_value = NULL;
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +0300254 static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
255 static _PyArg_Parser _parser = {"O|nn:scanner", _keywords, 0};
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300256 PyObject *string;
257 Py_ssize_t pos = 0;
258 Py_ssize_t endpos = PY_SSIZE_T_MAX;
259
Victor Stinner3e1fad62017-01-17 01:29:01 +0100260 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300261 &string, &pos, &endpos)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300262 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300263 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300264 return_value = _sre_SRE_Pattern_scanner_impl(self, string, pos, endpos);
265
266exit:
267 return return_value;
268}
269
270PyDoc_STRVAR(_sre_SRE_Pattern_split__doc__,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200271"split($self, /, string, maxsplit=0)\n"
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300272"--\n"
273"\n"
274"Split string by the occurrences of pattern.");
275
276#define _SRE_SRE_PATTERN_SPLIT_METHODDEF \
Victor Stinner37e4ef72016-09-09 20:00:13 -0700277 {"split", (PyCFunction)_sre_SRE_Pattern_split, METH_FASTCALL, _sre_SRE_Pattern_split__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300278
279static PyObject *
280_sre_SRE_Pattern_split_impl(PatternObject *self, PyObject *string,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200281 Py_ssize_t maxsplit);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300282
283static PyObject *
Victor Stinner37e4ef72016-09-09 20:00:13 -0700284_sre_SRE_Pattern_split(PatternObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300285{
286 PyObject *return_value = NULL;
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200287 static const char * const _keywords[] = {"string", "maxsplit", NULL};
288 static _PyArg_Parser _parser = {"O|n:split", _keywords, 0};
289 PyObject *string;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300290 Py_ssize_t maxsplit = 0;
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300291
Victor Stinner3e1fad62017-01-17 01:29:01 +0100292 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200293 &string, &maxsplit)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300294 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300295 }
Serhiy Storchakab37f3f62017-01-13 08:53:58 +0200296 return_value = _sre_SRE_Pattern_split_impl(self, string, maxsplit);
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300297
298exit:
299 return return_value;
300}
301
302PyDoc_STRVAR(_sre_SRE_Pattern_sub__doc__,
303"sub($self, /, repl, string, count=0)\n"
304"--\n"
305"\n"
306"Return the string obtained by replacing the leftmost non-overlapping occurrences of pattern in string by the replacement repl.");
307
308#define _SRE_SRE_PATTERN_SUB_METHODDEF \
Victor Stinner37e4ef72016-09-09 20:00:13 -0700309 {"sub", (PyCFunction)_sre_SRE_Pattern_sub, METH_FASTCALL, _sre_SRE_Pattern_sub__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300310
311static PyObject *
312_sre_SRE_Pattern_sub_impl(PatternObject *self, PyObject *repl,
313 PyObject *string, Py_ssize_t count);
314
315static PyObject *
Victor Stinner37e4ef72016-09-09 20:00:13 -0700316_sre_SRE_Pattern_sub(PatternObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300317{
318 PyObject *return_value = NULL;
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +0300319 static const char * const _keywords[] = {"repl", "string", "count", NULL};
320 static _PyArg_Parser _parser = {"OO|n:sub", _keywords, 0};
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300321 PyObject *repl;
322 PyObject *string;
323 Py_ssize_t count = 0;
324
Victor Stinner3e1fad62017-01-17 01:29:01 +0100325 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300326 &repl, &string, &count)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300327 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300328 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300329 return_value = _sre_SRE_Pattern_sub_impl(self, repl, string, count);
330
331exit:
332 return return_value;
333}
334
335PyDoc_STRVAR(_sre_SRE_Pattern_subn__doc__,
336"subn($self, /, repl, string, count=0)\n"
337"--\n"
338"\n"
339"Return the tuple (new_string, number_of_subs_made) found by replacing the leftmost non-overlapping occurrences of pattern with the replacement repl.");
340
341#define _SRE_SRE_PATTERN_SUBN_METHODDEF \
Victor Stinner37e4ef72016-09-09 20:00:13 -0700342 {"subn", (PyCFunction)_sre_SRE_Pattern_subn, METH_FASTCALL, _sre_SRE_Pattern_subn__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300343
344static PyObject *
345_sre_SRE_Pattern_subn_impl(PatternObject *self, PyObject *repl,
346 PyObject *string, Py_ssize_t count);
347
348static PyObject *
Victor Stinner37e4ef72016-09-09 20:00:13 -0700349_sre_SRE_Pattern_subn(PatternObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300350{
351 PyObject *return_value = NULL;
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +0300352 static const char * const _keywords[] = {"repl", "string", "count", NULL};
353 static _PyArg_Parser _parser = {"OO|n:subn", _keywords, 0};
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300354 PyObject *repl;
355 PyObject *string;
356 Py_ssize_t count = 0;
357
Victor Stinner3e1fad62017-01-17 01:29:01 +0100358 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300359 &repl, &string, &count)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300360 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300361 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300362 return_value = _sre_SRE_Pattern_subn_impl(self, repl, string, count);
363
364exit:
365 return return_value;
366}
367
368PyDoc_STRVAR(_sre_SRE_Pattern___copy____doc__,
369"__copy__($self, /)\n"
370"--\n"
371"\n");
372
373#define _SRE_SRE_PATTERN___COPY___METHODDEF \
374 {"__copy__", (PyCFunction)_sre_SRE_Pattern___copy__, METH_NOARGS, _sre_SRE_Pattern___copy____doc__},
375
376static PyObject *
377_sre_SRE_Pattern___copy___impl(PatternObject *self);
378
379static PyObject *
380_sre_SRE_Pattern___copy__(PatternObject *self, PyObject *Py_UNUSED(ignored))
381{
382 return _sre_SRE_Pattern___copy___impl(self);
383}
384
385PyDoc_STRVAR(_sre_SRE_Pattern___deepcopy____doc__,
386"__deepcopy__($self, /, memo)\n"
387"--\n"
388"\n");
389
390#define _SRE_SRE_PATTERN___DEEPCOPY___METHODDEF \
Victor Stinner37e4ef72016-09-09 20:00:13 -0700391 {"__deepcopy__", (PyCFunction)_sre_SRE_Pattern___deepcopy__, METH_FASTCALL, _sre_SRE_Pattern___deepcopy____doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300392
393static PyObject *
394_sre_SRE_Pattern___deepcopy___impl(PatternObject *self, PyObject *memo);
395
396static PyObject *
Victor Stinner37e4ef72016-09-09 20:00:13 -0700397_sre_SRE_Pattern___deepcopy__(PatternObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300398{
399 PyObject *return_value = NULL;
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +0300400 static const char * const _keywords[] = {"memo", NULL};
401 static _PyArg_Parser _parser = {"O:__deepcopy__", _keywords, 0};
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300402 PyObject *memo;
403
Victor Stinner3e1fad62017-01-17 01:29:01 +0100404 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300405 &memo)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300406 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300407 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300408 return_value = _sre_SRE_Pattern___deepcopy___impl(self, memo);
409
410exit:
411 return return_value;
412}
413
414PyDoc_STRVAR(_sre_compile__doc__,
415"compile($module, /, pattern, flags, code, groups, groupindex,\n"
416" indexgroup)\n"
417"--\n"
418"\n");
419
420#define _SRE_COMPILE_METHODDEF \
Victor Stinner37e4ef72016-09-09 20:00:13 -0700421 {"compile", (PyCFunction)_sre_compile, METH_FASTCALL, _sre_compile__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300422
423static PyObject *
Serhiy Storchaka1a2b24f2016-07-07 17:35:15 +0300424_sre_compile_impl(PyObject *module, PyObject *pattern, int flags,
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300425 PyObject *code, Py_ssize_t groups, PyObject *groupindex,
426 PyObject *indexgroup);
427
428static PyObject *
Victor Stinner37e4ef72016-09-09 20:00:13 -0700429_sre_compile(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300430{
431 PyObject *return_value = NULL;
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +0300432 static const char * const _keywords[] = {"pattern", "flags", "code", "groups", "groupindex", "indexgroup", NULL};
Victor Stinner726a57d2016-11-22 23:04:39 +0100433 static _PyArg_Parser _parser = {"OiO!nO!O!:compile", _keywords, 0};
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300434 PyObject *pattern;
435 int flags;
436 PyObject *code;
437 Py_ssize_t groups;
438 PyObject *groupindex;
439 PyObject *indexgroup;
440
Victor Stinner3e1fad62017-01-17 01:29:01 +0100441 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Victor Stinner726a57d2016-11-22 23:04:39 +0100442 &pattern, &flags, &PyList_Type, &code, &groups, &PyDict_Type, &groupindex, &PyTuple_Type, &indexgroup)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300443 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300444 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300445 return_value = _sre_compile_impl(module, pattern, flags, code, groups, groupindex, indexgroup);
446
447exit:
448 return return_value;
449}
450
451PyDoc_STRVAR(_sre_SRE_Match_expand__doc__,
452"expand($self, /, template)\n"
453"--\n"
454"\n"
455"Return the string obtained by doing backslash substitution on the string template, as done by the sub() method.");
456
457#define _SRE_SRE_MATCH_EXPAND_METHODDEF \
Victor Stinner37e4ef72016-09-09 20:00:13 -0700458 {"expand", (PyCFunction)_sre_SRE_Match_expand, METH_FASTCALL, _sre_SRE_Match_expand__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300459
460static PyObject *
461_sre_SRE_Match_expand_impl(MatchObject *self, PyObject *template);
462
463static PyObject *
Victor Stinner37e4ef72016-09-09 20:00:13 -0700464_sre_SRE_Match_expand(MatchObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300465{
466 PyObject *return_value = NULL;
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +0300467 static const char * const _keywords[] = {"template", NULL};
468 static _PyArg_Parser _parser = {"O:expand", _keywords, 0};
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300469 PyObject *template;
470
Victor Stinner3e1fad62017-01-17 01:29:01 +0100471 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300472 &template)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300473 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300474 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300475 return_value = _sre_SRE_Match_expand_impl(self, template);
476
477exit:
478 return return_value;
479}
480
481PyDoc_STRVAR(_sre_SRE_Match_groups__doc__,
482"groups($self, /, default=None)\n"
483"--\n"
484"\n"
485"Return a tuple containing all the subgroups of the match, from 1.\n"
486"\n"
487" default\n"
488" Is used for groups that did not participate in the match.");
489
490#define _SRE_SRE_MATCH_GROUPS_METHODDEF \
Victor Stinner37e4ef72016-09-09 20:00:13 -0700491 {"groups", (PyCFunction)_sre_SRE_Match_groups, METH_FASTCALL, _sre_SRE_Match_groups__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300492
493static PyObject *
494_sre_SRE_Match_groups_impl(MatchObject *self, PyObject *default_value);
495
496static PyObject *
Victor Stinner37e4ef72016-09-09 20:00:13 -0700497_sre_SRE_Match_groups(MatchObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300498{
499 PyObject *return_value = NULL;
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +0300500 static const char * const _keywords[] = {"default", NULL};
501 static _PyArg_Parser _parser = {"|O:groups", _keywords, 0};
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300502 PyObject *default_value = Py_None;
503
Victor Stinner3e1fad62017-01-17 01:29:01 +0100504 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300505 &default_value)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300506 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300507 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300508 return_value = _sre_SRE_Match_groups_impl(self, default_value);
509
510exit:
511 return return_value;
512}
513
514PyDoc_STRVAR(_sre_SRE_Match_groupdict__doc__,
515"groupdict($self, /, default=None)\n"
516"--\n"
517"\n"
518"Return a dictionary containing all the named subgroups of the match, keyed by the subgroup name.\n"
519"\n"
520" default\n"
521" Is used for groups that did not participate in the match.");
522
523#define _SRE_SRE_MATCH_GROUPDICT_METHODDEF \
Victor Stinner37e4ef72016-09-09 20:00:13 -0700524 {"groupdict", (PyCFunction)_sre_SRE_Match_groupdict, METH_FASTCALL, _sre_SRE_Match_groupdict__doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300525
526static PyObject *
527_sre_SRE_Match_groupdict_impl(MatchObject *self, PyObject *default_value);
528
529static PyObject *
Victor Stinner37e4ef72016-09-09 20:00:13 -0700530_sre_SRE_Match_groupdict(MatchObject *self, PyObject **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[] = {"default", NULL};
534 static _PyArg_Parser _parser = {"|O:groupdict", _keywords, 0};
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300535 PyObject *default_value = Py_None;
536
Victor Stinner3e1fad62017-01-17 01:29:01 +0100537 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300538 &default_value)) {
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_groupdict_impl(self, default_value);
542
543exit:
544 return return_value;
545}
546
547PyDoc_STRVAR(_sre_SRE_Match_start__doc__,
548"start($self, group=0, /)\n"
549"--\n"
550"\n"
551"Return index of the start of the substring matched by group.");
552
553#define _SRE_SRE_MATCH_START_METHODDEF \
554 {"start", (PyCFunction)_sre_SRE_Match_start, METH_VARARGS, _sre_SRE_Match_start__doc__},
555
556static Py_ssize_t
557_sre_SRE_Match_start_impl(MatchObject *self, PyObject *group);
558
559static PyObject *
560_sre_SRE_Match_start(MatchObject *self, PyObject *args)
561{
562 PyObject *return_value = NULL;
563 PyObject *group = NULL;
564 Py_ssize_t _return_value;
565
566 if (!PyArg_UnpackTuple(args, "start",
567 0, 1,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300568 &group)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300569 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300570 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300571 _return_value = _sre_SRE_Match_start_impl(self, group);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300572 if ((_return_value == -1) && PyErr_Occurred()) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300573 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300574 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300575 return_value = PyLong_FromSsize_t(_return_value);
576
577exit:
578 return return_value;
579}
580
581PyDoc_STRVAR(_sre_SRE_Match_end__doc__,
582"end($self, group=0, /)\n"
583"--\n"
584"\n"
585"Return index of the end of the substring matched by group.");
586
587#define _SRE_SRE_MATCH_END_METHODDEF \
588 {"end", (PyCFunction)_sre_SRE_Match_end, METH_VARARGS, _sre_SRE_Match_end__doc__},
589
590static Py_ssize_t
591_sre_SRE_Match_end_impl(MatchObject *self, PyObject *group);
592
593static PyObject *
594_sre_SRE_Match_end(MatchObject *self, PyObject *args)
595{
596 PyObject *return_value = NULL;
597 PyObject *group = NULL;
598 Py_ssize_t _return_value;
599
600 if (!PyArg_UnpackTuple(args, "end",
601 0, 1,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300602 &group)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300603 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300604 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300605 _return_value = _sre_SRE_Match_end_impl(self, group);
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300606 if ((_return_value == -1) && PyErr_Occurred()) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300607 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300608 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300609 return_value = PyLong_FromSsize_t(_return_value);
610
611exit:
612 return return_value;
613}
614
615PyDoc_STRVAR(_sre_SRE_Match_span__doc__,
616"span($self, group=0, /)\n"
617"--\n"
618"\n"
619"For MatchObject m, return the 2-tuple (m.start(group), m.end(group)).");
620
621#define _SRE_SRE_MATCH_SPAN_METHODDEF \
622 {"span", (PyCFunction)_sre_SRE_Match_span, METH_VARARGS, _sre_SRE_Match_span__doc__},
623
624static PyObject *
625_sre_SRE_Match_span_impl(MatchObject *self, PyObject *group);
626
627static PyObject *
628_sre_SRE_Match_span(MatchObject *self, PyObject *args)
629{
630 PyObject *return_value = NULL;
631 PyObject *group = NULL;
632
633 if (!PyArg_UnpackTuple(args, "span",
634 0, 1,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300635 &group)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300636 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300637 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300638 return_value = _sre_SRE_Match_span_impl(self, group);
639
640exit:
641 return return_value;
642}
643
644PyDoc_STRVAR(_sre_SRE_Match___copy____doc__,
645"__copy__($self, /)\n"
646"--\n"
647"\n");
648
649#define _SRE_SRE_MATCH___COPY___METHODDEF \
650 {"__copy__", (PyCFunction)_sre_SRE_Match___copy__, METH_NOARGS, _sre_SRE_Match___copy____doc__},
651
652static PyObject *
653_sre_SRE_Match___copy___impl(MatchObject *self);
654
655static PyObject *
656_sre_SRE_Match___copy__(MatchObject *self, PyObject *Py_UNUSED(ignored))
657{
658 return _sre_SRE_Match___copy___impl(self);
659}
660
661PyDoc_STRVAR(_sre_SRE_Match___deepcopy____doc__,
662"__deepcopy__($self, /, memo)\n"
663"--\n"
664"\n");
665
666#define _SRE_SRE_MATCH___DEEPCOPY___METHODDEF \
Victor Stinner37e4ef72016-09-09 20:00:13 -0700667 {"__deepcopy__", (PyCFunction)_sre_SRE_Match___deepcopy__, METH_FASTCALL, _sre_SRE_Match___deepcopy____doc__},
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300668
669static PyObject *
670_sre_SRE_Match___deepcopy___impl(MatchObject *self, PyObject *memo);
671
672static PyObject *
Victor Stinner37e4ef72016-09-09 20:00:13 -0700673_sre_SRE_Match___deepcopy__(MatchObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300674{
675 PyObject *return_value = NULL;
Serhiy Storchaka9171a8b2016-08-14 10:52:18 +0300676 static const char * const _keywords[] = {"memo", NULL};
677 static _PyArg_Parser _parser = {"O:__deepcopy__", _keywords, 0};
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300678 PyObject *memo;
679
Victor Stinner3e1fad62017-01-17 01:29:01 +0100680 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300681 &memo)) {
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300682 goto exit;
Serhiy Storchaka5dee6552016-06-09 16:16:06 +0300683 }
Serhiy Storchakaa860aea2015-05-03 15:54:23 +0300684 return_value = _sre_SRE_Match___deepcopy___impl(self, memo);
685
686exit:
687 return return_value;
688}
689
690PyDoc_STRVAR(_sre_SRE_Scanner_match__doc__,
691"match($self, /)\n"
692"--\n"
693"\n");
694
695#define _SRE_SRE_SCANNER_MATCH_METHODDEF \
696 {"match", (PyCFunction)_sre_SRE_Scanner_match, METH_NOARGS, _sre_SRE_Scanner_match__doc__},
697
698static PyObject *
699_sre_SRE_Scanner_match_impl(ScannerObject *self);
700
701static PyObject *
702_sre_SRE_Scanner_match(ScannerObject *self, PyObject *Py_UNUSED(ignored))
703{
704 return _sre_SRE_Scanner_match_impl(self);
705}
706
707PyDoc_STRVAR(_sre_SRE_Scanner_search__doc__,
708"search($self, /)\n"
709"--\n"
710"\n");
711
712#define _SRE_SRE_SCANNER_SEARCH_METHODDEF \
713 {"search", (PyCFunction)_sre_SRE_Scanner_search, METH_NOARGS, _sre_SRE_Scanner_search__doc__},
714
715static PyObject *
716_sre_SRE_Scanner_search_impl(ScannerObject *self);
717
718static PyObject *
719_sre_SRE_Scanner_search(ScannerObject *self, PyObject *Py_UNUSED(ignored))
720{
721 return _sre_SRE_Scanner_search_impl(self);
722}
Victor Stinner259f0e42017-01-17 01:35:17 +0100723/*[clinic end generated code: output=3dff18d3b6110b86 input=a9049054013a1b77]*/