Signed-off-by: Jean Privat <jean@pryen.org>
# If `e` is null, nothing is done.
fun enter_visit(e: nullable MEntity) do
if e == null then return
+ if e.is_fictive and not include_fictive then return
var old_entity = current_entity
current_entity = e
visit(e)
var min = min_visibility
return min == null or min <= visibility
end
+
+ # Include fictive entities?
+ #
+ # By default, fictive entities (see `MEntity::is_fictive`) are not visited.
+ var include_fictive = false is writable
end
redef class MEntity
do
var model = modelbuilder.model
- print "All entities:"
+ print "All entities, including fictive ones:"
var v = new TestModelVisitor
+ v.include_fictive = true
+ v.enter_visit(model)
+ v.cpt.print_elements(10)
+
+ print "All entities:"
+ v = new TestModelVisitor
v.enter_visit(model)
v.cpt.print_elements(10)
+All entities, including fictive ones:
+ list:
+ MMethodDef: 17 (30.35%)
+ MMethod: 15 (26.78%)
+ MClassDef: 7 (12.50%)
+ MClass: 7 (12.50%)
+ MAttributeDef: 3 (5.35%)
+ MAttribute: 3 (5.35%)
+ Model: 1 (1.78%)
+ MGroup: 1 (1.78%)
+ MPackage: 1 (1.78%)
+ MModule: 1 (1.78%)
All entities:
list:
MMethodDef: 17 (30.35%)