Capstone C++ Workflows
Command Report
Decode a command code, dispatch it with a switch, and report the chosen workflow size.
decode
A decode helper converts raw input into a named command before the main workflow decides what to do.
report
The selected command produces a small report value that later code can display or store.
Command Report
command_report.cpp
Replay: real traced execution (multi-file project)
#include <iostream>
enum class Command {
Build,
Test,
Package
};
Command decode(int code) {
if (code == 1) {
return Command::Build;
}
if (code == 2) {
return Command::Test;
}
return Command::Package;
}
int main() {
int code = 2;
Command command = decode(code);
int steps = 0;
switch (command) {
case Command::Build:
steps = 4;
break;
case Command::Test:
steps = 6;
break;
case Command::Package:
steps = 3;
break;
}
std::cout << "code=" << code << std::endl;
std::cout << "steps=" << steps << std::endl;
return 0;
}
#include <iostream>
enum class Command {
Build,
Test,
Package
};
Command decode(int code) {
if (code == 1) {
return Command::Build;
}
if (code == 2) {
return Command::Test;
}
return Command::Package;
}
int main() {
int code = 1;
Command command = decode(code);
int steps = 0;
switch (command) {
case Command::Build:
steps = 4;
break;
case Command::Test:
steps = 6;
break;
case Command::Package:
steps = 3;
break;
}
std::cout << "code=" << code << std::endl;
std::cout << "steps=" << steps << std::endl;
return 0;
}
#include <iostream>
enum class Command {
Build,
Test,
Package
};
Command decode(int code) {
if (code == 1) {
return Command::Build;
}
if (code == 2) {
return Command::Test;
}
return Command::Package;
}
int main() {
int code = 3;
Command command = decode(code);
int steps = 0;
switch (command) {
case Command::Build:
steps = 4;
break;
case Command::Test:
steps = 6;
break;
case Command::Package:
steps = 3;
break;
}
std::cout << "code=" << code << std::endl;
std::cout << "steps=" << steps << std::endl;
return 0;
}
code ← 2
19int main() {20 int code→ 2 = 2; //@code=1, 32122 Command command = decode(code2);23 int steps = 0;Command decode(int code)
9Command decode(int code2) {10 if (code == 1) {if (code == 2)
12}13if (code2 == 2) {14 return Command::Test;15}command ← 1, steps ← 0
22Command command→ 1 = decode(code2);23int steps→ 0 = 0;24switch (command) {switch (command)
23int steps = 0;24switch (command1) {25 case Command::Build:steps ← 6
27 break;28case Command::Test:29 steps→ 6 = 6;30 break;steps = 6;
28case Command::Test:29 steps = 6;30 break;31case Command::Package:std::cout << "code=" << code << std::endl;
36 std::cout << "code=" << code2 << std::endl;37 std::cout << "steps=" << steps6 << std::endl;38 return 0;39}outputcode=2 steps=6
code ← 1
19int main() {20 int code→ 1 = 1;2122 Command command = decode(code1);23 int steps = 0;Command decode(int code)
9Command decode(int code1) {10 if (code == 1) {if (code == 1)
9Command decode(int code) {10 if (code1 == 1) {11 return Command::Build;12 }command ← 0, steps ← 0
22Command command→ 0 = decode(code1);23int steps→ 0 = 0;24switch (command) {switch (command)
23int steps = 0;24switch (command0) {25 case Command::Build:steps ← 4
24switch (command) {25 case Command::Build:26 steps→ 4 = 4;27 break;steps = 4;
25case Command::Build:26 steps = 4;27 break;28case Command::Test:std::cout << "code=" << code << std::endl;
36 std::cout << "code=" << code1 << std::endl;37 std::cout << "steps=" << steps4 << std::endl;38 return 0;39}outputcode=1 steps=4
code ← 3
19int main() {20 int code→ 3 = 3;2122 Command command = decode(code3);23 int steps = 0;Command decode(int code)
9Command decode(int code3) {10 if (code == 1) {11 return Command::Build;12 }13 if (code == 2) {14 return Command::Test;15 }16 return Command::Package;17}command ← 2, steps ← 0
22Command command→ 2 = decode(code3);23int steps→ 0 = 0;24switch (command) {switch (command)
23int steps = 0;24switch (command2) {25 case Command::Build:steps ← 3
30 break;31case Command::Package:32 steps→ 3 = 3;33 break;steps = 3;
31 case Command::Package:32 steps = 3;33 break;34}std::cout << "code=" << code << std::endl;
36 std::cout << "code=" << code3 << std::endl;37 std::cout << "steps=" << steps3 << std::endl;38 return 0;39}outputcode=3 steps=3