GCC Code Coverage Report


Directory: ../
File: src/util/DeferredLogic.h
Date: 2025-09-17 23:16:16
Exec Total Coverage
Lines: 10 10 100.0%
Functions: 3 3 100.0%
Branches: 4 4 100.0%

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 17266 explicit DeferredLogic(std::function<void()> deferredFunc, bool triggerOnDestruct = true)
13 17266 : deferredFunc(std::move(deferredFunc)), triggerOnDestruct(triggerOnDestruct) {}
14
15 // Destructor
16 17461 ~DeferredLogic() {
17
4/4
✓ Branch 0 (2→3) taken 16911 times.
✓ Branch 1 (2→5) taken 550 times.
✓ Branch 2 (3→4) taken 8649 times.
✓ Branch 3 (3→5) taken 8262 times.
17461 if (triggerOnDestruct && !alreadyExecuted)
18 8649 deferredFunc();
19 17461 }
20
21 // Public methods
22 8617 void execute() {
23 8617 deferredFunc();
24 8617 alreadyExecuted = true;
25 8617 }
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