GCC Code Coverage Report


Directory: ../
File: src/util/DeferredLogic.h
Date: 2025-11-14 16:08:18
Coverage Exec Excl Total
Lines: 100.0% 10 0 10
Functions: 100.0% 3 0 3
Branches: 100.0% 4 0 4

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 18258 explicit DeferredLogic(std::function<void()> deferredFunc, bool triggerOnDestruct = true)
13 18258 : deferredFunc(std::move(deferredFunc)), triggerOnDestruct(triggerOnDestruct) {}
14
15 // Destructor
16 18473 ~DeferredLogic() {
17
4/4
✓ Branch 2 → 3 taken 17875 times.
✓ Branch 2 → 5 taken 598 times.
✓ Branch 3 → 4 taken 9147 times.
✓ Branch 3 → 5 taken 8728 times.
18473 if (triggerOnDestruct && !alreadyExecuted)
18 9147 deferredFunc();
19 18473 }
20
21 // Public methods
22 9111 void execute() {
23 9111 deferredFunc();
24 9111 alreadyExecuted = true;
25 9111 }
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