|
template<class T > |
bool | operator== (const nil &lhs, const T &rhs) noexcept |
| rhs はnil 以外のオブジェクトでfalse を返します。
|
|
template<class T > |
bool | operator== (const T &lhs, const nil &rhs) noexcept |
| lhs はnil 以外のオブジェクトでfalse を返します。
|
|
bool | operator== (const nil &lhs, const nil &rhs) noexcept |
| true を返します。
|
|
template<class T > |
bool | operator!= (const nil &rhs, const T &lhs) noexcept |
| rhs はnil 以外のオブジェクトでtrue を返します。
|
|
template<class T > |
bool | operator!= (const T &rhs, const nil &lhs) noexcept |
| lhs はnil 以外のオブジェクトでtrue を返します。
|
|
bool | operator!= (const nil &rhs, const nil &lhs) noexcept |
| false を返します。
|
|
bool | operator== (const MpObjectKv &lhs, const MpObjectKv &rhs) noexcept |
| 再帰的に比較して、lhs とrhs が等価な場合はtrue を返します。
|
|
bool | operator!= (const MpObject &lhs, const MpObject &rhs) noexcept |
| 再帰的に比較して、lhs とrhs が等価な場合はfalse を返します。
|
|
bool | operator!= (const MpObjectKv &lhs, const MpObjectKv &rhs) noexcept |
| 再帰的に比較して、lhs とrhs が等価な場合はfalse を返します。
|
|
|
|
template<class T > |
errno_t | Box (MpObject *obj, const T &v) |
| この関数テンプレートを特殊化してユーザー型のボックス化を定義することが可能です。 [詳解]
|
|
template<class T > |
errno_t | Unbox (const MpObject *obj, T *v) |
| この関数テンプレートを特殊化してユーザー型のアンボックス化を定義することが可能です。 [詳解]
|
|
bool | operator== (const MpObject &lhs, const MpObject &rhs) |
| 2つのMpObject を再帰的に比較します。等価であればtrue を返します。 [詳解]
|
|
MessagePackのシリアライザ及びJSONパーサー/ライター, CSVパーサーが実装されています。
- 説明
MessagePackは、バイナリベースのオブジェクトシリアライズのためのフォーマットの1つです。 MessagePackを使うとデータを高速・省サイズかつ柔軟にやりとりすることが可能です。 データ形式はJSONをバイナリに変換したようなフォーマットになっているので、JSONを利用する処理を高速なものに置き換えたい場合にも利用されることが多いようです。 また、MessagePackはJSONと同様にPerl, Python, Ruby等の環境でも読み書きできるので、データを異なる環境の異なる言語とやりとりする用途に使うことが可能です。
- 本ライブラリについて
nn::nlib::msgpack
では、このMessagePackに対応したシリアライザとデシリアライザ、及びJSONのパーサーとジェネレータを実装しています。 MessagePackのデータもJSONのデータも読み込んだ後は同じデータ形式に変換されるので、JSONで読み込んでMessagePackで保管、又はその逆、といった作業を簡単に行うことが可能です。
- JSONパーサーのRFC 4627への適合性について
- JSONについてはRFC 4627に定義が記述されていますが、このライブラリのJSONパーサーのRFCへの適合性について説明いたします。
-
エンコーディングについて、RFC4627ではUTF-8, UTF-16, UTF-32を解釈するように求められていますが、
msgpack
ライブラリはUTF-8のみを解釈します。
-
ヌル文字を含む文字列について、ヌル文字を含む文字列、例えば"A\u0000Z"はパースエラーになりません。 これはRFC通りなのですが、この例をC文字列として解釈しようとすると"A"として解釈されます。
-
数値について、JSONには実数と整数の区別がありませんが、読み取り時には、符号なし整数(
uint64_t
)、符号つき整数(int64_t
)、浮動小数(double
)、の優先順で解釈を試みます。 ただし、符号を除いて19桁以上の整数は浮動小数型として読み取ります。 実際の数値の読み取りはnlib_strto_int32()
関数等を利用して実装されています。 なお、一般にJSONで大きな数値を扱う際にはJSONの処理系によって挙動が異なる場合があるので、数値としてより文字列として扱うことをお勧めいたします。
- 参照
- https://www.ietf.org/rfc/rfc4627.txt (RFC4627, JSON)
-
http://www.7key.jp/rfc/rfc4627.html (RFC4627, JSON, in Japanese)
-
https://www.ietf.org/rfc/rfc4180.txt (RFC4180, CSV)
-
http://www.kasai.fm/wiki/rfc4180jp (RFC4180, CSV, in Japanese)
-
http://msgpack.org/ (MessagePack)