From: Alexandre Terrasa Date: Thu, 5 Jun 2014 20:58:11 +0000 (-0400) Subject: model_utils: extract classes in mmodule nesting X-Git-Tag: v0.6.6~45^2~9 X-Git-Url: http://nitlanguage.org model_utils: extract classes in mmodule nesting Signed-off-by: Alexandre Terrasa --- 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