#pragma once #include "VersionedMap.h" #include #include #include using String = std::basic_string; namespace weaselab { inline auto operator<=>(const VersionedMap::Key &lhs, const 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; } } // namespace weaselab inline auto operator<=>(const String &lhs, const weaselab::VersionedMap::Key &rhs) { int cl = std::min(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; }