rna/py-api fix.

C functions and python used different argument order, this relied on mapping non-keyword arguments to 'REQUIRED' arguments but meant that you could not have an optional, non-keyword argument.

next commit will make order of arguments consistant (currently only changed order that rna wrapped).
(commit 27674 by Campbell from render25 branch)
This commit is contained in:
2010-03-23 15:25:33 +00:00
parent d87e7393e3
commit cb6d2685bd
24 changed files with 123 additions and 126 deletions

View File

@@ -3004,7 +3004,7 @@ static PyObject * pyrna_func_call(PyObject *self, PyObject *args, PyObject *kw)
parm_id= RNA_property_identifier(parm);
item= NULL;
if ((i < pyargs_len) && (flag & PROP_REQUIRED)) {
if (i < pyargs_len) {
item= PyTuple_GET_ITEM(args, i);
i++;
@@ -3049,14 +3049,6 @@ static PyObject * pyrna_func_call(PyObject *self, PyObject *args, PyObject *kw)
RNA_parameter_list_end(&iter);
/* TODO: arg passing is currently messed up with keyword and args,
* needs reworking however this should stop annoying problems
* where args are ignored (for now) */
if(i != pyargs_len) {
PyErr_Format(PyExc_TypeError, "%.200s.%.200s(): congratulations, you found a bug in blender. argument %d needs to be a keyword argument until its fixed", RNA_struct_identifier(self_ptr->type), RNA_function_identifier(self_func), i+1);
err= -1;
}
/* Check if we gave args that dont exist in the function
* printing the error is slow but it should only happen when developing.
* the if below is quick, checking if it passed less keyword args then we gave.