void serialize(storage_type& s) const { s.serialize(mFirstX); s.serialize(mXW); s.serialize(mW); s.serialize(mXXW); }
static void serialize(storage_type& s, const Nullable<T>& in) { bool is = in.isValue(); s.serialize(is); if (is) s.serialize(*in); }
static void serialize(storage_type& s, const boost::unordered_set<T>& o) { uint32_t sz = o.size(); s.serialize(sz); for (auto it = o.begin(), it_end = o.end(); it != it_end; ++it) s.serialize(*it); }
static void serialize(storage_type& s, const Alternative<T1, T2>& in) { s.serialize(in.isLeft()); if (in.isLeft()) s.serialize(in.left()); else s.serialize(in.right()); }
static void serialize(storage_type& s, const boost::unordered_map<T1, T2>& o) { uint32_t sz = o.size(); s.serialize(sz); for (typename boost::unordered_map<T1,T2>::const_iterator it = o.begin(), it_end = o.end(); it != it_end; ++it) { s.serialize(it->first); s.serialize(it->second); } }
static void serialize(storage_type& s, const MapWithIndex<T1, T2, cmp_type_1, cmp_type_2>& o) { uint32_t sz = o.size(); s.serialize(sz); for (auto it = o.getKeyToValue().begin(), it_end = o.getKeyToValue().end(); it != it_end; ++it) { s.serialize(it->first); s.serialize(it->second); } }
void serialize(storage_type& s) const { s.serialize(mKeysToValues); s.serialize(mValuesToKeys); }