Line | Branch | Exec | Source |
---|---|---|---|
1 | // Copyright (c) 2021-2025 ChilliBits. All rights reserved. | ||
2 | |||
3 | #pragma once | ||
4 | |||
5 | #include <functional> | ||
6 | #include <utility> | ||
7 | |||
8 | namespace spice::compiler { | ||
9 | |||
10 | struct DeferredLogic { | ||
11 | // Constructors | ||
12 | 16388 | explicit DeferredLogic(std::function<void()> deferredFunc, bool triggerOnDestruct = true) | |
13 | 16388 | : deferredFunc(std::move(deferredFunc)), triggerOnDestruct(triggerOnDestruct) {} | |
14 | |||
15 | // Destructor | ||
16 | 16543 | ~DeferredLogic() { | |
17 |
4/4✓ Branch 0 (2→3) taken 16095 times.
✓ Branch 1 (2→5) taken 448 times.
✓ Branch 2 (3→4) taken 8377 times.
✓ Branch 3 (3→5) taken 7718 times.
|
16543 | if (triggerOnDestruct && !alreadyExecuted) |
18 | 8377 | deferredFunc(); | |
19 | 16543 | } | |
20 | |||
21 | // Public methods | ||
22 | 8011 | void execute() { | |
23 | 8011 | deferredFunc(); | |
24 | 8011 | alreadyExecuted = true; | |
25 | 8011 | } | |
26 | |||
27 | private: | ||
28 | // Private members | ||
29 | std::function<void()> deferredFunc; | ||
30 | bool triggerOnDestruct; | ||
31 | bool alreadyExecuted = false; | ||
32 | }; | ||
33 | |||
34 | } // namespace spice::compiler | ||
35 |