33#include < map>
44#include < vector>
55#include < string>
6+ #include < robin_hood.h>
67
78#include " Math/Rectangle.hpp"
89#include " Math/Vector2.hpp"
@@ -38,19 +39,20 @@ void ReadVector(BinaryStreamReader& reader, std::vector<T>& outV)
3839}
3940
4041template <typename TKey, typename TValue>
41- void WriteMap (BinaryStreamWriter& writer, const std::map<TKey, TValue> m )
42+ void WriteMap (BinaryStreamWriter& writer, const std::map<TKey, TValue>& map )
4243{
43- writer.WriteInt (m .size ());
44+ writer.WriteInt (map .size ());
4445
45- for (auto & item : m)
46+ for (auto & pair
47+ : map)
4648 {
47- Write (writer, item .first );
48- Write (writer, item .second );
49+ Write (writer, pair .first );
50+ Write (writer, pair .second );
4951 }
5052}
5153
5254template <typename TKey, typename TValue>
53- void ReadMap (BinaryStreamReader& reader, std::map<TKey, TValue>& m )
55+ void ReadMap (BinaryStreamReader& reader, std::map<TKey, TValue>& map )
5456{
5557 int size = reader.ReadInt ();
5658 for (int i = 0 ; i < size; ++i)
@@ -61,7 +63,35 @@ void ReadMap(BinaryStreamReader& reader, std::map<TKey, TValue>& m)
6163 Read (reader, key);
6264 Read (reader, value);
6365
64- m.insert ({key, value});
66+ map.insert ({ key, value});
67+ }
68+ }
69+
70+ template <typename TKey, typename TValue>
71+ void WriteMap (BinaryStreamWriter& writer, const robin_hood::unordered_flat_map<TKey, TValue>& map)
72+ {
73+ writer.WriteInt (map.size ());
74+
75+ for (auto & pair : map)
76+ {
77+ Write (writer, pair.first );
78+ Write (writer, pair.second );
79+ }
80+ }
81+
82+ template <typename TKey, typename TValue>
83+ void ReadMap (BinaryStreamReader& reader, robin_hood::unordered_flat_map<TKey, TValue>& map)
84+ {
85+ auto size = reader.ReadInt ();
86+ for (int i = 0 ; i < size; ++i)
87+ {
88+ TKey key;
89+ TValue value;
90+
91+ Read (reader, key);
92+ Read (reader, value);
93+
94+ map.insert ({key, value});
6595 }
6696}
6797
0 commit comments