Это высокопроизводительный яндексовый сериализатор бинарного формата. Который берет протобафную схему, но конфигурирует совершенно другую сериализацию.
Нашел там вот такой код:
template <typename T>
inline constexpr T XorDef(T v, T d) noexcept {
return v ^ d;
}
Что выяснилось. Мы хотим в сообщении "дефолтное" значение записывать нулевыми байтами. При этом при чтении хотим получать из нулевых байтов дефолтное значение. Поэтому мы при чтении делаем вот так:
YAFF_PURE T ReadValueUnsafe(const FieldOffset offset, const T defaultVal) const noexcept {
return XorDef(yaff::ReadValue<T>(Message() + offset), defaultVal);
}
YAFF_PURE T ReadValueUnsafe(const FieldOffset offset, const T defaultVal) const noexcept {
return XorDef(yaff::ReadValue<T>(Fields() + offset), defaultVal);
}
А при записи вот так:
void AddField(FieldId id, T value, T def) {
WriteField<T>(id, XorDef(value, def));
}
Из приятного: если наше дефолтное значение - нули, то компилятор этот xor соптимизирует.
Это ли не блеск, это ли не шик, это ли не прелесть.