model_utils: add direct access to intro and refined in mmodule
authorAlexandre Terrasa <alexandre@moz-code.org>
Sat, 3 May 2014 03:32:37 +0000 (23:32 -0400)
committerAlexandre Terrasa <alexandre@moz-code.org>
Wed, 7 May 2014 06:02:41 +0000 (02:02 -0400)
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

src/model_utils.nit

index 12b8907..1c375ba 100644 (file)
@@ -20,6 +20,31 @@ module model_utils
 import modelbuilder
 
 redef class MModule
+
+       # The list of intro mclassdef in the module.
+       # with visibility >= to min_visibility
+       fun intro_mclassdefs(min_visibility: MVisibility): Set[MClassDef] do
+               var res = new HashSet[MClassDef]
+               for mclassdef in mclassdefs do
+                       if not mclassdef.is_intro then continue
+                       if mclassdef.mclass.visibility < min_visibility then continue
+                       res.add mclassdef
+               end
+               return res
+       end
+
+       # The list of redef mclassdef in the module.
+       # with visibility >= to min_visibility
+       fun redef_mclassdefs(min_visibility: MVisibility): Set[MClassDef] do
+               var res = new HashSet[MClassDef]
+               for mclassdef in mclassdefs do
+                       if mclassdef.is_intro then continue
+                       if mclassdef.mclass.visibility < min_visibility then continue
+                       res.add mclassdef
+               end
+               return res
+       end
+
        # Get the list of mclasses refined in 'self'.
        fun redef_mclasses: Set[MClass] do
                var mclasses = new HashSet[MClass]