56 lines
1.3 KiB
C
56 lines
1.3 KiB
C
#pragma once
|
|
|
|
#include "VersionedMap.h"
|
|
#include <ctype.h>
|
|
#include <inttypes.h>
|
|
#include <stdio.h>
|
|
|
|
inline void
|
|
printMutation(const weaselab::VersionedMap::Iterator::VersionedMutation &m) {
|
|
switch (m.type) {
|
|
case weaselab::VersionedMap::Set:
|
|
printf("set ");
|
|
for (int i = 0; i < m.param1Len; ++i) {
|
|
auto c = m.param1[i];
|
|
if (isprint(c)) {
|
|
printf("%c", c);
|
|
} else {
|
|
printf("x%02x", c);
|
|
}
|
|
}
|
|
printf(" -> '");
|
|
for (int i = 0; i < m.param2Len; ++i) {
|
|
auto c = m.param2[i];
|
|
if (isprint(c)) {
|
|
printf("%c", c);
|
|
} else {
|
|
printf("x%02x", c);
|
|
}
|
|
}
|
|
printf("' @ %" PRId64 "\n", m.notModifiedSince);
|
|
break;
|
|
case weaselab::VersionedMap::Clear:
|
|
printf("clear [");
|
|
for (int i = 0; i < m.param1Len; ++i) {
|
|
auto c = m.param1[i];
|
|
if (isprint(c)) {
|
|
printf("%c", c);
|
|
} else {
|
|
printf("x%02x", c);
|
|
}
|
|
}
|
|
printf(", ");
|
|
for (int i = 0; i < m.param2Len; ++i) {
|
|
auto c = m.param2[i];
|
|
if (isprint(c)) {
|
|
printf("%c", c);
|
|
} else {
|
|
printf("x%02x", c);
|
|
}
|
|
}
|
|
printf(") @ %" PRId64 "\n", m.notModifiedSince);
|
|
break;
|
|
default: // GCOVR_EXCL_LINE
|
|
__builtin_unreachable(); // GCOVR_EXCL_LINE
|
|
}
|
|
} |