| | |
| | |
| | |
| |
|
| | #pragma once |
| |
|
| | #include <boost/icl/interval_set.hpp> |
| | #include <boost/serialization/split_free.hpp> |
| | #include "common/serialization/boost_discrete_interval.hpp" |
| |
|
| | namespace boost::serialization { |
| |
|
| | template <class Archive, class T> |
| | void save(Archive& ar, const boost::icl::interval_set<T>& set, const unsigned int file_version) { |
| | ar << static_cast<u64>(set.iterative_size()); |
| | for (auto& v : set) { |
| | ar << v; |
| | } |
| | } |
| |
|
| | template <class Archive, class T> |
| | void load(Archive& ar, boost::icl::interval_set<T>& set, const unsigned int file_version) { |
| | u64 count{}; |
| | ar >> count; |
| | set.clear(); |
| | for (u64 i = 0; i < count; i++) { |
| | typename boost::icl::interval_set<T>::interval_type value{}; |
| | ar >> value; |
| | set += value; |
| | } |
| | } |
| |
|
| | template <class Archive, class T> |
| | void serialize(Archive& ar, boost::icl::interval_set<T>& set, const unsigned int file_version) { |
| | boost::serialization::split_free(ar, set, file_version); |
| | } |
| |
|
| | } |
| |
|