Merge: Jwrapper: more clean up
authorJean Privat <jean@pryen.org>
Tue, 27 Jan 2015 01:29:14 +0000 (08:29 +0700)
committerJean Privat <jean@pryen.org>
Tue, 27 Jan 2015 01:29:14 +0000 (08:29 +0700)
Pull-Request: #1121
Reviewed-by: Romain Chanoir <chanoir.romain@courrier.uqam.ca>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>

contrib/jwrapper/src/code_generator.nit
contrib/jwrapper/src/javap_visitor.nit
contrib/jwrapper/src/model.nit

index 0da3c77..ed456f6 100644 (file)
@@ -27,7 +27,6 @@ class CodeGenerator
        var java_class: JavaClass
        var nb_params: Int
        var module_name: String
-       fun code_warehouse: CodeWarehouse do return once new CodeWarehouse
 
        init (file_name: String, jclass: JavaClass, with_attributes, comment: Bool)
        do
@@ -81,9 +80,8 @@ class CodeGenerator
 
        fun gen_licence: String
        do
-               return """# This file is part of NIT (http://www.nitlanguage.org).
-#
-# Copyright [Year] [Author name] <Author e-mail>
+               return """
+# This file is part of NIT (http://www.nitlanguage.org).
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -97,7 +95,7 @@ class CodeGenerator
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# This code has been generated using `javap`
+# This code has been generated using `jwrapper`
 """
        end
 
@@ -229,33 +227,6 @@ class CodeGenerator
        end
 end
 
-# Contains raw code mostly used to copy collections
-class CodeWarehouse
-
-       private fun create_imports(nit_type: NitType, is_param: Bool): String
-       do
-               var imports = ""
-               var ntype = nit_type.to_s
-               var gen_type = nit_type.generic_params.join(", ")
-
-               if not is_param then
-                       if nit_type.is_map then
-                               imports = """ import {{{ntype}}}, {{{ntype}}}.[]="""
-                       else
-                               imports = """ import {{{ntype}}}, {{{ntype}}}.add"""
-                       end
-               else if nit_type.id == "Array" then
-                       imports = """ import {{{ntype}}}, {{{ntype}}}.length, {{{ntype}}}.[]"""
-               else if nit_type.is_map then
-                       imports = """ import {{{ntype}}}.iterator, Iterator[{{{gen_type}}}].is_ok, Iterator[{{{gen_type}}}].next, Iterator[{{{gen_type}}}].item, Iterator[{{{gen_type}}}].key"""
-               else
-                       imports = """ import {{{ntype}}}.iterator, Iterator[{{{gen_type}}}].is_ok, Iterator[{{{gen_type}}}].next, Iterator[{{{gen_type}}}].item"""
-               end
-
-               return imports
-       end
-end
-
 redef class String
        # Convert the Java method name `self` to the Nit style
        #
@@ -264,16 +235,13 @@ redef class String
        # * Add suffix `=` to setters
        fun to_nit_method_name: String
        do
-               var name
-               if self.has_prefix("Get") then
-                       name = self.substring_from(3)
-               else if self.has_prefix("Set") then
-                       name = self.substring_from(3)
-                       name += "="
-               else
-                       name = self
+               var name = self.to_snake_case
+               if name.has_prefix("get_") then
+                       name = name.substring_from(4)
+               else if name.has_prefix("set_") then
+                       name = name.substring_from(4) + "="
                end
 
-               return name.to_snake_case
+               return name
        end
 end
index 9ee4190..64415a4 100644 (file)
@@ -61,6 +61,22 @@ class JavaVisitor
                self.variable_type = new JavaType(self.converter)
                super
        end
+
+       # Add the identifier from `token` to the current context
+       fun add_identifier(token: NToken)
+       do
+               if declaration_type == "variable" then
+                       if declaration_element == "type" then
+                               variable_type.identifier.add(token.text)
+                       end
+               else if declaration_type == "method" then
+                       if declaration_element == "return_type" then
+                               method_return_type.identifier.add(token.text)
+                       else if declaration_element == "parameter_list" then
+                               method_params[param_index].identifier.add(token.text)
+                       end
+               end
+       end
 end
 
 redef class Node
@@ -162,139 +178,35 @@ redef class N_39d_91d_93d_39d
 end
 
 redef class N_39dchar_39d
-       redef fun accept_visitor(v)
-       do
-               if v.declaration_type == "variable" then
-                       if v.declaration_element == "type" then
-                               v.variable_type.identifier.add(self.text)
-                       end
-               else if v.declaration_type == "method" then
-                       if v.declaration_element == "return_type" then
-                               v.method_return_type.identifier.add(self.text)
-                       else if v.declaration_element == "parameter_list" then
-                               v.method_params[v.param_index].identifier.add(self.text)
-                       end
-               end
-       end
+       redef fun accept_visitor(v) do v.add_identifier self
 end
 
 redef class N_39dboolean_39d
-       redef fun accept_visitor(v)
-       do
-               if v.declaration_type == "variable" then
-                       if v.declaration_element == "type" then
-                               v.variable_type.identifier.add(self.text)
-                       end
-               else if v.declaration_type == "method" then
-                       if v.declaration_element == "return_type" then
-                               v.method_return_type.identifier.add(self.text)
-                       else if v.declaration_element == "parameter_list" then
-                               v.method_params[v.param_index].identifier.add(self.text)
-                       end
-               end
-       end
+       redef fun accept_visitor(v) do v.add_identifier self
 end
 
 redef class N_39dfloat_39d
-       redef fun accept_visitor(v)
-       do
-               if v.declaration_type == "variable" then
-                       if v.declaration_element == "type" then
-                               v.variable_type.identifier.add(self.text)
-                       end
-               else if v.declaration_type == "method" then
-                       if v.declaration_element == "return_type" then
-                               v.method_return_type.identifier.add(self.text)
-                       else if v.declaration_element == "parameter_list" then
-                               v.method_params[v.param_index].identifier.add(self.text)
-                       end
-               end
-       end
+       redef fun accept_visitor(v) do v.add_identifier self
 end
 
 redef class N_39ddouble_39d
-       redef fun accept_visitor(v)
-       do
-               if v.declaration_type == "variable" then
-                       if v.declaration_element == "type" then
-                               v.variable_type.identifier.add(self.text)
-                       end
-               else if v.declaration_type == "method" then
-                       if v.declaration_element == "return_type" then
-                               v.method_return_type.identifier.add(self.text)
-                       else if v.declaration_element == "parameter_list" then
-                               v.method_params[v.param_index].identifier.add(self.text)
-                       end
-               end
-       end
+       redef fun accept_visitor(v) do v.add_identifier self
 end
 
 redef class N_39dbyte_39d
-       redef fun accept_visitor(v)
-       do
-               if v.declaration_type == "variable" then
-                       if v.declaration_element == "type" then
-                               v.variable_type.identifier.add(self.text)
-                       end
-               else if v.declaration_type == "method" then
-                       if v.declaration_element == "return_type" then
-                               v.method_return_type.identifier.add(self.text)
-                       else if v.declaration_element == "parameter_list" then
-                               v.method_params[v.param_index].identifier.add(self.text)
-                       end
-               end
-       end
+       redef fun accept_visitor(v) do v.add_identifier self
 end
 
 redef class N_39dshort_39d
-       redef fun accept_visitor(v)
-       do
-               if v.declaration_type == "variable" then
-                       if v.declaration_element == "type" then
-                               v.variable_type.identifier.add(self.text)
-                       end
-               else if v.declaration_type == "method" then
-                       if v.declaration_element == "return_type" then
-                               v.method_return_type.identifier.add(self.text)
-                       else if v.declaration_element == "parameter_list" then
-                               v.method_params[v.param_index].identifier.add(self.text)
-                       end
-               end
-       end
+       redef fun accept_visitor(v) do v.add_identifier self
 end
 
 redef class N_39dint_39d
-       redef fun accept_visitor(v)
-       do
-               if v.declaration_type == "variable" then
-                       if v.declaration_element == "type" then
-                               v.variable_type.identifier.add(self.text)
-                       end
-               else if v.declaration_type == "method" then
-                       if v.declaration_element == "return_type" then
-                               v.method_return_type.identifier.add(self.text)
-                       else if v.declaration_element == "parameter_list" then
-                               v.method_params[v.param_index].identifier.add(self.text)
-                       end
-               end
-       end
+       redef fun accept_visitor(v) do v.add_identifier self
 end
 
 redef class N_39dlong_39d
-       redef fun accept_visitor(v)
-       do
-               if v.declaration_type == "variable" then
-                       if v.declaration_element == "type" then
-                               v.variable_type.identifier.add(self.text)
-                       end
-               else if v.declaration_type == "method" then
-                       if v.declaration_element == "return_type" then
-                               v.method_return_type.identifier.add(self.text)
-                       else if v.declaration_element == "parameter_list" then
-                               v.method_params[v.param_index].identifier.add(self.text)
-                       end
-               end
-       end
+       redef fun accept_visitor(v) do v.add_identifier self
 end
 
 #                                  #
index b77c734..cb99a23 100644 (file)
@@ -85,8 +85,6 @@ class JavaType
 
        fun is_collection: Bool do return is_primitive_array or collections_list.has(self.id)
 
-       fun is_map: Bool do return maps.has(self.id)
-
        fun is_wrapped: Bool do return find_extern_class != null
 
        fun extern_name: NitType
@@ -249,7 +247,6 @@ class NitType
        var is_complete: Bool = true
 
        fun has_generic_params: Bool do return not generic_params == null
-       fun maps: Array[String] is cached do return ["HashMap", "RBTreeMap"]
 
        fun id: String do return identifier
 
@@ -271,8 +268,6 @@ class NitType
                self.mod = mod
        end
 
-       fun is_map: Bool do return maps.has(self.identifier)
-
        redef fun to_s: String
        do
                var id = self.identifier