Skip to content

Repository files navigation

serialization

Boost.Serializationを真似て作ったシリアライザ
現状はJsonのみ対応

ビルド方法

mkdir build
cd build
cmake ..
make
./sample

できること

boostのシリアライザがどうなっているのか気になったので、似たような挙動のシリアライザを作成してみました。
簡単な記述を追加するだけで、クラスの変数をJson形式で保存、読み込みしてくれます。

使い方

はじめに、以下のファイルをインクルードします。

#include "fileio_json.hpp"

例えば、以下のようなクラスにおいて、

classSample {
public:Sample():value({1,2,3}){}
private:
std::vector<double> value;
};

以下のような記述を追加すれば、

classSample {
public:Sample():value({1,2,3}){}
private:
std::vector<double> value;
//ここを追加protected:friendclassaccess;
template<classT>
voidserialize(T &ar) {
ar & ARCHIVE_NAMEDVALUE(value);
}
//ここまで追加
};

以下のようなコードでJsonの保存、読み込みができます。

intmain(){
//検証用データを作成
Sample sample;
//データをJson化
JsonOutputArchive ar_out;
ar_out << sample;
std::string json_str = ar_out.commit();
//Jsonデータをロード
JsonInputArchive ar_in(json_str);
ar_in>>sample;
return0;
}

作成されるJsonは、以下のようになります。

[{"value":[1,2,3]}]

内部構造

黄色いところが、Json専用のコードです。
未作成ですが、この部分を差し替えることで、xmlなど色々なフォーマットに切り替えられます。

内部構造

About

boostライクなI/Fのシリアライザ(勉強用)

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages