Мне нужно использовать класс Matrix4x4 из какой-то сторонней библиотеки, и мне нужно его сериализовать.
1. Можно ли создать заголовок (3rdparty_serialization.h), который будет содержать всю сериализацию, необходимую для сторонних библиотек, например Matrix4x4:
namespace boost {
namespace serialization {
template<class Archive>
void serialize(Archive & ar, Matrix4x4 & m, const unsigned int version)
{
for(size_t i = 0; i < 4;++i)
for(size_t j = 0; j < 4;++j)
{
auto& e = m[i][j];
ar & BOOST_SERIALIZATION_NVP(e);
}
}
} // namespace serialization
} // namespace boost
2. Правильно ли это определение функции "сериализации" для Matrix4x4?
3. Как настроить форматирование сериализации Matrix4x4?
Теперь у меня есть вывод:
<m class_id="2" tracking_level="0" version="0">
<e>1</e>
<e>0</e>
<e>0</e>
<e>0</e>
<e>0</e>
<e>1</e>
<e>0</e>
<e>0</e>
<e>0</e>
<e>0</e>
<e>1</e>
<e>0</e>
<e>0</e>
<e>0</e>
<e>0</e>
<e>1</e>
</m>
Я хочу что-то вроде этого:
<m class_id="2" tracking_level="0" version="0">
<e>1;0;0;0</e>
<e>0;1;0;0</e>
<e>0;0;1;0</e>
<e>0;0;0;1</e>
</m>
или другой более компактной и читаемой формы.