fix kwargs + -O and use Swig_name_make for parameter names

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@8539 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Marcelo Matus 2006-01-24 09:06:49 +00:00
commit 120184f1be

View file

@ -1515,9 +1515,6 @@ public:
if (((num_arguments == 0) && (num_required == 0)) ||
((num_arguments == 1) && (num_required == 1) && Getattr(l,"self"))) allow_kwargs = 0;
varargs = emit_isvarargs(l);
int funpack = modernargs && fastunpack && !varargs && !allow_kwargs ;
int noargs = funpack && (num_required == 0 && num_arguments == 0);
int onearg = funpack && (num_required == 1 && num_arguments == 1);
String *nw = Swig_name_wrapper(iname);
strcpy(wname,Char(nw));
@ -1557,6 +1554,10 @@ public:
Printf(arglist,",kwnames");
}
int funpack = modernargs && fastunpack && !varargs && !allow_kwargs ;
int noargs = funpack && (num_required == 0 && num_arguments == 0);
int onearg = funpack && (num_required == 1 && num_arguments == 1);
/* Generate code for argument marshalling */
if (funpack) {
if (overname) {
@ -1605,17 +1606,15 @@ public:
if (i == num_required) Putc('|', parse_args); /* Optional argument separator */
/* Keyword argument handling */
String *wrn = (allow_kwargs && pn) ? Swig_name_warning(p,0,pn,0) : 0;
if (!wrn && Len(pn)) {
Printf(kwargs,"(char *) \"%s\",", pn);
} else {
if (wrn) {
/*
we change the parameter name just a little.
do we need to emit a warning?
*/
Printf(kwargs,"(char *) \"_%s\",", pn);
Swig_warning(0,Getfile(n),Getline(n), "314:, '%s' is a renaming parameter to _%s\n", wrn, pn);
if (allow_kwargs) {
if (Len(pn)) {
String *tmp = 0;
String *name = pn;
if (!Getattr(p,"self")) {
name = tmp = Swig_name_make(p,0,pn,0, 0);
}
Printf(kwargs,"(char *) \"%s\",", name);
if (tmp) Delete(tmp);
} else {
Printf(kwargs,"(char *)\"arg%d\",", i+1);
}