Capstone C++ Workflows
Checklist Status
A final checklist rolls several workflow booleans into a release-ready status.
checklist
Named booleans make a release gate easier to inspect than unrelated loose variables.
status
Counting completed items creates an intermediate value that explains the final ready flag.
Checklist Status
checklist_status.cpp
Replay: real traced execution (multi-file project)
#include <iostream>
struct Checklist {
bool built;
bool tested;
bool packaged;
};
int completedCount(const Checklist& checklist) {
int count = 0;
if (checklist.built) {
count += 1;
}
if (checklist.tested) {
count += 1;
}
if (checklist.packaged) {
count += 1;
}
return count;
}
int main() {
bool packaged = false;
Checklist checklist{true, true, packaged};
int complete = completedCount(checklist);
bool ready = complete == 3;
std::cout << "packaged=" << packaged << std::endl;
std::cout << "complete=" << complete << std::endl;
std::cout << "ready=" << ready << std::endl;
return 0;
}
#include <iostream>
struct Checklist {
bool built;
bool tested;
bool packaged;
};
int completedCount(const Checklist& checklist) {
int count = 0;
if (checklist.built) {
count += 1;
}
if (checklist.tested) {
count += 1;
}
if (checklist.packaged) {
count += 1;
}
return count;
}
int main() {
bool packaged = true;
Checklist checklist{true, true, packaged};
int complete = completedCount(checklist);
bool ready = complete == 3;
std::cout << "packaged=" << packaged << std::endl;
std::cout << "complete=" << complete << std::endl;
std::cout << "ready=" << ready << std::endl;
return 0;
}
packaged ← 0, checklist ← (empty)
23int main() {24 bool packaged→ 0 = false; //@packaged=true2526 Checklist checklist→ (empty){true, true, packaged0};27 int complete = completedCount(checklist(empty));28 bool ready = complete == 3;count ← 0
9int completedCount(const Checklist& checklist(empty)) {10 int count→ 0 = 0;11 if (checklist.built) {count ← 1
10int count = 0;11if (checklist.built1) {12 count→ 1 += 1;13}count ← 2
13}14if (checklist.tested1) {15 count→ 2 += 1;16}return count;
19 }20 return count2;21}complete ← 2, ready ← 0
26 Checklist checklist{true, true, packaged};27 int complete→ 2 = completedCount(checklist(empty));28 bool ready→ 0 = complete2 == 3;2930 std::cout << "packaged=" << packaged0 << std::endl;31 std::cout << "complete=" << complete2 << std::endl;32 std::cout << "ready=" << ready0 << std::endl;33 return 0;34}outputpackaged=0 complete=2 ready=0
packaged ← 1, checklist ← (empty)
23int main() {24 bool packaged→ 1 = true;2526 Checklist checklist→ (empty){true, true, packaged1};27 int complete = completedCount(checklist(empty));28 bool ready = complete == 3;count ← 0
9int completedCount(const Checklist& checklist(empty)) {10 int count→ 0 = 0;11 if (checklist.built) {count ← 1
10int count = 0;11if (checklist.built1) {12 count→ 1 += 1;13}count ← 2
13}14if (checklist.tested1) {15 count→ 2 += 1;16}count ← 3
16}17if (checklist.packaged1) {18 count→ 3 += 1;19}return count;
19 }20 return count3;21}complete ← 3, ready ← 1
26 Checklist checklist{true, true, packaged};27 int complete→ 3 = completedCount(checklist(empty));28 bool ready→ 1 = complete3 == 3;2930 std::cout << "packaged=" << packaged1 << std::endl;31 std::cout << "complete=" << complete3 << std::endl;32 std::cout << "ready=" << ready1 << std::endl;33 return 0;34}outputpackaged=1 complete=3 ready=1