Line | Branch | Exec | Source |
---|---|---|---|
1 | // Copyright (c) 2021-2025 ChilliBits. All rights reserved. | ||
2 | |||
3 | #include "Lifecycle.h" | ||
4 | |||
5 | namespace spice::compiler { | ||
6 | |||
7 | /** | ||
8 | * Add an event to the lifecycle | ||
9 | * | ||
10 | * @param event New lifecycle event | ||
11 | */ | ||
12 | 80775 | void Lifecycle::addEvent(const LifecycleEvent &event) { events.push_back(event); } | |
13 | |||
14 | /** | ||
15 | * Retrieve the current state of a symbol | ||
16 | * | ||
17 | * @return Current state | ||
18 | */ | ||
19 |
2/2✓ Branch 0 taken 42944 times.
✓ Branch 1 taken 422875 times.
|
465819 | LifecycleState Lifecycle::getCurrentState() const { return events.empty() ? DEAD : events.back().state; } |
20 | |||
21 | /** | ||
22 | * Retrieve the name of the current state of a symbol | ||
23 | * | ||
24 | * @return Current state name | ||
25 | */ | ||
26 | 379450 | const char *Lifecycle::getCurrentStateName() const { | |
27 |
3/4✓ Branch 0 taken 232503 times.
✓ Branch 1 taken 146791 times.
✓ Branch 2 taken 156 times.
✗ Branch 3 not taken.
|
379450 | switch (getCurrentState()) { |
28 | 232503 | case DECLARED: | |
29 | 232503 | return "declared"; | |
30 | 146791 | case INITIALIZED: | |
31 | 146791 | return "initialized"; | |
32 | 156 | case MOVED: | |
33 | 156 | return "moved"; | |
34 | ✗ | default: | |
35 | ✗ | return "dead"; | |
36 | } | ||
37 | } | ||
38 | |||
39 | /** | ||
40 | * Check if the symbol is dead | ||
41 | * | ||
42 | * @return Dead or not | ||
43 | */ | ||
44 | ✗ | bool Lifecycle::isDead() const { return getCurrentState() == DEAD; } | |
45 | |||
46 | /** | ||
47 | * Check if the symbol is declared | ||
48 | * | ||
49 | * @return Declared or not | ||
50 | */ | ||
51 | 29 | bool Lifecycle::isDeclared() const { return getCurrentState() == DECLARED; } | |
52 | |||
53 | /** | ||
54 | * Check if the symbol is initialized | ||
55 | * | ||
56 | * @return Initialized or not | ||
57 | */ | ||
58 | 5565 | bool Lifecycle::isInitialized() const { return getCurrentState() == INITIALIZED; } | |
59 | |||
60 | /** | ||
61 | * Check if the symbol was moved | ||
62 | * | ||
63 | * @return Moved or not | ||
64 | */ | ||
65 | ✗ | bool Lifecycle::wasMoved() const { return getCurrentState() == MOVED; } | |
66 | |||
67 | /** | ||
68 | * Check if the symbol is in an owning state | ||
69 | * | ||
70 | * @return Owning state or not | ||
71 | */ | ||
72 |
3/4✓ Branch 0 taken 29 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✓ Branch 3 taken 26 times.
|
29 | bool Lifecycle::isInOwningState() const { return isDeclared() || isInitialized(); } |
73 | |||
74 | } // namespace spice::compiler | ||
75 |