From: Alexis Laferrière Date: Tue, 21 Jul 2015 17:26:35 +0000 (-0400) Subject: contrib/jwrapper: use JavaTypeConverter as a singleton X-Git-Tag: v0.7.7~8^2~31 X-Git-Url: http://nitlanguage.org contrib/jwrapper: use JavaTypeConverter as a singleton Signed-off-by: Alexis Laferrière --- diff --git a/contrib/jwrapper/src/javap_visitor.nit b/contrib/jwrapper/src/javap_visitor.nit index 02c8ee1..e94eedb 100644 --- a/contrib/jwrapper/src/javap_visitor.nit +++ b/contrib/jwrapper/src/javap_visitor.nit @@ -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 diff --git a/contrib/jwrapper/src/jtype_converter.nit b/contrib/jwrapper/src/jtype_converter.nit index f70d6ed..1ef7d7f 100644 --- a/contrib/jwrapper/src/jtype_converter.nit +++ b/contrib/jwrapper/src/jtype_converter.nit @@ -17,6 +17,11 @@ # 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] diff --git a/contrib/jwrapper/src/jwrapper.nit b/contrib/jwrapper/src/jwrapper.nit index 0d09833..aeba9c3 100644 --- a/contrib/jwrapper/src/jwrapper.nit +++ b/contrib/jwrapper/src/jwrapper.nit @@ -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 diff --git a/contrib/jwrapper/src/model.nit b/contrib/jwrapper/src/model.nit index 0f62c4f..a4903b6 100644 --- a/contrib/jwrapper/src/model.nit +++ b/contrib/jwrapper/src/model.nit @@ -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]