GCC Code Coverage Report


Directory: ../
File: src/util/DeferredLogic.h
Date: 2025-10-27 22:48:14
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 17366 explicit DeferredLogic(std::function<void()> deferredFunc, bool triggerOnDestruct = true)
13 17366 : deferredFunc(std::move(deferredFunc)), triggerOnDestruct(triggerOnDestruct) {}
14
15 // Destructor
16 17577 ~DeferredLogic() {
17
4/4
✓ Branch 2 → 3 taken 17003 times.
✓ Branch 2 → 5 taken 574 times.
✓ Branch 3 → 4 taken 8683 times.
✓ Branch 3 → 5 taken 8320 times.
17577 if (triggerOnDestruct && !alreadyExecuted)
18 8683 deferredFunc();
19 17577 }
20
21 // Public methods
22 8683 void execute() {
23 8683 deferredFunc();
24 8683 alreadyExecuted = true;
25 8683 }
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