#ifndef OSRM_STORAGE_SERIALIZATION_HPP #define OSRM_STORAGE_SERIALIZATION_HPP #include "util/integer_range.hpp" #include "util/vector_view.hpp" #include "storage/io.hpp" #include namespace osrm { namespace storage { namespace serialization { template inline void read(storage::io::FileReader &reader, stxxl::vector &vec) { auto size = reader.ReadOne(); vec.reserve(size); for (auto idx : util::irange(0, size)) { (void)idx; vec.push_back(reader.ReadOne()); } } template inline void write(storage::io::FileWriter &writer, const stxxl::vector &vec) { writer.WriteOne(vec.size()); for (auto idx : util::irange(0, vec.size())) { writer.WriteOne(vec[idx]); } } template void read(io::FileReader &reader, std::vector &data) { const auto count = reader.ReadElementCount64(); data.resize(count); reader.ReadInto(data.data(), count); } template void write(io::FileWriter &writer, const std::vector &data) { const auto count = data.size(); writer.WriteElementCount64(count); return writer.WriteFrom(data.data(), count); } template void read(io::FileReader &reader, util::vector_view &data) { const auto count = reader.ReadElementCount64(); BOOST_ASSERT(data.size() == count); reader.ReadInto(data.data(), count); } template void write(io::FileWriter &writer, const util::vector_view &data) { const auto count = data.size(); writer.WriteElementCount64(count); return writer.WriteFrom(data.data(), count); } } } } #endif