in src/agent/DebugShowInput.cc [67:98]
static void writeFlags(StringBuilder &out, DWORD flags,
const char *remainderName,
const Flag *table, size_t tableSize,
char pre, char sep, char post) {
DWORD remaining = flags;
bool wroteSomething = false;
for (size_t i = 0; i < tableSize; ++i) {
const Flag &f = table[i];
if ((f.value & flags) == f.value) {
if (!wroteSomething && pre != '\0') {
out << pre;
} else if (wroteSomething && sep != '\0') {
out << sep;
}
out << f.text;
wroteSomething = true;
remaining &= ~f.value;
}
}
if (remaining != 0) {
if (!wroteSomething && pre != '\0') {
out << pre;
} else if (wroteSomething && sep != '\0') {
out << sep;
}
out << remainderName << "(0x" << hexOfInt(remaining) << ')';
wroteSomething = true;
}
if (wroteSomething && post != '\0') {
out << post;
}
}