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:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2009-04-11 05:45:05 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2009-04-11 05:45:05 +0400
commit9814ea4bcb46fe0f7d2909b57a43f05b0a1e611a (patch)
treebbff0dc3f1d2e8fc944bc14d45762664ffb7a157 /source/blender/python/intern
parent344449e483fa943ae3eb5acb446dd45ca1cfaca2 (diff)
RNA: python support for REQUIRED flag for function parameters.
Diffstat (limited to 'source/blender/python/intern')
-rw-r--r--source/blender/python/intern/bpy_rna.c30
1 files changed, 16 insertions, 14 deletions
diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c
index 3778f7100e1..3dc7456de61 100644
--- a/source/blender/python/intern/bpy_rna.c
+++ b/source/blender/python/intern/bpy_rna.c
@@ -1259,7 +1259,7 @@ static PyObject * pyrna_func_call(PyObject * self, PyObject *args, PyObject *kw)
ParameterIterator iter;
PropertyRNA *pret, *parm;
PyObject *ret, *item;
- int i, tlen, err= 0;
+ int i, tlen, flag, err= 0;
const char *tid, *fid, *pid;
void *retdata= NULL;
@@ -1273,7 +1273,7 @@ static PyObject * pyrna_func_call(PyObject * self, PyObject *args, PyObject *kw)
RNA_parameter_list_begin(parms, &iter);
/* parse function parameters */
- for (i= 0; iter.valid; RNA_parameter_list_next(&iter), i++) {
+ for (i= 0; iter.valid; RNA_parameter_list_next(&iter)) {
parm= iter.parm;
if (parm==pret) {
@@ -1282,25 +1282,27 @@ static PyObject * pyrna_func_call(PyObject * self, PyObject *args, PyObject *kw)
}
pid= RNA_property_identifier(&funcptr, parm);
+ flag= RNA_property_flag(&funcptr, parm);
item= NULL;
- if (i < tlen)
+ if ((i < tlen) && (flag & PROP_REQUIRED)) {
item= PyTuple_GET_ITEM(args, i);
-
- if (kw != NULL)
+ i++;
+ }
+ else if (kw != NULL)
item= PyDict_GetItemString(kw, pid);
if (item==NULL) {
- /* XXX need to add flag for optional required parameters
- if (flag & PARAM_OPTIONAL)
- continue; */
-
- tid= RNA_struct_identifier(self_ptr);
- fid= RNA_function_identifier(self_ptr, self_func);
+ if(flag & PROP_REQUIRED) {
+ tid= RNA_struct_identifier(self_ptr);
+ fid= RNA_function_identifier(self_ptr, self_func);
- PyErr_Format(PyExc_AttributeError, "%s.%s(): required parameter \"%s\" not specified", tid, fid, pid);
- err= -1;
- break;
+ PyErr_Format(PyExc_AttributeError, "%s.%s(): required parameter \"%s\" not specified", tid, fid, pid);
+ err= -1;
+ break;
+ }
+ else
+ continue;
}
err= pyrna_py_to_param(&funcptr, parm, iter.data, item);