我必须从某个第三方库中使用Matrix4x4类,并且需要序列化它。boost ::序列化格式
它是确定创建头(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>
或其他更紧凑和可读的形式。
我认为应该有某种属性等 – innochenti 2012-03-24 19:26:40
加速系列化主要是存档类型无关。属性是XML的唯一东西,但也有标准的文本和二进制档案,更不用说你原则上也可以写自己的。您已经必须创建这些名称 - 值对,其名称部分不用于文本或二进制文件。为XML增加更多的复杂性可能被认为太多了。 – doublep 2012-03-24 21:07:41
我不认为这些属性会影响档案的类型。对于二进制存档,我们可以轻松跳过这些属性 – innochenti 2012-03-25 18:07:23