メモリ上に展開されたMessagePackのデータに高速にアクセスします。
[詳解]
#include "nn/nlib/msgpack/MpWalker.h"
|
MpWalker | operator[] (size_t array_idx) const noexcept |
| インデックスを指定して配列の要素にアクセスします。 [詳解]
|
|
MpWalker | operator[] (const char *key) const noexcept |
| 文字列を指定して連想配列の要素にアクセスします。 [詳解]
|
|
MpWalker | operator[] (int array_idx) const noexcept |
| operator[](size_t array_idx) と同様です。
|
|
const void * | GetRaw (uint32_t *n) const noexcept |
| バイトデータを取得します。 [詳解]
|
|
const void * | GetPtr () const noexcept |
| MessagePackデータの現在位置へのポインタを取得します。 [詳解]
|
|
size_t | GetSize () const noexcept |
| MessagePackデータのサイズを取得します。 [詳解]
|
|
| operator bool () const |
| オブジェクトが初期化されて読み込み可能であればtrue を返します。
|
|
|
| MpWalker () noexcept |
| デフォルトコンストラクタです。
|
|
| ~MpWalker () noexcept |
| デストラクタです。
|
|
|
| MpWalker (const void *p, size_t n) noexcept |
| コンストラクタです。 [詳解]
|
|
bool | Init (const void *p, size_t n) noexcept |
| デフォルトコンストラクタを利用した場合はこの関数で初期化します。 [詳解]
|
|
メモリ上に展開されたMessagePackのデータに高速にアクセスします。
- 説明
MpReader
を利用してMessagePackのデータを読み込む場合、ツリー状にMpObject
が構築されます。 この動作は便利なのですが、必要でないデータに関してもMpObject
が構築されることになります。
MpWalker
を利用して連想配列のキーや配列のインデックスを指定して必要な部分に移動してから、MpReader
を利用することで必要なデータについてのみMpObject
を構築すれば、効率よくMessagePackのデータを利用することが可能になります。
- 属性"key"以下のみを
MpObject
として構築するコード例を以下に示します。
...
const void* p = MessagePackデータへのポインタ
size_t n = MessagePackのデータサイズ
if (!value) { 属性"key"が見つからなかったのでエラー; }
MemoryInputStream istr(value.GetPtr(), value.GetSize());
MpReader r;
if (!r.Init(&istr)) { 初期化失敗; }
MpObject obj;
if (!r.Read(&obj)) { 読み込み失敗 }
MpWalker.h の 17 行目に定義があります。
nn::nlib::msgpack::MpWalker::MpWalker |
( |
const void * |
p, |
|
|
size_t |
n |
|
) |
| |
|
noexcept |
コンストラクタです。
- 引数
-
[in] | p | MessagePackデータへのポインタ |
[in] | n | データサイズ |
nn::nlib::msgpack::MpWalker::GetPtr |
( |
| ) |
const |
|
inlinenoexcept |
MessagePackデータの現在位置へのポインタを取得します。
- 戻り値
- MessagePackデータへのポインタ
MpWalker.h の 39 行目に定義があります。
nn::nlib::msgpack::MpWalker::GetRaw |
( |
uint32_t * |
n | ) |
const |
|
noexcept |
バイトデータを取得します。
- 引数
-
[out] | n | バイトデータのバイト数が格納されます。 |
- 戻り値
- バイトデータへのポインタ、又は
NULL
(バイトデータでなかった場合)
- 説明
- 実行後に読み込み位置はバイトデータの直後に移動します。
nn::nlib::msgpack::MpWalker::GetSize |
( |
| ) |
const |
|
inlinenoexcept |
MessagePackデータのサイズを取得します。
- 戻り値
- MessagePackデータのサイズ
MpWalker.h の 40 行目に定義があります。
nn::nlib::msgpack::MpWalker::Init |
( |
const void * |
p, |
|
|
size_t |
n |
|
) |
| |
|
inlinenoexcept |
デフォルトコンストラクタを利用した場合はこの関数で初期化します。
- 引数
-
[in] | p | MessagePackデータへのポインタ |
[in] | n | データサイズ |
- 戻り値
- 成功ならば
true
(常に成功)
MpWalker.h の 22 行目に定義があります。
nn::nlib::msgpack::MpWalker::operator[] |
( |
size_t |
array_idx | ) |
const |
|
noexcept |
インデックスを指定して配列の要素にアクセスします。
- 引数
-
- 戻り値
MpWalker
オブジェクト
- 説明
- 配列の要素を指し示す
MpWalker
オブジェクトを返します。 配列でなかったり、指定されたインデックスが存在しない等の場合は、デフォルトコンストラクタで構築されたMpWalker
オブジェクトを返します。
- 結果は以下のコードのようにオブジェクトを評価することで判定可能です。
nn::nlib::msgpack::MpWalker::operator[] |
( |
const char * |
key | ) |
const |
|
noexcept |
文字列を指定して連想配列の要素にアクセスします。
- 引数
-
- 戻り値
MpWalker
オブジェクト
- 説明
- 連想配列の要素を指し示す
MpWalker
オブジェクトを返します。 連想配列でなかったり、指定されたキーが存在しない等の場合は、デフォルトコンストラクタで構築されたMpWalker
オブジェクトを返します。
- 結果は以下のコードのようにオブジェクトを評価することで判定可能です。
このクラス詳解は次のファイルから抽出されました: