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