diff options
author | Campbell Barton <campbell@blender.org> | 2022-04-08 05:49:02 +0300 |
---|---|---|
committer | Campbell Barton <campbell@blender.org> | 2022-04-08 06:28:55 +0300 |
commit | ee292a1d66b22d8707a493550138ead91b3c0ccc (patch) | |
tree | ce67a52e01e4dc3bbc1841b01615b3641f431bcc /source/blender/python/intern/bpy_rna_text.c | |
parent | 982aea88e0d74020c62c2054a45eeafa56c8ca30 (diff) |
PyAPI: use keyword only arguments for Text.region_{from/to} string
This is the convention for most parts of Blender Python API.
Diffstat (limited to 'source/blender/python/intern/bpy_rna_text.c')
-rw-r--r-- | source/blender/python/intern/bpy_rna_text.c | 52 |
1 files changed, 37 insertions, 15 deletions
diff --git a/source/blender/python/intern/bpy_rna_text.c b/source/blender/python/intern/bpy_rna_text.c index fedb914256a..7ccc70cc7fa 100644 --- a/source/blender/python/intern/bpy_rna_text.c +++ b/source/blender/python/intern/bpy_rna_text.c @@ -36,6 +36,8 @@ typedef struct TextRegion { int selc; } TextRegion; +/** \} */ + /* -------------------------------------------------------------------- */ /** \name Text Editor Get / Set region text API * \{ */ @@ -53,18 +55,27 @@ PyDoc_STRVAR(bpy_rna_region_as_string_doc, " :return: The specified region as a string.\n" " :rtype: str.\n"); /* Receive a Python Tuple as parameter to represent the region range. */ -static PyObject *bpy_rna_region_as_string(PyObject *self, PyObject *args) +static PyObject *bpy_rna_region_as_string(PyObject *self, PyObject *args, PyObject *kwds) { BPy_StructRNA *pyrna = (BPy_StructRNA *)self; Text *text = pyrna->ptr.data; /* Parse the region range. */ TextRegion region; - if (!PyArg_ParseTuple( - args, "|((ii)(ii))", ®ion.curl, ®ion.curc, ®ion.sell, ®ion.selc)) { + + static const char *_keywords[] = {"range", NULL}; + static _PyArg_Parser _parser = { + "|$" /* Optional keyword only arguments. */ + "((ii)(ii))" /* `range` */ + ":region_as_string", + _keywords, + 0, + }; + if (!_PyArg_ParseTupleAndKeywordsFast( + args, kwds, &_parser, ®ion.curl, ®ion.curc, ®ion.sell, ®ion.selc)) { return NULL; } - if (PyTuple_GET_SIZE(args) > 0) { + if (PyDict_GET_SIZE(kwds) > 0) { txt_sel_set(text, region.curl, region.curc, region.sell, region.selc); } @@ -98,7 +109,7 @@ PyDoc_STRVAR(bpy_rna_region_from_string_doc, " The values match Python's slicing logic " "(negative values count backwards from the end, the end value is not inclusive).\n" " :type range: Two pairs of ints\n"); -static PyObject *bpy_rna_region_from_string(PyObject *self, PyObject *args) +static PyObject *bpy_rna_region_from_string(PyObject *self, PyObject *args, PyObject *kwds) { BPy_StructRNA *pyrna = (BPy_StructRNA *)self; Text *text = pyrna->ptr.data; @@ -107,18 +118,29 @@ static PyObject *bpy_rna_region_from_string(PyObject *self, PyObject *args) const char *buf; Py_ssize_t buf_len; TextRegion region; - if (!PyArg_ParseTuple(args, - "s#|((ii)(ii))", - &buf, - &buf_len, - ®ion.curl, - ®ion.curc, - ®ion.sell, - ®ion.selc)) { + + static const char *_keywords[] = {"", "range", NULL}; + static _PyArg_Parser _parser = { + "s#" /* `buf` (positional). */ + "|$" /* Optional keyword only arguments. */ + "((ii)(ii))" /* `range` */ + ":region_from_string", + _keywords, + 0, + }; + if (!_PyArg_ParseTupleAndKeywordsFast(args, + kwds, + &_parser, + &buf, + &buf_len, + ®ion.curl, + ®ion.curc, + ®ion.sell, + ®ion.selc)) { return NULL; } - if (PyTuple_GET_SIZE(args) > 1) { + if (PyDict_GET_SIZE(kwds) > 0) { txt_sel_set(text, region.curl, region.curc, region.sell, region.selc); } @@ -133,7 +155,7 @@ static PyObject *bpy_rna_region_from_string(PyObject *self, PyObject *args) PyMethodDef BPY_rna_region_from_string_method_def = { "region_from_string", (PyCFunction)bpy_rna_region_from_string, - METH_VARARGS, + METH_VARARGS | METH_KEYWORDS, bpy_rna_region_from_string_doc, }; |