Fix variable wrappers when using -noproxy

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10506 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
William S Fulton 2008-05-29 00:45:28 +00:00
commit 9ecf676f70
3 changed files with 41 additions and 31 deletions

View file

@ -1932,7 +1932,7 @@ public:
Swig_warning(WARN_JAVA_TYPEMAP_JSTYPE_UNDEF, input_file, line_number, "No jstype typemap defined for %s\n", SwigType_str(t, 0));
}
if (proxy_flag && wrapping_member_flag && !enum_constant_flag) {
if (wrapping_member_flag && !enum_constant_flag) {
// For wrapping member variables (Javabean setter)
setter_flag = (Cmp(Getattr(n, "sym:name"), Swig_name_set(Swig_name_member(proxy_class_name, variable_name))) == 0);
}
@ -2463,6 +2463,7 @@ public:
num_arguments = emit_num_arguments(l);
num_required = emit_num_required(l);
bool global_or_member_variable = global_variable_flag || (wrapping_member_flag && !enum_constant_flag);
int gencomma = 0;
/* Output each parameter */
@ -2487,7 +2488,7 @@ public:
if (gencomma)
Printf(imcall, ", ");
String *arg = makeParameterName(n, p, i, setter_flag);
String *arg = makeParameterName(n, p, i, global_or_member_variable);
// Use typemaps to transform type used in Java wrapper function (in proxy class) to type used in JNI function (in intermediary class)
if ((tm = Getattr(p, "tmap:javain"))) {
@ -2759,7 +2760,7 @@ public:
* n - Node
* p - parameter node
* arg_num - parameter argument number
* setter - set this flag when wrapping member variables
* setter - set this flag when wrapping variables
* Return:
* arg - a unique parameter name
* ----------------------------------------------------------------------------- */
@ -2768,21 +2769,23 @@ public:
String *arg = 0;
String *pn = Getattr(p, "name");
if (setter) {
// Use C parameter name unless it is a duplicate or an empty parameter name
int count = 0;
ParmList *plist = Getattr(n, "parms");
while (plist) {
if ((Cmp(pn, Getattr(plist, "name")) == 0))
count++;
plist = nextSibling(plist);
}
String *wrn = pn ? Swig_name_warning(p, 0, pn, 0) : 0;
arg = (!pn || (count > 1) || wrn) ? NewStringf("arg%d", arg_num) : Copy(pn);
if (setter && Cmp(arg, "self") != 0) {
// Note that for setters the parameter name is always set but sometimes includes C++
// scope resolution, so we need to strip off the scope resolution to make a valid name.
Delete(arg);
arg = NewString("value"); //Swig_scopename_last(pn);
} else {
// Use C parameter name unless it is a duplicate or an empty parameter name
int count = 0;
ParmList *plist = Getattr(n, "parms");
while (plist) {
if ((Cmp(pn, Getattr(plist, "name")) == 0))
count++;
plist = nextSibling(plist);
}
String *wrn = pn ? Swig_name_warning(p, 0, pn, 0) : 0;
arg = (!pn || (count > 1) || wrn) ? NewStringf("arg%d", arg_num) : Copy(pn);
}
return arg;