我必須從某個第三方庫中使用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