#include "local_ads/file_helpers.hpp" #include "coding/reader.hpp" #include "coding/string_utf8_multilang.hpp" #include "coding/write_to_sink.hpp" #include "base/assert.hpp" namespace local_ads { void WriteCountryName(FileWriter & writer, std::string const & countryName) { ASSERT(!countryName.empty(), ()); utils::WriteString(writer, countryName); } void WriteZigZag(FileWriter & writer, int64_t duration) { uint64_t const encoded = bits::ZigZagEncode(duration); WriteToSink(writer, encoded); } void WriteRawData(FileWriter & writer, std::vector const & rawData) { uint64_t const size = static_cast(rawData.size()); WriteToSink(writer, size); writer.Write(rawData.data(), size); } std::string ReadCountryName(ReaderSource & src) { std::string countryName; utils::ReadString(src, countryName); return countryName; } int64_t ReadZigZag(ReaderSource & src) { uint64_t const value = ReadPrimitiveFromSource(src); return bits::ZigZagDecode(value); } std::vector ReadRawData(ReaderSource & src) { uint64_t const size = ReadPrimitiveFromSource(src); if (src.Size() < size) MYTHROW(Reader::SizeException, (src.Pos(), size)); std::vector bytes(size); src.Read(bytes.data(), bytes.size()); return bytes; } } // namespace local_ads