[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