javaclass

Changeset

117:c24f02c31ec9
2005-01-11 Paul Boddie raw files shortlog changelog graph Made conversions slightly more general.
tools/wrap.py (file)
     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.