contrib/benitlux: intro the admin server interface with daily notification
[nit.git] / src / model / model_collect.nit
index c8d3766..65c1c62 100644 (file)
@@ -268,6 +268,15 @@ redef class MClass
                return set
        end
 
+       # Collect mmethods inherited by 'self' if accepted by `view`.
+       fun collect_inherited_mmethods(view: ModelView): Set[MMethod] do
+               var res = new HashSet[MMethod]
+               for mproperty in collect_inherited_mproperties(view) do
+                       if mproperty isa MMethod then res.add(mproperty)
+               end
+               return res
+       end
+
        # Collect mattributes introduced in 'self' with `visibility >= min_visibility`.
        fun collect_intro_mattributes(view: ModelView): Set[MAttribute] do
                var res = new HashSet[MAttribute]
@@ -313,6 +322,52 @@ redef class MClass
                set.add_all(collect_inherited_mattributes(view))
                return set
        end
+
+       # Collect init mmethods introduced in 'self' if accepted by `view`.
+       fun collect_intro_inits(view: ModelView): Set[MMethod] do
+               var res = new HashSet[MMethod]
+               for mproperty in collect_intro_mmethods(view) do
+                       if mproperty.is_init then res.add(mproperty)
+               end
+               return res
+       end
+
+       # Collect init mmethods redefined in 'self' if accepted by `view`.
+       fun collect_redef_inits(view: ModelView): Set[MMethod] do
+               var res = new HashSet[MMethod]
+               for mproperty in collect_redef_mmethods(view) do
+                       if mproperty.is_init then res.add(mproperty)
+               end
+               return res
+       end
+
+       # Collect init mmethods introduced and redefined in 'self' if accepted by `view`.
+       fun collect_local_inits(view: ModelView): Set[MMethod] do
+               var set = new HashSet[MMethod]
+               set.add_all collect_intro_inits(view)
+               set.add_all collect_redef_inits(view)
+               return set
+       end
+
+       # Collect init mmethods inherited by 'self'  if accepted by `view`.
+       fun collect_inherited_inits(view: ModelView): Set[MMethod] do
+               var res = new HashSet[MMethod]
+               for mproperty in collect_inherited_mmethods(view) do
+                       if mproperty.is_init then res.add(mproperty)
+               end
+               return res
+       end
+
+       # Collect all init mmethods accessible by 'self'  if accepted by `view`.
+       #
+       # This include introduced, redefined, inherited inits.
+       fun collect_accessible_inits(view: ModelView): Set[MMethod] do
+               var set = new HashSet[MMethod]
+               set.add_all(collect_intro_inits(view))
+               set.add_all(collect_redef_inits(view))
+               set.add_all(collect_inherited_inits(view))
+               return set
+       end
 end
 
 redef class MClassDef