|
|
|
@ -555,6 +555,7 @@ template<typename Stream, unsigned int N, typename T> inline void Unserialize(St
|
|
|
|
|
* vectors of unsigned char are a special case and are intended to be serialized as a single opaque blob.
|
|
|
|
|
*/
|
|
|
|
|
template<typename Stream, typename T, typename A> void Serialize_impl(Stream& os, const std::vector<T, A>& v, const unsigned char&);
|
|
|
|
|
template<typename Stream, typename T, typename A> void Serialize_impl(Stream& os, const std::vector<T, A>& v, const bool&);
|
|
|
|
|
template<typename Stream, typename T, typename A, typename V> void Serialize_impl(Stream& os, const std::vector<T, A>& v, const V&);
|
|
|
|
|
template<typename Stream, typename T, typename A> inline void Serialize(Stream& os, const std::vector<T, A>& v);
|
|
|
|
|
template<typename Stream, typename T, typename A> void Unserialize_impl(Stream& is, std::vector<T, A>& v, const unsigned char&);
|
|
|
|
@ -713,6 +714,18 @@ void Serialize_impl(Stream& os, const std::vector<T, A>& v, const unsigned char&
|
|
|
|
|
os.write((char*)v.data(), v.size() * sizeof(T));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<typename Stream, typename T, typename A>
|
|
|
|
|
void Serialize_impl(Stream& os, const std::vector<T, A>& v, const bool&)
|
|
|
|
|
{
|
|
|
|
|
// A special case for std::vector<bool>, as dereferencing
|
|
|
|
|
// std::vector<bool>::const_iterator does not result in a const bool&
|
|
|
|
|
// due to std::vector's special casing for bool arguments.
|
|
|
|
|
WriteCompactSize(os, v.size());
|
|
|
|
|
for (bool elem : v) {
|
|
|
|
|
::Serialize(os, elem);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<typename Stream, typename T, typename A, typename V>
|
|
|
|
|
void Serialize_impl(Stream& os, const std::vector<T, A>& v, const V&)
|
|
|
|
|
{
|
|
|
|
|