GCC Code Coverage Report


Directory: ../
File: src/util/DeferredLogic.h
Date: 2025-03-05 01:50:32
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 public:
12 // Constructors
13 16176 explicit DeferredLogic(std::function<void()> deferredFunc, bool triggerOnDestruct = true)
14 16176 : deferredFunc(std::move(deferredFunc)), triggerOnDestruct(triggerOnDestruct) {}
15
16 // Destructor
17 16331 ~DeferredLogic() {
18
4/4
✓ Branch 0 (2→3) taken 15883 times.
✓ Branch 1 (2→5) taken 448 times.
✓ Branch 2 (3→4) taken 8273 times.
✓ Branch 3 (3→5) taken 7610 times.
16331 if (triggerOnDestruct && !alreadyExecuted)
19 8273 deferredFunc();
20 16331 }
21
22 // Public methods
23 7903 void execute() {
24 7903 deferredFunc();
25 7903 alreadyExecuted = true;
26 7903 }
27
28 private:
29 // Private members
30 std::function<void()> deferredFunc;
31 bool triggerOnDestruct;
32 bool alreadyExecuted = false;
33 };
34
35 } // namespace spice::compiler
36