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