Skip to content

Alreschas/serialization

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

serialization

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

ビルド方法

mkdir build
cd build
cmake ..
make

./sample

できること

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

使い方

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

#include "fileio_json.hpp"

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

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

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

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

//ここを追加
protected:
  friend class access;
  template<class T>
  void serialize(T &ar) {
      ar & ARCHIVE_NAMEDVALUE(value);
  }
//ここまで追加
};

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

int main(){

    //検証用データを作成
    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;

    return 0;
}

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

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

内部構造

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

内部構造

About

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

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •