44 lines
1.1 KiB
C++
44 lines
1.1 KiB
C++
#pragma once
|
|
|
|
#include "VersionedMap.h"
|
|
|
|
#include <algorithm>
|
|
#include <string.h>
|
|
|
|
#include <string>
|
|
using String = std::basic_string<uint8_t>;
|
|
|
|
inline auto operator<=>(const weaselab::VersionedMap::Key &lhs,
|
|
const weaselab::VersionedMap::Key &rhs) {
|
|
int cl = std::min(lhs.len, rhs.len);
|
|
if (cl > 0) {
|
|
int c = memcmp(lhs.p, rhs.p, cl);
|
|
if (c != 0) {
|
|
return c <=> 0;
|
|
}
|
|
}
|
|
return lhs.len <=> rhs.len;
|
|
}
|
|
|
|
inline auto operator<=>(const String &lhs,
|
|
const weaselab::VersionedMap::Key &rhs) {
|
|
int cl = std::min<int>(lhs.size(), rhs.len);
|
|
if (cl > 0) {
|
|
int c = memcmp(lhs.data(), rhs.p, cl);
|
|
if (c != 0) {
|
|
return c <=> 0;
|
|
}
|
|
}
|
|
return int(lhs.size()) <=> rhs.len;
|
|
}
|
|
|
|
inline auto operator==(const weaselab::VersionedMap::Key &lhs,
|
|
const weaselab::VersionedMap::Key &rhs) {
|
|
return (lhs <=> rhs) == 0;
|
|
}
|
|
|
|
inline auto operator!=(const weaselab::VersionedMap::Key &lhs,
|
|
const weaselab::VersionedMap::Key &rhs) {
|
|
return (lhs <=> rhs) != 0;
|
|
}
|