[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19650] branches/blender2.5/blender/source /blender/python/intern/bpy_rna.c: RNA: python support for REQUIRED flag for function parameters.
Brecht Van Lommel
brecht at blender.org
Sat Apr 11 03:45:05 CEST 2009
Revision: 19650
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19650
Author: blendix
Date: 2009-04-11 03:45:05 +0200 (Sat, 11 Apr 2009)
Log Message:
-----------
RNA: python support for REQUIRED flag for function parameters.
Modified Paths:
--------------
branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c
Modified: branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c
===================================================================
--- branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c 2009-04-11 01:43:50 UTC (rev 19649)
+++ branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c 2009-04-11 01:45:05 UTC (rev 19650)
@@ -1259,7 +1259,7 @@
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 @@
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 @@
}
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; */
+ if(flag & PROP_REQUIRED) {
+ tid= RNA_struct_identifier(self_ptr);
+ fid= RNA_function_identifier(self_ptr, self_func);
- 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);
More information about the Bf-blender-cvs
mailing list