Feature plugin manager.
Provides storage and fan-out calls to a set of enabled feature plugins.
The manager owns a growable array of feature objects. Calls are forwarded to each feature in insertion order.
Container for multiple feature instances and their callback fan-out.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(feature_box_t), | public, | allocatable | :: | feat(:) |
| procedure, public :: add => fm_add | |
| procedure, public :: init_all | |
| procedure, public :: on_after_run_all | |
| procedure, public :: on_before_run_all | |
| procedure, public :: on_change_detected_all | |
| procedure, public :: on_manifest_changed_all | |
| procedure, public :: on_start_all | |
| procedure, public :: on_watch_list_built_all |
A thin wrapper to store an allocatable polymorphic feature instance.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| class(watch_feature_t), | public, | allocatable | :: | p |
Add a feature instance to the manager, transferring ownership.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(feature_manager_t), | intent(inout) | :: | self | |||
| class(watch_feature_t), | intent(inout), | allocatable | :: | f |
Call init(cfg) on all registered features.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(feature_manager_t), | intent(inout) | :: | self | |||
| type(watch_config_t), | intent(in) | :: | cfg |
Call on_after_run(exitstat, seconds) on all registered features.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(feature_manager_t), | intent(inout) | :: | self | |||
| integer, | intent(in) | :: | exitstat | |||
| real, | intent(in) | :: | seconds |
Call on_before_run(cmd) on all registered features.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(feature_manager_t), | intent(inout) | :: | self | |||
| character(len=:), | intent(inout), | allocatable | :: | cmd |
Call on_change_detected(changed) on all registered features.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(feature_manager_t), | intent(inout) | :: | self | |||
| type(string_t), | intent(in), | allocatable | :: | changed(:) |
Call on_manifest_changed(old_key, new_key) on all registered features.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(feature_manager_t), | intent(inout) | :: | self | |||
| integer(kind=int64), | intent(in) | :: | old_key | |||
| integer(kind=int64), | intent(in) | :: | new_key |
Call on_start() on all registered features.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(feature_manager_t), | intent(inout) | :: | self |
Call on_watch_list_built(files, roots) on all registered features.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(feature_manager_t), | intent(inout) | :: | self | |||
| type(string_t), | intent(inout), | allocatable | :: | files(:) | ||
| type(root_info_t), | intent(inout), | allocatable | :: | roots(:) |