|
const nlib_byte_t * | GetPtr () const noexcept |
| MessagePackデータの現在位置へのポインタを取得します。 [詳解]
|
|
size_t | GetSize () const noexcept |
| MessagePackデータのサイズを取得します。 [詳解]
|
|
MpWalker | Skip () const noexcept |
| 次のデータを読み飛ばしてその次を指し示すMpWalker オブジェクトを返します。配列や連想配列の場合その全体を読み飛ばします。
|
|
| operator bool () const |
| オブジェクトが初期化されて読み込み可能であればtrue を返します。
|
|
|
constexpr | MpWalker () noexcept |
| デフォルトコンストラクタです。
|
|
constexpr | MpWalker (const void *p, size_t n) noexcept |
| 初期化を行うコンストラクタです。 [詳解]
|
|
bool | Init (const void *p, size_t n) noexcept |
| デフォルトコンストラクタを利用した場合はこの関数で初期化します。 [詳解]
|
|
|
MpWalker | operator[] (size_t array_idx) const noexcept |
| インデックスを指定して配列の要素にアクセスします。
|
|
MpWalker | operator[] (int array_idx) const noexcept |
| インデックスを指定して配列の要素にアクセスします。
|
|
MpWalker | At (size_t idx) const noexcept |
| インデックスを指定して配列の要素にアクセスします。 [詳解]
|
|
MpWalker | GetArrayCount (uint32_t *n) const noexcept |
| 配列が格納されている場合、配列のサイズを取得します。 [詳解]
|
|
std::pair< MpWalker, uint32_t > | GetArrayCount () const noexcept |
| 配列が格納されている場合、配列のサイズを取得します。 [詳解]
|
|
|
MpWalker | operator[] (const nlib_utf8_t *key) const noexcept |
| 文字列を指定して連想配列の要素にアクセスします。
|
|
MpWalker | At (size_t idx, const nlib_utf8_t **key, size_t *n) const noexcept |
| インデックスを指定して連想配列の要素にアクセスします。 [詳解]
|
|
MpWalker | Find (const nlib_utf8_t *key) const noexcept |
| 文字列を指定して連想配列の要素にアクセスします。 [詳解]
|
|
MpWalker | GetMapCount (uint32_t *n) const noexcept |
| 連想配列が格納されている場合、連想配列のサイズを取得します。 [詳解]
|
|
std::pair< MpWalker, uint32_t > | GetMapCount () const noexcept |
| 連想配列が格納されている場合、連想配列のサイズを取得します。 [詳解]
|
|
|
MpWalker | GetString (const nlib_utf8_t **str, uint32_t *n) const noexcept |
| str format のデータを取得します。 [詳解]
|
|
std::tuple< MpWalker, const nlib_utf8_t *, uint32_t > | GetString () const noexcept |
| 文字列が格納されている場合、文字列(str format )を取得します。 [詳解]
|
|
|
MpWalker | GetBinary (const void **bin, uint32_t *n) const noexcept |
| bin format のデータを取得します。 [詳解]
|
|
std::tuple< MpWalker, const nlib_byte_t *, uint32_t > | GetBinary () const noexcept |
| 文字列が格納されている場合、バイナリ(bin format )のデータを取得します。 [詳解]
|
|
|
MpWalker | GetExt (int8_t *tp, const void **bin, uint32_t *n) const noexcept |
| ext format のデータを取得します。 [詳解]
|
|
MpWalker | GetTimestamp (nlib_time *val) const noexcept |
| タイムスタンプを取得します。 [詳解]
|
|
std::tuple< MpWalker, int8_t, const nlib_byte_t *, uint32_t > | GetExt () const noexcept |
| 拡張データ型が格納されている場合、拡張データ型(ext format )のデータを取得します。 [詳解]
|
|
std::pair< MpWalker, nlib_time > | GetTimestamp () const noexcept |
| タイムスタンプ拡張型がが格納されている場合、nlib_time 型の値として取得します。戻り値のMpWalker オブジェクトは、成功した場合次の要素を指し、失敗した場合は無効な値となります。 [詳解]
|
|
|
MpWalker | GetNil () const noexcept |
| nil を取得します。 [詳解]
|
|
MpWalker | GetBoolean (bool *val) const noexcept |
| ブール値が格納されている場合、ブール値を取得します。 [詳解]
|
|
std::pair< MpWalker, bool > | GetBoolean () const noexcept |
| ブール値が格納されている場合、ブール値を取得します。戻り値のMpWalker オブジェクトは、成功した場合次の要素を指し、失敗した場合は無効な値となります。 [詳解]
|
|
|
MpWalker | GetInt (int32_t *val) const noexcept |
| 符号付き整数値を取得します。 [詳解]
|
|
MpWalker | GetInt (int64_t *val) const noexcept |
| 符号付き整数値を取得します。 [詳解]
|
|
MpWalker | GetUint (uint32_t *val) const noexcept |
| 符号なし整数値を取得します。 [詳解]
|
|
MpWalker | GetUint (uint64_t *val) const noexcept |
| 符号なし整数値を取得します。 [詳解]
|
|
MpWalker | GetFloat (float *val) const noexcept |
| 単精度浮動小数点数を取得します。 [詳解]
|
|
MpWalker | GetDouble (double *val) const noexcept |
| 倍精度浮動小数点数を取得します。 [詳解]
|
|
std::pair< MpWalker, int32_t > | GetInt32 () const noexcept |
| int32_t 型に格納できる整数値が格納されている場合、整数値を取得します。戻り値のMpWalker オブジェクトは、成功した場合次の要素を指し、失敗した場合は無効な値となります。 [詳解]
|
|
std::pair< MpWalker, int64_t > | GetInt64 () const noexcept |
| int64_t 型に格納できる整数値が格納されている場合、整数値を取得します。戻り値のMpWalker オブジェクトは、成功した場合次の要素を指し、失敗した場合は無効な値となります。 [詳解]
|
|
std::pair< MpWalker, uint32_t > | GetUint32 () const noexcept |
| uint32_t 型に格納できる整数値が格納されている場合、整数値を取得します。戻り値のMpWalker オブジェクトは、成功した場合次の要素を指し、失敗した場合は無効な値となります。 [詳解]
|
|
std::pair< MpWalker, uint64_t > | GetUint64 () const noexcept |
| uint64_t 型に格納できる整数値が格納されている場合、整数値を取得します。戻り値のMpWalker オブジェクトは、成功した場合次の要素を指し、失敗した場合は無効な値となります。 [詳解]
|
|
std::pair< MpWalker, float > | GetFloat () const noexcept |
| float 型に格納できる数値が格納されている場合、数値を取得します。戻り値のMpWalker オブジェクトは、成功した場合次の要素を指し、失敗した場合は無効な値となります。 [詳解]
|
|
std::pair< MpWalker, double > | GetDouble () const noexcept |
| double 型に格納できる数値が格納されている場合、数値を取得します。戻り値のMpWalker オブジェクトは、成功した場合次の要素を指し、失敗した場合は無効な値となります。 [詳解]
|
|
メモリ上に展開されたMessagePackのデータに高速にアクセスします。
- 説明
JsonStreamParser
を利用してMessagePackのデータ読み込む場合、MpObject
を動的に構築します。 この動作は便利なのですが、必要でないデータに関してもMpObject
が構築されることになる等のオーバーヘッドが問題となることがあります。
MpWalker
を利用して連想配列のキーや配列のインデックスを指定して必要な部分に移動してから、JsonStreamParser
を利用することで必要なデータについてのみMpObject
を構築すれば、効率よくMessagePackのデータを利用することが可能になります。
- 飛ばし読みをして属性"key"以下のみを
MpObject
として構築するコード例を以下に示します。 const nlib_utf8_t* json = R
"({ "a": { "key": "bad" }, "b" : [1, "key", 3], "key": ["That", "is", "correct"] })"; size_t n = ToMsgpack(buf, json);
SUCCEED_IF(x);
SUCCEED_IF(r.first == 0);
ToJson(parsed_value, *r.second.get());
MpWalker.h の 36 行目に定義があります。