contrib/jwrapper: use JavaTypeConverter as a singleton
authorAlexis Laferrière <alexis.laf@xymus.net>
Tue, 21 Jul 2015 17:26:35 +0000 (13:26 -0400)
committerAlexis Laferrière <alexis.laf@xymus.net>
Fri, 24 Jul 2015 13:44:24 +0000 (09:44 -0400)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

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

index 02c8ee1..e94eedb 100644 (file)
@@ -28,8 +28,6 @@ intrude import model
 class JavaVisitor
        super Visitor
 
-       var converter: JavaTypeConverter
-
        # Model of all the analyzed classes
        var model: JavaModel
 
@@ -40,7 +38,7 @@ class JavaVisitor
        var class_type: JavaType is noinit
 
        var variable_id = ""
-       var variable_type = new JavaType(self.converter) is lazy
+       var variable_type = new JavaType is lazy
 
        var is_generic_param = false
        var is_generic_id = false
@@ -53,7 +51,7 @@ class JavaVisitor
        var is_primitive_array = false
 
        var method_id = ""
-       var method_return_type = new JavaType(self.converter) is lazy
+       var method_return_type = new JavaType is lazy
        var method_params = new Array[JavaType]
        var param_index = 0
 
@@ -223,7 +221,7 @@ redef class Nclass_declaration
        do
                v.java_class = new JavaClass
                v.model.classes.add v.java_class
-               v.class_type = new JavaType(v.converter)
+               v.class_type = new JavaType
 
                v.declaration_type = "class_header"
                v.declaration_element = "id"
@@ -277,7 +275,7 @@ redef class Nproperty_declaration_method
 
                v.method_params.clear
                v.method_id = ""
-               v.method_return_type = new JavaType(v.converter)
+               v.method_return_type = new JavaType
        end
 end
 
@@ -302,7 +300,7 @@ redef class Nproperty_declaration_attribute
                v.java_class.attributes[v.variable_id] = v.variable_type
 
                v.variable_id = ""
-               v.variable_type = new JavaType(v.converter)
+               v.variable_type = new JavaType
        end
 end
 
@@ -423,13 +421,13 @@ redef class Nparameter
                if v.declaration_type == "method" then
                        if v.declaration_element == "parameter_list" then
                                if v.is_generic_param then
-                                       v.method_params[v.param_index].generic_params.add(new JavaType(v.converter))
+                                       v.method_params[v.param_index].generic_params.add new JavaType
 
                                        super
 
                                        v.gen_params_index += 1
                                else
-                                       v.method_params.add(new JavaType(v.converter))
+                                       v.method_params.add new JavaType
 
                                        super
 
@@ -437,7 +435,7 @@ redef class Nparameter
                                end
                        else if v.declaration_element == "return_type" and v.is_generic_param then
 
-                               v.method_return_type.generic_params.add(new JavaType(v.converter))
+                               v.method_return_type.generic_params.add new JavaType
 
                                super
 
@@ -449,7 +447,7 @@ redef class Nparameter
                        end
                else if v.declaration_type == "variable" then
                        if v.declaration_element == "type" and v.is_generic_param then
-                               v.variable_type.generic_params.add(new JavaType(v.converter))
+                               v.variable_type.generic_params.add new JavaType
 
                                super
 
index f70d6ed..1ef7d7f 100644 (file)
 # Services to convert java type to nit type and get casts if needed
 module jtype_converter
 
+redef class Sys
+       # Converter between Java and Nit type
+       var converter = new JavaTypeConverter
+end
+
 class JavaTypeConverter
 
        var type_map = new HashMap[String, String]
index 0d09833..aeba9c3 100644 (file)
@@ -172,7 +172,7 @@ sys.perfs["core parser"].add clock.lapse
 # Build model
 if opt_verbose.value > 0 then print "# Building model"
 assert root_node isa NStart
-var visitor = new JavaVisitor(converter, model)
+var visitor = new JavaVisitor(model)
 visitor.enter_visit root_node
 sys.perfs["core model"].add clock.lapse
 
index 0f62c4f..a4903b6 100644 (file)
@@ -23,7 +23,6 @@ import more_collections
 import jtype_converter
 
 class JavaType
-       private var converter: JavaTypeConverter
        var identifier = new Array[String]
        var generic_params: nullable Array[JavaType] = null
        var is_void = false
@@ -40,8 +39,6 @@ class JavaType
        fun full_id: String do return identifier.join(".")
        fun id: String do return identifier.last.replace("$", "")
 
-       init(converter: JavaTypeConverter) do self.converter = converter
-
        fun return_cast: String do return converter.cast_as_return(self.id)
 
        fun param_cast: String
@@ -287,7 +284,7 @@ end
 # Model of a single Java class
 class JavaClass
        # Type of this class
-       var class_type = new JavaType(new JavaTypeConverter)
+       var class_type = new JavaType
 
        # Attributes of this class
        var attributes = new HashMap[String, JavaType]