Details
-
Sub-task
-
Status: Closed (View Workflow)
-
Blocker
-
Resolution: Completed
-
master
-
None
-
None
-
None
Description
TDF's Report method is a bit weird:
- it’s not lazy nor “instant”: it triggers the event-loop instantly, but only if it needs to
- it looks like an action, but it does not return a TResultProxy
The proposed solution is to change its behavior to something like this
auto report = tdf.Filter(“x > 0”, “x_cut”).Filter(“y > 10”, “y_cut”).Report();
|
report->Print(); // event loop triggered here, lazily |
where Report returns a TResultProxy<TCutFlowReport>.
If we wish so, we can avoid breaking backwards compatibility by having TCutFlowReport trigger the event loop and print if it is destructed before any of its methods are called – this way a call such as tdf.Filter("x > 0", "xcut").Report() will behave exactly as before.