From: Alexandre Terrasa Date: Wed, 25 Jun 2014 15:24:07 +0000 (-0400) Subject: model_utils: extract mclasses and mclassdefs from MProject and Mgroup X-Git-Tag: v0.6.6~16^2~2 X-Git-Url: http://nitlanguage.org model_utils: extract mclasses and mclassdefs from MProject and Mgroup Signed-off-by: Alexandre Terrasa --- 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.