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