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>
|
||||
void operator()(IDeserializer& deserialize, const char* UNUSED(name), std::map<K, V>& value)
|
||||
template<typename M>
|
||||
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();
|
||||
u32 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>
|
||||
struct SerializeU8_Enum
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user