私はいくつかのサードパーティライブラリからMatrix4x4クラスを使用しなければならず、それを直列化する必要があります。boost :: serialization formatting
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
は、この定義です:
1.
はそれがOK Matrix4x4のようなサードパーティのライブラリのために必要とされるすべてのシリアライズを、含まれていますヘッダ(3rdparty_serialization.h)を作成することですMatrix4x4の "シリアライズ"機能は正しいですか?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
ブーストのシリアル化はとらわれない、ほとんどのアーカイブタイプです:のようなものを試してみてください。属性はXMLのためだけのものですが、標準的なテキストとバイナリのアーカイブもありますが、原則としてあなた自身も書くことができます。これらの名前と値のペアを作成する必要があります。名前と値のペアは、テキストやバイナリでは使用されません。 XMLのためにさらに複雑さを加えることは、あまりにも多すぎると考えられていました。 – doublep
私はその属性がアーカイブのタイプに影響するとは思わない。バイナリアーカイブの場合、これらの属性を簡単にスキップできます。 – innochenti