`given_modules` is the list of explicitely requested modules.
From the command-line for instance.
Thus, global phases can chose to work with the bottom main module or
with each specific given modules.
Signed-off-by: Jean Privat <jean@pryen.org>
var node_counter = new Counter[String]
var id_counter = new Counter[String]
- redef fun process_mainmodule(mainmodule)
+ redef fun process_mainmodule(mainmodule, given_mmodules)
do
if not toolcontext.opt_ast.value and not toolcontext.opt_all.value then return
print "--- AST Metrics ---"
private class GenerateHierarchyPhase
super Phase
- redef fun process_mainmodule(mainmodule)
+ redef fun process_mainmodule(mainmodule, given_mmodules)
do
if not toolcontext.opt_generate_hyperdoc.value and not toolcontext.opt_all.value then return
var model = toolcontext.modelbuilder.model
# Extract metrics about inheritance from model.
private class InheritanceMetricsPhase
super Phase
- redef fun process_mainmodule(mainmodule)
+ redef fun process_mainmodule(mainmodule, given_mmodules)
do
if not toolcontext.opt_inheritance.value and not toolcontext.opt_all.value then return
var csv = toolcontext.opt_csv.value
# Extract metrics about mclasses from model.
private class MClassesMetricsPhase
super Phase
- redef fun process_mainmodule(mainmodule)
+ redef fun process_mainmodule(mainmodule, given_mmodules)
do
if not toolcontext.opt_mclasses.value and not toolcontext.opt_all.value then return
var csv = toolcontext.opt_csv.value
private class MendelMetricsPhase
super Phase
- redef fun process_mainmodule(mainmodule)
+ redef fun process_mainmodule(mainmodule, given_mmodules)
do
if not toolcontext.opt_mendel.value and not toolcontext.opt_all.value then return
var csv = toolcontext.opt_csv.value
# Extract metrics about modules from the model.
private class MModulesMetricsPhase
super Phase
- redef fun process_mainmodule(mainmodule)
+ redef fun process_mainmodule(mainmodule, given_mmodules)
do
if not toolcontext.opt_mmodules.value and not toolcontext.opt_all.value then return
var csv = toolcontext.opt_csv.value
private class ModelHyperdocPhase
super Phase
- redef fun process_mainmodule(mainmodule)
+ redef fun process_mainmodule(mainmodule, given_mmodules)
do
if not toolcontext.opt_generate_hyperdoc.value and not toolcontext.opt_all.value then return
generate_model_hyperdoc(toolcontext, toolcontext.modelbuilder.model)
private class NullablesMetricsPhase
super Phase
- redef fun process_mainmodule(mainmodule)
+ redef fun process_mainmodule(mainmodule, given_mmodules)
do
if not toolcontext.opt_nullables.value and not toolcontext.opt_all.value then return
compute_nullables_metrics(toolcontext.modelbuilder)
private class PosetMetricsPhase
super Phase
- redef fun process_mainmodule(mainmodule)
+ redef fun process_mainmodule(mainmodule, given_mmodules)
do
if not toolcontext.opt_poset.value and not toolcontext.opt_all.value then return
private class RefinementMetricsPhase
super Phase
- redef fun process_mainmodule(mainmodule)
+ redef fun process_mainmodule(mainmodule, given_mmodules)
do
if not toolcontext.opt_refinement.value and not toolcontext.opt_all.value then return
compute_refinement_metrics(toolcontext.modelbuilder.model)
private class RTAMetricsPhase
super Phase
- redef fun process_mainmodule(mainmodule)
+ redef fun process_mainmodule(mainmodule, given_mmodules)
do
if not toolcontext.opt_rta.value and not toolcontext.opt_all.value then return
var csv = toolcontext.opt_csv.value
private class SelfMetricsPhase
super Phase
- redef fun process_mainmodule(mainmodule)
+ redef fun process_mainmodule(mainmodule, given_mmodules)
do
if not toolcontext.opt_self.value and not toolcontext.opt_all.value then return
compute_self_metrics(toolcontext.modelbuilder)
private class StaticTypesMetricsPhase
super Phase
- redef fun process_mainmodule(mainmodule)
+ redef fun process_mainmodule(mainmodule, given_mmodules)
do
if not toolcontext.opt_static_types.value and not toolcontext.opt_all.value then return
compute_static_types_metrics(toolcontext.modelbuilder)
private class TablesMetricsPhase
super Phase
- redef fun process_mainmodule(mainmodule)
+ redef fun process_mainmodule(mainmodule, given_mmodules)
do
if not toolcontext.opt_tables.value and not toolcontext.opt_all.value then return
compute_tables_metrics(mainmodule)
mainmodule.set_imported_mmodules(mmodules)
end
for phase in phases_list do
- phase.process_mainmodule(mainmodule)
+ phase.process_mainmodule(mainmodule, mmodules)
end
end
end
redef class Phase
- # Specific action to execute on the whole program
- # Called by the `ToolContext::run_global_phases`
+ # Specific action to execute on the whole program.
+ # Called by the `ToolContext::run_global_phases`.
+ #
+ # `mainmodule` is the main module of the program.
+ # It could be an implicit module (called "<main>").
+ #
+ # `given_modules` is the list of explicitely requested modules.
+ # from the command-line for instance.
+ #
+ # REQUIRE: `not given_modules.is_empty`
+ # REQUIRE: `(given_modules.length == 1) == (mainmodule == given_modules.first)`
+ #
# @toimplement
- fun process_mainmodule(mainmodule: MModule) do end
+ fun process_mainmodule(mainmodule: MModule, given_mmodules: SequenceRead[MModule]) do end
end