MessagePack for C++ 0.3.5 リリース!

MessagePack の C++ API をアップデートしました。バイナリ・ソースコード両方で互換性は維持されています。


今回の目玉機能は、ユーザー定義クラスのシリアライザを簡単に作れるようになりました。
↓こんな感じで使えます。

#include <msgpack.hpp>
#include <string>

class MyClass {
public:
	std::string value;    // メンバ変数

	MyClass() : value("default") { }    // デフォルトコンストラクタ

	MSGPACK_DEFINE(value);    // このマクロを書くとこのクラスがシリアライズ・デシリアライズ可能に!
};

簡単!たとえば C++ で RPC を実装したいときに便利です。


さらに、たとえばバージョンアップして新しいメンバ変数が加わったときでも、互換性を保ったままシリアライズ・デシリアライズできるようになっています。
メンバが少なすぎるときはデフォルトコンストラクタで設定した値になり、多すぎるメンバは無視されます:

class MyClass2 {
	std::string value;
	int flag;    // フラグが加わった!

	MyClass() : value("default"), flag(-1) { }    // flagのデフォルト値は-1

	MSGPACK_DEFINE(value, flag);    // メンバが増えてもMyClassと相互にシリアライズ・デシリアライズ可能
};