From 8f38e66f9fbbf9168ec31add697691584730f4ca Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alexis=20Laferri=C3=A8re?= Date: Wed, 26 Aug 2015 15:02:09 -0400 Subject: [PATCH] contrib/objcwrapper: add type knowledge checks to ObjcModel MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Alexis Laferrière --- contrib/objcwrapper/src/objc_generator.nit | 5 +++++ contrib/objcwrapper/src/objc_model.nit | 27 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/contrib/objcwrapper/src/objc_generator.nit b/contrib/objcwrapper/src/objc_generator.nit index fb9e4ab..9dd29f0 100644 --- a/contrib/objcwrapper/src/objc_generator.nit +++ b/contrib/objcwrapper/src/objc_generator.nit @@ -67,6 +67,11 @@ redef class Sys end end +redef class ObjcModel + redef fun knows_type(objc_type) do return super or + nit_to_java_types.keys.has(objc_type) +end + # Wrapper generator class CodeGenerator diff --git a/contrib/objcwrapper/src/objc_model.nit b/contrib/objcwrapper/src/objc_model.nit index 46589c9..a082d22 100644 --- a/contrib/objcwrapper/src/objc_model.nit +++ b/contrib/objcwrapper/src/objc_model.nit @@ -19,6 +19,33 @@ module objc_model class ObjcModel # All analyzed classes var classes = new Array[ObjcClass] + + # Is `objc_type` known by this model? + fun knows_type(objc_type: Text): Bool + do + for c in classes do + if c.name == objc_type then return true + end + + return imported_types.has(objc_type) + end + + # Are all types in the signature or `method` known by this model? + fun knows_all_types(method: ObjcMethod): Bool + do + for param in method.params do + if param.is_single then break + if not knows_type(param.return_type) then return false + end + + var r = method.return_type + return r == "void" or r == "id" or knows_type(r) + end + + # Objective-C types available in imported modules + # + # TODO seach in existing wrappers + private var imported_types: Array[String] = ["NSObject", "NSString"] end # Objective-C class -- 1.7.9.5