Workflow and Source Panels
Dispatcher Branch Panel
Use a C switch to route one command into a scalar result.
Dispatcher Branch Panel
dispatcher_branch_panel.c
Replay: real traced execution (multi-file project)
#include <stdio.h>
int main(void) {
int mode = 1;
const char *message = "unknown";
int status = 0;
switch (mode) {
case 0:
message = "handled:refresh";
status = 1;
break;
case 1:
message = "handled:status";
status = 0;
break;
case 2:
message = "handled:delete";
status = 2;
break;
default:
status = -1;
break;
}
printf("mode=%d\n", mode);
printf("status=%d\n", status);
printf("%s\n", message);
return 0;
}
#include <stdio.h>
int main(void) {
int mode = 0;
const char *message = "unknown";
int status = 0;
switch (mode) {
case 0:
message = "handled:refresh";
status = 1;
break;
case 1:
message = "handled:status";
status = 0;
break;
case 2:
message = "handled:delete";
status = 2;
break;
default:
status = -1;
break;
}
printf("mode=%d\n", mode);
printf("status=%d\n", status);
printf("%s\n", message);
return 0;
}
#include <stdio.h>
int main(void) {
int mode = 2;
const char *message = "unknown";
int status = 0;
switch (mode) {
case 0:
message = "handled:refresh";
status = 1;
break;
case 1:
message = "handled:status";
status = 0;
break;
case 2:
message = "handled:delete";
status = 2;
break;
default:
status = -1;
break;
}
printf("mode=%d\n", mode);
printf("status=%d\n", status);
printf("%s\n", message);
return 0;
}
mode ← 1, message ← unknown, status ← 0
3int main(void) {4 int mode→ 1 = 1; //@mode=0, 25 const char *message→ unknown = "unknown";6 int status→ 0 = 0;switch (mode)
8switch (mode1) {9case 0:message ← handled:status
12 break;13case 1:14 message→ handled:status = "handled:status";15 status = 0;status = 0;
13case 1:14 message = "handled:status";15 status0 = 0;16 break;17case 2:printf("mode=%d ", mode);
26 printf("mode=%d\n", mode1);27 printf("status=%d\n", status0);28 printf("%s\n", messagehandled:status);29 return 0;30}outputmode=1 status=0 handled:status
mode ← 0, message ← unknown, status ← 0
3int main(void) {4 int mode→ 0 = 0;5 const char *message→ unknown = "unknown";6 int status→ 0 = 0;switch (mode)
8switch (mode0) {9case 0:message ← handled:refresh
8switch (mode) {9case 0:10 message→ handled:refresh = "handled:refresh";11 status = 1;status ← 1
9case 0:10 message = "handled:refresh";11 status→ 1 = 1;12 break;13case 1:printf("mode=%d ", mode);
26 printf("mode=%d\n", mode0);27 printf("status=%d\n", status1);28 printf("%s\n", messagehandled:refresh);29 return 0;30}outputmode=0 status=1 handled:refresh
mode ← 2, message ← unknown, status ← 0
3int main(void) {4 int mode→ 2 = 2;5 const char *message→ unknown = "unknown";6 int status→ 0 = 0;switch (mode)
8switch (mode2) {9case 0:message ← handled:delete
16 break;17case 2:18 message→ handled:delete = "handled:delete";19 status = 2;status ← 2
17case 2:18 message = "handled:delete";19 status→ 2 = 2;20 break;21default:printf("mode=%d ", mode);
26 printf("mode=%d\n", mode2);27 printf("status=%d\n", status2);28 printf("%s\n", messagehandled:delete);29 return 0;30}outputmode=2 status=2 handled:delete
dispatcher
A dispatcher turns a compact command code into one explicit branch of work.