diff options
author | Campbell Barton <ideasman42@gmail.com> | 2020-10-14 08:21:13 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2020-10-14 08:21:13 +0300 |
commit | 2d4f1afece18e46bfab3d6b383a099d89975eefb (patch) | |
tree | 9faaa1bb8ac92a6f8b47bf7d55c895d897bfb134 /source | |
parent | 0133bcaf38f6ecb5d6937c9b762026cc452720de (diff) |
Cleanup: reduce indentation level in bpy_class_validate_recursive
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/python/intern/bpy_rna.c | 143 |
1 files changed, 71 insertions, 72 deletions
diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index ce66cd6ee27..71471474ec0 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -8103,18 +8103,11 @@ static int bpy_class_validate_recursive(PointerRNA *dummyptr, for (link = lb->first; link; link = link->next) { FunctionRNA *func = (FunctionRNA *)link; const int flag = RNA_function_flag(func); - /* TODO(campbell): this is used for classmethod's too, - * even though class methods should have 'FUNC_USE_SELF_TYPE' set, see Operator.poll for eg. - * Keep this as-is since it's working, but we should be using - * 'FUNC_USE_SELF_TYPE' for many functions. */ - const bool is_staticmethod = (flag & FUNC_NO_SELF) && !(flag & FUNC_USE_SELF_TYPE); - if (!(flag & FUNC_REGISTER)) { continue; } item = PyObject_GetAttrString(py_class, RNA_function_identifier(func)); - have_function[i] = (item != NULL); i++; @@ -8127,83 +8120,89 @@ static int bpy_class_validate_recursive(PointerRNA *dummyptr, RNA_function_identifier(func)); return -1; } - PyErr_Clear(); + + continue; } - else { - /* Store original so we can decrement it's reference before returning. */ - PyObject *item_orig = item; - if (is_staticmethod) { - if (PyMethod_Check(item) == 0) { - PyErr_Format(PyExc_TypeError, - "expected %.200s, %.200s class \"%.200s\" " - "attribute to be a static/class method, not a %.200s", - class_type, - py_class_name, - RNA_function_identifier(func), - Py_TYPE(item)->tp_name); - Py_DECREF(item_orig); - return -1; - } - item = ((PyMethodObject *)item)->im_func; + /* TODO(campbell): this is used for classmethod's too, + * even though class methods should have 'FUNC_USE_SELF_TYPE' set, see Operator.poll for eg. + * Keep this as-is since it's working, but we should be using + * 'FUNC_USE_SELF_TYPE' for many functions. */ + const bool is_staticmethod = (flag & FUNC_NO_SELF) && !(flag & FUNC_USE_SELF_TYPE); + + /* Store original so we can decrement it's reference before returning. */ + PyObject *item_orig = item; + + if (is_staticmethod) { + if (PyMethod_Check(item) == 0) { + PyErr_Format(PyExc_TypeError, + "expected %.200s, %.200s class \"%.200s\" " + "attribute to be a static/class method, not a %.200s", + class_type, + py_class_name, + RNA_function_identifier(func), + Py_TYPE(item)->tp_name); + Py_DECREF(item_orig); + return -1; } - else { - if (PyFunction_Check(item) == 0) { - PyErr_Format(PyExc_TypeError, - "expected %.200s, %.200s class \"%.200s\" " - "attribute to be a function, not a %.200s", - class_type, - py_class_name, - RNA_function_identifier(func), - Py_TYPE(item)->tp_name); - Py_DECREF(item_orig); - return -1; - } + item = ((PyMethodObject *)item)->im_func; + } + else { + if (PyFunction_Check(item) == 0) { + PyErr_Format(PyExc_TypeError, + "expected %.200s, %.200s class \"%.200s\" " + "attribute to be a function, not a %.200s", + class_type, + py_class_name, + RNA_function_identifier(func), + Py_TYPE(item)->tp_name); + Py_DECREF(item_orig); + return -1; } + } - func_arg_count = rna_function_arg_count(func, &func_arg_min_count); + func_arg_count = rna_function_arg_count(func, &func_arg_min_count); - if (func_arg_count >= 0) { /* -1 if we don't care. */ - arg_count = ((PyCodeObject *)PyFunction_GET_CODE(item))->co_argcount; + if (func_arg_count >= 0) { /* -1 if we don't care. */ + arg_count = ((PyCodeObject *)PyFunction_GET_CODE(item))->co_argcount; - /* note, the number of args we check for and the number of args we give to - * '@staticmethods' are different (quirk of Python), - * this is why rna_function_arg_count() doesn't return the value -1*/ - if (is_staticmethod) { - func_arg_count++; - func_arg_min_count++; - } + /* note, the number of args we check for and the number of args we give to + * '@staticmethods' are different (quirk of Python), + * this is why rna_function_arg_count() doesn't return the value -1*/ + if (is_staticmethod) { + func_arg_count++; + func_arg_min_count++; + } - if (arg_count < func_arg_min_count || arg_count > func_arg_count) { - if (func_arg_min_count != func_arg_count) { - PyErr_Format( - PyExc_ValueError, - "expected %.200s, %.200s class \"%.200s\" function to have between %d and %d " - "args, found %d", - class_type, - py_class_name, - RNA_function_identifier(func), - func_arg_count, - func_arg_min_count, - arg_count); - } - else { - PyErr_Format( - PyExc_ValueError, - "expected %.200s, %.200s class \"%.200s\" function to have %d args, found %d", - class_type, - py_class_name, - RNA_function_identifier(func), - func_arg_count, - arg_count); - } - Py_DECREF(item_orig); - return -1; + if (arg_count < func_arg_min_count || arg_count > func_arg_count) { + if (func_arg_min_count != func_arg_count) { + PyErr_Format( + PyExc_ValueError, + "expected %.200s, %.200s class \"%.200s\" function to have between %d and %d " + "args, found %d", + class_type, + py_class_name, + RNA_function_identifier(func), + func_arg_count, + func_arg_min_count, + arg_count); + } + else { + PyErr_Format( + PyExc_ValueError, + "expected %.200s, %.200s class \"%.200s\" function to have %d args, found %d", + class_type, + py_class_name, + RNA_function_identifier(func), + func_arg_count, + arg_count); } + Py_DECREF(item_orig); + return -1; } - Py_DECREF(item_orig); } + Py_DECREF(item_orig); } /* Verify properties. */ |