Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlga Khlopkova <o.khlopkova@corp.mail.ru>2020-09-03 10:52:49 +0300
committerMaksim Andrianov <maksimandrianov1@gmail.com>2020-09-18 12:41:49 +0300
commite548527b0d0cd018832f035fb16c3fa08e9c8c9b (patch)
treedfe78c5c84f8ab2b96d62f5380049973fe07d95c /transit/transit_serdes.hpp
parentc4d4f8fd98c982a433b5e25b6bbdcc503a7e3ad7 (diff)
[transit] Replace osmoh::OpeningHours with Schedule.
Diffstat (limited to 'transit/transit_serdes.hpp')
-rw-r--r--transit/transit_serdes.hpp37
1 files changed, 33 insertions, 4 deletions
diff --git a/transit/transit_serdes.hpp b/transit/transit_serdes.hpp
index 37b25eece3..fd5d63e8a1 100644
--- a/transit/transit_serdes.hpp
+++ b/transit/transit_serdes.hpp
@@ -20,6 +20,7 @@
#include <cmath>
#include <cstdint>
#include <limits>
+#include <map>
#include <sstream>
#include <string>
#include <type_traits>
@@ -170,8 +171,20 @@ public:
(*this)(v);
}
- template <class K, class V>
- void operator()(std::unordered_map<K, V> const & container, char const * /* name */ = nullptr)
+ template <class K, class V, class H>
+ void operator()(std::unordered_map<K, V, H> const & container, char const * /* name */ = nullptr)
+ {
+ CHECK_LESS_OR_EQUAL(container.size(), std::numeric_limits<uint64_t>::max(), ());
+ WriteVarUint(m_sink, static_cast<uint64_t>(container.size()));
+ for (auto const & [key, val] : container)
+ {
+ (*this)(key);
+ (*this)(val);
+ }
+ }
+
+ template <class K, class V, class H>
+ void operator()(std::map<K, V, H> const & container, char const * /* name */ = nullptr)
{
CHECK_LESS_OR_EQUAL(container.size(), std::numeric_limits<uint64_t>::max(), ());
WriteVarUint(m_sink, static_cast<uint64_t>(container.size()));
@@ -347,8 +360,24 @@ public:
(*this)(v);
}
- template <class K, class V>
- void operator()(std::unordered_map<K, V> & container, char const * /* name */ = nullptr)
+ template <class K, class V, class H>
+ void operator()(std::unordered_map<K, V, H> & container, char const * /* name */ = nullptr)
+ {
+ auto const size = static_cast<size_t>(ReadVarUint<uint64_t, Source>(m_source));
+ for (size_t i = 0; i < size; ++i)
+ {
+ K key;
+ V val;
+
+ (*this)(key);
+ (*this)(val);
+
+ container.emplace(key, val);
+ }
+ }
+
+ template <class K, class V, class H>
+ void operator()(std::map<K, V, H> & container, char const * /* name */ = nullptr)
{
auto const size = static_cast<size_t>(ReadVarUint<uint64_t, Source>(m_source));
for (size_t i = 0; i < size; ++i)