model: views use filters
[nit.git] / src / model / model_views.nit
index 8b0f122..c0b6024 100644 (file)
@@ -25,9 +25,14 @@ import model_visitor
 class ModelView
        super ModelVisitor
 
+       autoinit(model, mainmodule, filter)
+
        # The model to view through `self`.
        var model: Model
 
+       # MModule used to flatten mclass hierarchy
+       var mainmodule: MModule
+
        # MPackages visible through `self`.
        var mpackages: Set[MPackage] is lazy do
                var mpackages = new HashSet[MPackage]
@@ -117,14 +122,6 @@ class ModelView
                return res
        end
 
-       private fun init_visitor(v: ModelVisitor) do
-               v.min_visibility = self.min_visibility
-               v.include_fictive = self.include_fictive
-               v.include_empty_doc = self.include_empty_doc
-               v.include_attribute = self.include_attribute
-               v.include_test = self.include_test
-       end
-
        # Searches the MEntity that matches `full_name`.
        fun mentity_by_full_name(full_name: String): nullable MEntity do
                for mentity in mentities do
@@ -136,7 +133,7 @@ class ModelView
        # Build an concerns tree with from `self`
        fun to_tree: MEntityTree do
                var v = new ModelTreeVisitor
-               init_visitor(v)
+               v.filter = self.filter
                for mpackage in mpackages do
                        v.enter_visit(mpackage)
                end
@@ -175,28 +172,6 @@ class ModelTreeVisitor
 end
 
 redef class MEntity
-
-       # Get a public view of the model
-       fun public_view: ModelView do
-               var view = new ModelView(self.model)
-               view.min_visibility = public_visibility
-               return view
-       end
-
-       # Get a public view of the model
-       fun protected_view: ModelView do
-               var view = new ModelView(self.model)
-               view.min_visibility = protected_visibility
-               return view
-       end
-
-       # Get a public view of the model
-       fun private_view: ModelView do
-               var view = new ModelView(self.model)
-               view.min_visibility = private_visibility
-               return view
-       end
-
        private fun accept_namespace_visitor(v: LookupNamespaceVisitor) do
                if v.parts.is_empty then return
                if name != v.parts.first then return