Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2020-10-14 08:21:13 +0300
committerCampbell Barton <ideasman42@gmail.com>2020-10-14 08:21:13 +0300
commit2d4f1afece18e46bfab3d6b383a099d89975eefb (patch)
tree9faaa1bb8ac92a6f8b47bf7d55c895d897bfb134 /source/blender/python
parent0133bcaf38f6ecb5d6937c9b762026cc452720de (diff)
Cleanup: reduce indentation level in bpy_class_validate_recursive
Diffstat (limited to 'source/blender/python')
-rw-r--r--source/blender/python/intern/bpy_rna.c143
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. */