From edb1c8c3f8d5ff658e5b91d4c61948355184bf47 Mon Sep 17 00:00:00 2001 From: Alexandre Terrasa Date: Wed, 25 Jun 2014 11:24:07 -0400 Subject: [PATCH] model_utils: extract mclasses and mclassdefs from MProject and Mgroup Signed-off-by: Alexandre Terrasa --- src/model_utils.nit | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/model_utils.nit b/src/model_utils.nit index b2c741b..f73ed8b 100644 --- a/src/model_utils.nit +++ b/src/model_utils.nit @@ -19,6 +19,40 @@ module model_utils import modelbuilder +redef class MGroup + fun in_nesting_intro_mclasses(min_visibility: MVisibility): Set[MClass] do + var res = new HashSet[MClass] + var lst = in_nesting.direct_smallers + for mmodule in mmodules do res.add_all mmodule.intro_mclasses + for mgrp in lst do res.add_all mgrp.in_nesting_intro_mclasses(min_visibility) + return res + end + + fun in_nesting_redef_mclasses(min_visibility: MVisibility): Set[MClass] do + var res = new HashSet[MClass] + var lst = in_nesting.direct_smallers + for mmodule in mmodules do res.add_all mmodule.redef_mclasses + for mgrp in lst do res.add_all mgrp.in_nesting_redef_mclasses(min_visibility) + return res + end + + fun in_nesting_intro_mclassdefs(min_visibility: MVisibility): Set[MClassDef] do + var res = new HashSet[MClassDef] + var lst = in_nesting.direct_smallers + for mmodule in mmodules do res.add_all mmodule.intro_mclassdefs(min_visibility) + for mgrp in lst do res.add_all mgrp.in_nesting_intro_mclassdefs(min_visibility) + return res + end + + fun in_nesting_redef_mclassdefs(min_visibility: MVisibility): Set[MClassDef] do + var res = new HashSet[MClassDef] + var lst = in_nesting.direct_smallers + for mmodule in mmodules do res.add_all mmodule.redef_mclassdefs(min_visibility) + for mgrp in lst do res.add_all mgrp.in_nesting_redef_mclassdefs(min_visibility) + return res + end +end + redef class MModule # The list of intro mclassdef in the module. -- 1.7.9.5