1.1 --- a/tools/wrap.py Tue Jan 11 00:58:26 2005 +0100
1.2 +++ b/tools/wrap.py Tue Jan 11 00:59:20 2005 +0100
1.3 @@ -48,30 +48,37 @@
1.4 # Find out more about the parameters, introducing special
1.5 # conversions where appropriate.
1.6
1.7 - parameters = [("self", None)]
1.8 + parameter_names = ["self"]
1.9 parameter_index = 1
1.10 + conversions = []
1.11 +
1.12 for parameter in method.get_descriptor()[0]:
1.13 + parameter_name = "p" + str(parameter_index)
1.14 base_type, object_type, array_type = parameter
1.15 +
1.16 + # Special cases.
1.17 +
1.18 if object_type == "java/lang/String":
1.19 - parameters.append(("p" + str(parameter_index), "unicode"))
1.20 - else:
1.21 - parameters.append(("p" + str(parameter_index), None))
1.22 + conversions.append("%s = unicode(%s)" % (parameter_name, parameter_name))
1.23 + # elif object_type == "java/util/Map":
1.24 + # NOTE: Using special private interface.
1.25 + # conversions.append("%s = %s.as_dict()" % (parameter_name, parameter_name))
1.26 +
1.27 + parameter_names.append(parameter_name)
1.28 parameter_index += 1
1.29
1.30 # Write the signature.
1.31
1.32 - parameter_names = ", ".join([t[0] for t in parameters])
1.33 - f.write(" def %s(%s):\n" % (wrapped_method_name, parameter_names))
1.34 + f.write(" def %s(%s):\n" % (wrapped_method_name, ", ".join(parameter_names)))
1.35
1.36 # Write any conversions.
1.37
1.38 - for parameter_name, conversion in parameters:
1.39 - if conversion:
1.40 - f.write(" %s = %s(%s)\n" % (parameter_name, conversion, parameter_name))
1.41 + for conversion in conversions:
1.42 + f.write(" %s\n" % conversion)
1.43
1.44 # Write the call to the wrapped method.
1.45
1.46 - f.write(" return %s.%s.%s(%s)\n" % (package, class_name, wrapped_method_name, parameter_names))
1.47 + f.write(" return %s.%s.%s(%s)\n" % (package, class_name, wrapped_method_name, ", ".join(parameter_names)))
1.48
1.49 # Record the correspondence between the Java-accessible and wrapped
1.50 # method names.