From 28fdaec383125f20d6b6581076dd721a85d664fc Mon Sep 17 00:00:00 2001 From: Alexandre Terrasa Date: Thu, 5 Jun 2014 16:58:11 -0400 Subject: [PATCH] model_utils: extract classes in mmodule nesting Signed-off-by: Alexandre Terrasa --- src/model_utils.nit | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/model_utils.nit b/src/model_utils.nit index a8be901..84d5d1d 100644 --- a/src/model_utils.nit +++ b/src/model_utils.nit @@ -63,6 +63,44 @@ redef class MModule end return mclasses end + + fun in_nesting_intro_mclasses(min_visibility: MVisibility): Set[MClass] do + var res = new HashSet[MClass] + for mmodule in in_nesting.greaters do + for mclass in mmodule.intro_mclasses do + if mclass.visibility < min_visibility then continue + res.add mclass + end + end + return res + end + + fun in_nesting_redef_mclasses(min_visibility: MVisibility): Set[MClass] do + var res = new HashSet[MClass] + for mmodule in self.in_nesting.greaters do + for mclass in mmodule.redef_mclasses do + if mclass.visibility < min_visibility then continue + res.add mclass + end + end + return res + end + + fun in_nesting_intro_mclassdefs(min_visibility: MVisibility): Set[MClassDef] do + var res = new HashSet[MClassDef] + for mmodule in in_nesting.greaters do + res.add_all mmodule.intro_mclassdefs(min_visibility) + end + return res + end + + fun in_nesting_redef_mclassdefs(min_visibility: MVisibility): Set[MClassDef] do + var res = new HashSet[MClassDef] + for mmodule in self.in_nesting.greaters do + res.add_all mmodule.redef_mclassdefs(min_visibility) + end + return res + end end redef class MClass -- 1.7.9.5