nlib
|
JSON又はmsgpackをプル形式でパースするためのクラスです。 [詳解]
#include "nn/nlib/msgpack/JsonStreamParser.h"
クラス | |
struct | Detail |
エラーが発生した場合、pathにエラーが発生した箇所を示す文字列が格納されます。 [詳解] | |
struct | Token |
パーサーが取得したトークンに関するデータが格納されています。 [詳解] | |
公開型 | |
enum | Event { kNone = -1, kEventNull = 1, kEventTrue, kEventFalse, kEventString, kEventNumberInt32, kEventNumberUint32, kEventNumberInt64, kEventNumberUint64, kEventNumberFloat, kEventNumberDouble, kEventStartArray, kEventEndArray, kEventStartMap, kEventEndMap, kEventKeyName, kEventBinary, kEventExt, kEventEndDocument } |
JsonStreamParser::Next() 及びToken で利用される型で、パーサーが読み込んだデータに対応するイベントです。 [詳解] | |
公開メンバ関数 | |
bool | HasNext () const noexcept |
次に遷移する状態がある(読み込んでいるJSON又はmsgpackが終了していない)場合はtrue を返します。 | |
Event | Next () noexcept |
JSON又はmsgpackを読み込みパーサー内の状態を遷移します。 [詳解] | |
bool | Skip () noexcept |
値、配列全体、連想配列全体を1つ読み飛ばします。 [詳解] | |
int | GetLine () const noexcept |
JSONを読み込んでいる場合は現在の行数を返します。 | |
int | GetColumn () const noexcept |
JSONを読み込んでいる場合は現在の桁数を返します。 | |
const Token & | GetToken () const noexcept |
トークンを取得します。 [詳解] | |
基本的なメンバ関数 | |
constexpr | JsonStreamParser () noexcept |
デフォルトコンストラクタです。 | |
~JsonStreamParser () noexcept | |
デストラクタです。 | |
初期化と終了 | |
errno_t | Init (const JsonStreamParserSettings &settings) noexcept |
パーサーの初期化を行います。 [詳解] | |
errno_t | Init () noexcept |
デフォルト設定でパーサーの初期化を行います。 | |
errno_t | Open (InputStream *stream) noexcept |
ストリームを指定してパースを開始します。 [詳解] | |
errno_t | Open (TextReader *reader) noexcept |
TextReader オブジェクトを指定Tしてパースを開始します。 [詳解] | |
errno_t | Close () noexcept |
パーサーをクローズして初期化直後の状態に設定します。 [詳解] | |
エラーチェック | |
Error | GetError () const noexcept |
エラーを取得します。 [詳解] | |
operator bool () const | |
エラーが発生していなければtrue を返します。 | |
静的公開メンバ関数 | |
static errno_t | Parse (JsonStreamParser *parser, UniquePtr< MpObject > &obj, bool peek, Detail *detail) noexcept |
JSON又はmsgpackをパースして、MpObject を作成します。 [詳解] | |
static errno_t | Parse (JsonStreamParser *parser, UniquePtr< MpObject > &obj, bool peek) noexcept |
Parse(parser, obj, peek, NULL) を実行します。 | |
static errno_t | Parse (JsonStreamParser *parser, UniquePtr< MpObject > &obj) noexcept |
Parse(parser, obj, false) を実行します。 | |
static errno_t | Parse (UniquePtr< MpObject > &obj, const void *data, size_t n, const JsonStreamParserSettings &settings, Detail *detail) noexcept |
JSON又はmsgpackをパースして、MpObject を作成します。 [詳解] | |
static errno_t | Parse (UniquePtr< MpObject > &obj, const void *data, size_t n, const JsonStreamParserSettings &settings) noexcept |
Parse(obj, data, n, settings, NULL) を実行します。 | |
static errno_t | Parse (UniquePtr< MpObject > &obj, const void *data, size_t n) noexcept |
JsonStreamParserSettings のデフォルト設定でParse(obj, data, n, settings) を実行します。 | |
static errno_t | Parse (UniquePtr< MpObject > &obj, const nlib_utf8_t *str, const JsonStreamParserSettings &settings, Detail *detail) noexcept |
JSONをパースして、MpObject を作成します。 [詳解] | |
static errno_t | Parse (UniquePtr< MpObject > &obj, const nlib_utf8_t *str, const JsonStreamParserSettings &settings) noexcept |
Parse(obj, str, settings, NULL) を実行します。 | |
static errno_t | Parse (UniquePtr< MpObject > &obj, const nlib_utf8_t *str) noexcept |
JsonStreamParserSettings のデフォルト設定でParse(obj, str, settings を実行します。 | |
パースされた数値変換 | |
数値型のトークンを指定した型へ変換します。 | |
static errno_t | ToInt32 (const Token &token, int32_t *number) noexcept |
数値トークンをint32_t へキャストします。 [詳解] | |
static errno_t | ToUint32 (const Token &token, uint32_t *number) noexcept |
数値トークンをuint32_t へキャストします。 [詳解] | |
static errno_t | ToInt64 (const Token &token, int64_t *number) noexcept |
数値トークンをint64_t へキャストします。 [詳解] | |
static errno_t | ToUint64 (const Token &token, uint64_t *number) noexcept |
数値トークンをuint64_t へキャストします。 [詳解] | |
static errno_t | ToFloat (const Token &token, float *number) noexcept |
数値トークンをfloat へキャストします。 [詳解] | |
static errno_t | ToDouble (const Token &token, double *number) noexcept |
数値トークンをdouble へキャストします。 [詳解] | |
static errno_t | ToTimestamp (const Token &token, nlib_time *t) noexcept |
タイムスタンプをnlib_time へ変換します。 [詳解] | |
JSON又はmsgpackをプル形式でパースするためのクラスです。
JsonStreamParser.h の 55 行目に定義があります。
JsonStreamParser::Next()
及びToken
で利用される型で、パーサーが読み込んだデータに対応するイベントです。
JsonStreamParser.h の 57 行目に定義があります。
|
noexcept |
|
noexcept |
エラーを取得します。
JsonStreamParser
が定義するエラー値値 | 説明 |
---|---|
kOk | エラーは発生していません |
kErrorColon | ':'が見つかりませんでした |
kErrorComma | ','が見つかりませんでした |
kErrorQuote | '"'が見つかりませんでした |
kErrorKeyTooLong | 連想配列のキーが長すぎてトークンを格納するバッファに収まりませんでした |
kErrorNumberTooLong | 数値文字列が長すぎてトークンを格納するバッファに収まりませんでした |
kErrorArrayTooBig | 配列の大きさが指定された制限をオーバーしました |
kErrorMapTooBig | 連想配列の大きさが指定された制限をオーバーしました |
kErrorCharacter | 文字列にUTF-8でない文字が含まれています |
kErrorNumberRange | 数値が大きすぎるか小さすぎます |
kErrorDepth | 配列及び連想配列の深さが指定された制限をオーバーしました |
kErrorToken | その他読み込んだ文字列でエラーが発生しました |
kErrorStream | ストリームでエラーが発生しました |
|
inlinenoexcept |
|
noexcept |
パーサーの初期化を行います。
[in] | settings | 動作オプション |
0 | 成功した場合 |
ENOMEM | メモリの確保に失敗した場合 |
EALREADY | 既に初期化済みの場合 |
|
noexcept |
JSON又はmsgpackを読み込みパーサー内の状態を遷移します。
|
noexcept |
ストリームを指定してパースを開始します。
[in] | stream | JSON又はmsgpackを読み込むストリーム |
0 | 成功した場合 |
EINVAL | stream がNULL 、又はJsonStreamParser が未初期化な場合 |
ENONEM | メモリの確保に失敗した場合 |
EALREADY | 既にオープンされている場合 |
|
noexcept |
TextReader
オブジェクトを指定Tしてパースを開始します。
[in] | reader | JSONを読み込むTextReader オブジェクト |
0 | 成功した場合 |
EINVAL | reader がNULL であったり未初期化な場合、又はJsonStreamParser が未初期化な場合 |
EALREADY | 既にオープンされている場合 |
InputStream
を利用してopenするようにしてください。
|
staticnoexcept |
|
staticnoexcept |
|
inlinestaticnoexcept |
JSONをパースして、MpObject
を作成します。
[out] | obj | パース結果が格納されるMpObject |
[in] | str | JSONが格納された文字列 |
[in] | settings | パーサーの設定パラーメータ |
[out] | detail | NULL でない場合、エラーが発生した箇所を示す文字列が格納されます。 |
settings.format
には、JsonStreamParserSettings::kFormatJson
が指定されているものとして動作します。 JsonStreamParser.h の 165 行目に定義があります。
|
noexcept |
値、配列全体、連想配列全体を1つ読み飛ばします。
false
を返します。
|
inlinestaticnoexcept |
数値トークンをdouble
へキャストします。
[in] | token | GetToken() で得られるトークンへの参照 |
[out] | number | 変換先の数値へのポインタ |
0 | 成功した場合 |
EINVAL | number がNULL であるか、数値以外を変換しようとした場合 |
EDOM | トークンの値が整数値で、9007199254740991LLより大きいか-9007199254740991LLより小さかった場合 |
JsonStreamParser.h の 536 行目に定義があります。
|
inlinestaticnoexcept |
数値トークンをfloat
へキャストします。
[in] | token | GetToken() で得られるトークンへの参照 |
[out] | number | 変換先の数値へのポインタ |
0 | 成功した場合 |
EINVAL | number がNULL であるか、数値以外を変換しようとした場合 |
ERANGE | 値がFLT_MAX より大きいかFLT_MIN よりより小さかった場合 |
EDOM | トークンの値が整数値で、1677215より大きいか-1677215より小さかった場合 |
ERANGE
又はEDOM
が返り値の場合は、*number
にキャストされた値が格納されています。 JsonStreamParser.h の 497 行目に定義があります。
|
inlinestaticnoexcept |
数値トークンをint32_t
へキャストします。
[in] | token | GetToken() で得られるトークンへの参照 |
[out] | number | 変換先の数値へのポインタ |
0 | 成功した場合 |
EINVAL | number がNULL であるか、数値以外を変換しようとした場合 |
ERANGE | 値がINT32_MAX 又はINT32_MIN より小さかった場合 |
EDOM | 浮動小数点数を変換しようとした場合でERANGE を返さない場合 |
ERANGE
又はEDOM
が返り値の場合は、*number
にキャストされた値が格納されています。 JsonStreamParser.h の 354 行目に定義があります。
|
inlinestaticnoexcept |
数値トークンをint64_t
へキャストします。
[in] | token | GetToken() で得られるトークンへの参照 |
[out] | number | 変換先の数値へのポインタ |
0 | 成功した場合 |
EINVAL | number がNULL であるか、数値以外を変換しようとした場合 |
ERANGE | 値がINT64_MAX 又はINT64_MIN より小さかった場合 |
EDOM | 浮動小数点数を変換しようとした場合でERANGE を返さない場合 |
ERANGE
又はEDOM
が返り値の場合は、*number
にキャストされた値が格納されています。 JsonStreamParser.h の 428 行目に定義があります。
|
staticnoexcept |
タイムスタンプをnlib_time
へ変換します。
[in] | token | GetToken() で得られるトークンへの参照 |
[out] | t | 変換先の時刻へのポインタ |
0 | 成功した場合 |
EINVAL | t がNULL であるか、タイムスタンプ以外を変換しようとした場合 |
ERANGE | 時刻がnlib_time に格納できる範囲ではない場合 |
|
inlinestaticnoexcept |
数値トークンをuint32_t
へキャストします。
[in] | token | GetToken() で得られるトークンへの参照 |
[out] | number | 変換先の数値へのポインタ |
0 | 成功した場合 |
EINVAL | number がNULL であるか、数値以外を変換しようとした場合 |
ERANGE | 値がUINT32_MAX より大きいか0より小さかった場合 |
EDOM | 浮動小数点数を変換しようとした場合でERANGE を返さない場合 |
ERANGE
又はEDOM
が返り値の場合は、*number
にキャストされた値が格納されています。 JsonStreamParser.h の 391 行目に定義があります。
|
inlinestaticnoexcept |
数値トークンをuint64_t
へキャストします。
[in] | token | GetToken() で得られるトークンへの参照 |
[out] | number | 変換先の数値へのポインタ |
0 | 成功した場合 |
EINVAL | number がNULL であるか、数値以外を変換しようとした場合 |
ERANGE | 値がUINT64_MAX より大きいか0より小さかった場合 |
EDOM | 浮動小数点数を変換しようとした場合でERANGE を返さない場合 |
ERANGE
又はEDOM
が返り値の場合は、*number
にキャストされた値が格納されています。 JsonStreamParser.h の 462 行目に定義があります。
© 2012-2017 Nintendo Co., Ltd. All rights reserved.