#include "routing/cross_mwm_connector_serialization.hpp" #include "base/bits.hpp" using namespace std; namespace routing { // static uint32_t constexpr CrossMwmConnectorSerializer::kLastVersion; // static void CrossMwmConnectorSerializer::WriteWeights(vector const & weights, vector & buffer) { MemWriter> memWriter(buffer); BitWriter>> writer(memWriter); connector::Weight prevWeight = 1; for (auto const weight : weights) { if (weight == connector::kNoRoute) { writer.Write(kNoRouteBit, 1); continue; } writer.Write(kRouteBit, 1); auto const storedWeight = (weight + kGranularity - 1) / kGranularity; WriteDelta(writer, EncodeZigZagDelta(prevWeight, storedWeight) + 1); prevWeight = storedWeight; } } } // namespace routing