Files
versioned-map/KeyCompare.h
2024-05-23 17:27:55 -07:00

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;
}