| 130 | |
| 131 | template <class TSink, class TCont> |
| 132 | void WriteVectorOfPOD(TSink & sink, TCont const & v) |
| 133 | { |
| 134 | typedef typename TCont::value_type ValueT; |
| 135 | /// This assert fails on std::pair<int, int> and OsmID class because std::pair is not trivially copyable: |
| 136 | /// std::pair has a non-trivial copy-assignment and move-assignment operator. |
| 137 | // static_assert(std::is_trivially_copyable_v<ValueT>); |
| 138 | |
| 139 | uint32_t const count = static_cast<uint32_t>(v.size()); |
| 140 | WriteVarUint(sink, count); |
| 141 | |
| 142 | if (count > 0) |
| 143 | sink.Write(&v[0], count * sizeof(ValueT)); |
| 144 | } |
| 145 | |
| 146 | template <class ReaderT, class WriterT> |
| 147 | void ReadAndWrite(ReaderT & reader, WriterT & writer, size_t bufferSize = 4 * 1024) |