Added unordered map serialization
This was SVN commit r13039.
This commit is contained in:
parent
8ef7e45a0a
commit
ba94247744
@ -68,9 +68,11 @@ struct SerializeMap
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename K, typename V>
|
template<typename M>
|
||||||
void operator()(IDeserializer& deserialize, const char* UNUSED(name), std::map<K, V>& value)
|
void operator()(IDeserializer& deserialize, const char* UNUSED(name), M& value)
|
||||||
{
|
{
|
||||||
|
typedef typename M::key_type K;
|
||||||
|
typedef typename M::value_type::second_type V; // M::data_type gives errors with gcc
|
||||||
value.clear();
|
value.clear();
|
||||||
u32 len;
|
u32 len;
|
||||||
deserialize.NumberU32_Unbounded("length", len);
|
deserialize.NumberU32_Unbounded("length", len);
|
||||||
@ -85,6 +87,24 @@ struct SerializeMap
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// We have to order the map before serializing to make things consistent
|
||||||
|
template<typename KS, typename VS>
|
||||||
|
struct SerializeUnorderedMap
|
||||||
|
{
|
||||||
|
template<typename K, typename V>
|
||||||
|
void operator()(ISerializer& serialize, const char* name, boost::unordered_map<K, V>& value)
|
||||||
|
{
|
||||||
|
std::map<K, V> ordered_value(value.begin(), value.end());
|
||||||
|
SerializeMap<KS, VS>()(serialize, name, ordered_value);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename K, typename V>
|
||||||
|
void operator()(IDeserializer& deserialize, const char* name, boost::unordered_map<K, V>& value)
|
||||||
|
{
|
||||||
|
SerializeMap<KS, VS>()(deserialize, name, value);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
template<typename T, T max>
|
template<typename T, T max>
|
||||||
struct SerializeU8_Enum
|
struct SerializeU8_Enum
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user