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 で利用される型で、パーサーが読み込んだデータに対応するイベントです。 [詳解] | |
公開メンバ関数 | |
errno_t | Open (InputStream *stream) noexcept |
ストリームを指定してパースを開始します。 [詳解] | |
errno_t | Close () noexcept |
パーサーをクローズして初期化直後の状態に設定します。 [詳解] | |
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 | |
デストラクタです。 | |
JsonStreamParser (JsonStreamParser &&rhs) noexcept | |
ムーブコンストラクタです。 | |
JsonStreamParser & | operator= (JsonStreamParser &&rhs) noexcept |
ムーブ代入演算子です。 | |
errno_t | Init (const JsonStreamParserSettings &settings) noexcept |
動作オプションを指定して初期化を行います。成功した場合は0を返します。 [詳解] | |
errno_t | Init () noexcept |
上記関数の引数省略版で、settings をデフォルト値で渡します。 | |
エラーチェック | |
Error | GetError () const noexcept |
エラーを取得します。 [詳解] | |
operator bool () const | |
オブジェクトが初期化済みで内部でエラーが発生していなければtrue 、発生していればfalse を返します。 | |
静的公開メンバ関数 | |
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 |
上記関数の引数省略版で、nullptr を引数として渡します。 | |
static errno_t | Parse (JsonStreamParser *parser, UniquePtr< MpObject > &obj) noexcept |
上記関数の引数省略版で、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 |
上記関数の引数省略版で、nullptr を引数として渡します。 | |
static errno_t | Parse (UniquePtr< MpObject > &obj, const void *data, size_t n) noexcept |
上記関数の引数省略版で、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 |
上記関数の引数省略版で、nullptr を引数として渡します。 | |
static errno_t | Parse (UniquePtr< MpObject > &obj, const nlib_utf8_t *str) noexcept |
上記関数の引数省略版で、settings をデフォルト値で渡します。 | |
static std::pair< errno_t, UniquePtr< MpObject > > | Parse (JsonStreamParser *parser, bool peek, Detail *detail) noexcept |
JSON又はmsgpackをパースして、MpObject を作成して返します。 [詳解] | |
static std::pair< errno_t, UniquePtr< MpObject > > | Parse (JsonStreamParser *parser, bool peek) noexcept |
上記関数の引数省略版で、nullptr を引数として渡します。 | |
static std::pair< errno_t, UniquePtr< MpObject > > | Parse (JsonStreamParser *parser) noexcept |
上記関数の引数省略版で、false を引数として渡します。 | |
static std::pair< errno_t, UniquePtr< MpObject > > | Parse (const nlib_byte_t *first, const nlib_byte_t *last, const JsonStreamParserSettings &settings, Detail *detail) noexcept |
msgpackをパースして、MpObject を作成して返します。 [詳解] | |
static std::pair< errno_t, UniquePtr< MpObject > > | Parse (const nlib_byte_t *first, const nlib_byte_t *last, Detail *detail) noexcept |
上記関数の引数省略版で、settings をデフォルト値で渡します。 | |
static std::pair< errno_t, UniquePtr< MpObject > > | Parse (const nlib_byte_t *first, const nlib_byte_t *last, const JsonStreamParserSettings &settings) noexcept |
上記関数の引数省略版で、nullptr を引数として渡します。 | |
static std::pair< errno_t, UniquePtr< MpObject > > | Parse (const nlib_byte_t *first, const nlib_byte_t *last) noexcept |
上記関数の引数省略版で、settings をデフォルト値で渡します。 | |
static std::pair< errno_t, UniquePtr< MpObject > > | Parse (const MpWalker &walker, const JsonStreamParserSettings &settings, Detail *detail) noexcept |
Parse(walker.GetPtr(), walker.GetPtr() + walker.GetSize(), settings, detail) を実行します。 [詳解] | |
static std::pair< errno_t, UniquePtr< MpObject > > | Parse (const MpWalker &walker, Detail *detail) noexcept |
上記関数の引数省略版で、settings をデフォルト値で渡します。 | |
static std::pair< errno_t, UniquePtr< MpObject > > | Parse (const MpWalker &walker, const JsonStreamParserSettings &settings) noexcept |
上記関数の引数省略版で、nullptr を引数として渡します。 | |
static std::pair< errno_t, UniquePtr< MpObject > > | Parse (const MpWalker &walker) noexcept |
上記関数の引数省略版で、settings をデフォルト値で渡します。 | |
static std::pair< errno_t, UniquePtr< MpObject > > | Parse (const nlib_utf8_t *str, const JsonStreamParserSettings &settings, Detail *detail) noexcept |
JSONをパースして、MpObject を作成して返します。 [詳解] | |
static std::pair< errno_t, UniquePtr< MpObject > > | Parse (const nlib_utf8_t *str, const JsonStreamParserSettings &settings) noexcept |
上記関数の引数省略版で、nullptr を引数として渡します。 | |
static std::pair< errno_t, UniquePtr< MpObject > > | Parse (const nlib_utf8_t *str, Detail *detail) noexcept |
上記関数の引数省略版で、settings をデフォルト値で渡します。 | |
static std::pair< errno_t, UniquePtr< MpObject > > | Parse (const nlib_utf8_t *str) noexcept |
パースされた数値変換 | |
数値型のトークンを指定した型へ変換します。 | |
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 へ変換します。 [詳解] | |
static std::pair< errno_t, int32_t > | ToInt32 (const Token &token) noexcept |
数値トークンをint32_t へキャストします。 [詳解] | |
static std::pair< errno_t, uint32_t > | ToUint32 (const Token &token) noexcept |
数値トークンをuint32_t へキャストします。 [詳解] | |
static std::pair< errno_t, int64_t > | ToInt64 (const Token &token) noexcept |
数値トークンをint64_t へキャストします。 [詳解] | |
static std::pair< errno_t, uint64_t > | ToUint64 (const Token &token) noexcept |
数値トークンをuint64_t へキャストします。 [詳解] | |
static std::pair< errno_t, float > | ToFloat (const Token &token) noexcept |
数値トークンをfloat へキャストします。 [詳解] | |
static std::pair< errno_t, double > | ToDouble (const Token &token) noexcept |
数値トークンをdouble へキャストします。 [詳解] | |
static std::pair< errno_t, nlib_time > | ToTimestamp (const Token &token) noexcept |
タイムスタンプをnlib_time へ変換します。msgpackのTimestamp extension typeをパースした場合のみに変換されます。 [詳解] | |
JSON又はmsgpackをプル形式でパースするためのクラスです。
MpObject
として利用したい場合は以下のようにより簡単に書くことができます。 JsonStreamParser
を先にクローズ(もしくはデストラクト)する必要があることに注意してください。 JsonStreamParser.h の 52 行目に定義があります。
JsonStreamParser::Next()
及びToken
で利用される型で、パーサーが読み込んだデータに対応するイベントです。
JsonStreamParser.h の 54 行目に定義があります。
|
noexcept |
|
noexcept |
エラーを取得します。
JsonStreamParser
が定義するエラー値値 | 説明 |
---|---|
kOk | エラーは発生していません |
kErrorColon | ':'が見つかりませんでした |
kErrorComma | ','が見つかりませんでした |
kErrorQuote | '"'が見つかりませんでした |
kErrorKeyTooLong | 連想配列のキーが長すぎてトークンを格納するバッファに収まりませんでした |
kErrorNumberTooLong | 数値文字列が長すぎてトークンを格納するバッファに収まりませんでした |
kErrorArrayTooBig | 配列の大きさが指定された制限をオーバーしました |
kErrorMapTooBig | 連想配列の大きさが指定された制限をオーバーしました |
kErrorCharacter | 文字列にUTF-8でない文字が含まれています |
kErrorNumberRange | 数値が大きすぎるか小さすぎます |
kErrorDepth | 配列及び連想配列の深さが指定された制限をオーバーしました |
kErrorToken | その他読み込んだ文字列でエラーが発生しました |
kErrorStream | ストリームでエラーが発生しました |
|
inlinenoexcept |
|
noexcept |
動作オプションを指定して初期化を行います。成功した場合は0を返します。
[in] | settings | 動作オプション |
0 | 成功した場合 |
EALREADY | 既に初期化済みの場合 |
ENOMEM | 内部でメモリ確保に失敗した場合 |
EINVAL | 動作オプションの指定が不正だった場合 |
|
noexcept |
JSON又はmsgpackを読み込みパーサー内の状態を遷移します。
|
noexcept |
ストリームを指定してパースを開始します。
[in] | stream | JSON又はmsgpackを読み込むストリーム |
0 | 成功した場合 |
EINVAL | stream がNULL 、又はJsonStreamParser が未初期化な場合 |
ENONEM | メモリの確保に失敗した場合 |
EALREADY | 既にオープンされている場合 |
|
staticnoexcept |
|
staticnoexcept |
|
inlinestaticnoexcept |
JSONをパースして、MpObject
を作成します。
[out] | obj | パース結果が格納されるMpObject |
[in] | str | JSONが格納された文字列 |
[in] | settings | パーサーの設定パラーメータ |
[out] | detail | NULL でない場合、エラーが発生した箇所を示す文字列が格納されます。 |
settings.format
には、JsonStreamParserSettings::kFormatJson
が指定されているものとして動作します。 JsonStreamParser.h の 130 行目に定義があります。
|
staticnoexcept |
|
staticnoexcept |
msgpackをパースして、MpObject
を作成して返します。
[in] | first | msgpackバイト列の開始場所へのポインタ |
[in] | last | msgpackバイト列の終了場所へのポインタ |
[in] | settings | パーサーの設定パラーメータ |
[out] | detail | NULL でない場合、エラーが発生した箇所を示す文字列が格納されます。 |
unique_ptr<MpObject>
のペア
|
inlinestaticnoexcept |
Parse(walker.GetPtr(), walker.GetPtr() + walker.GetSize(), settings, detail)
を実行します。
[in] | walker | パースするmsgpackバイト列 |
[in] | settings | パーサーの設定パラーメータ |
[out] | detail | NULL でない場合、エラーが発生した箇所を示す文字列が格納されます。 |
unique_ptr<MpObject>
のペア JsonStreamParser.h の 179 行目に定義があります。
|
inlinestaticnoexcept |
JSONをパースして、MpObject
を作成して返します。
[in] | str | パースするJSON文字列 |
[in] | settings | パーサーの設定パラーメータ |
[out] | detail | NULL でない場合、エラーが発生した箇所を示す文字列が格納されます。 |
unique_ptr<MpObject>
のペア JsonStreamParser.h の 197 行目に定義があります。
|
inlinestaticnoexcept |
brief 上記関数の引数省略版で、settings
をデフォルト値で渡します。
JsonStreamParser.h の 215 行目に定義があります。
|
noexcept |
値、配列全体、連想配列全体を1つ読み飛ばします。
false
を返します。
|
inlinestaticnoexcept |
数値トークンをdouble
へキャストします。
[in] | token | GetToken() で得られるトークンへの参照 |
[out] | number | 変換先の数値へのポインタ |
0 | 成功した場合 |
EINVAL | number がNULL であるか、数値以外を変換しようとした場合 |
EDOM | トークンの値が整数値で、9007199254740991LLより大きいか-9007199254740991LLより小さかった場合 |
JsonStreamParser.h の 500 行目に定義があります。
|
inlinestaticnoexcept |
数値トークンをdouble
へキャストします。
[in] | token | GetToken() で得られるトークンへの参照 |
double
型の値のペアを返します。エラー値については以下の場合があります。 second
にキャストされた値が設定されます。 EINVAL
の場合は、数値以外、又はDBL_MIN
より小さいかDBL_MAX
より大きい値を変換しようとしていて、second
の値は無効です。 EDOM
の場合は、トークンの値が整数値で、9007199254740991LLより大きいか-9007199254740991LLより小さかった場合で、second
にはキャストされた値が設定されます。 JsonStreamParser.h の 254 行目に定義があります。
|
inlinestaticnoexcept |
数値トークンをfloat
へキャストします。
[in] | token | GetToken() で得られるトークンへの参照 |
[out] | number | 変換先の数値へのポインタ |
0 | 成功した場合 |
EINVAL | number がNULL であるか、数値以外を変換しようとした場合 |
ERANGE | 値がFLT_MAX より大きいかFLT_MIN よりより小さかった場合 |
EDOM | トークンの値が整数値で、1677215より大きいか-1677215より小さかった場合 |
ERANGE
又はEDOM
が返り値の場合は、*number
にキャストされた値が格納されています。 JsonStreamParser.h の 466 行目に定義があります。
|
inlinestaticnoexcept |
数値トークンをfloat
へキャストします。
[in] | token | GetToken() で得られるトークンへの参照 |
float
型の値のペアを返します。エラー値については以下の場合があります。 second
にキャストされた値が設定されます。 EINVAL
の場合は、数値以外、又はDBL_MIN
より小さいかDBL_MAX
より大きい値を変換しようとしていて、second
の値は無効です。 ERANGE
の場合は、値がFLT_MAX
より大きいかFLT_MIN
よりより小さかった場合で、second
にはキャストされた値が設定されます。 EDOM
の場合は、トークンの値が整数値で1677215より大きいか-1677215より小さかった場合か、double
型の浮動小数点数をキャストしようとした場合で、second
にはキャストされた値が設定されます。 double
型からfloat
型に変換され、EDOM
を返すことに注意してください。msgpackの場合はfloat 32
をパースした場合であればこのエラーを返すことはありません。 JsonStreamParser.h の 249 行目に定義があります。
|
inlinestaticnoexcept |
数値トークンをint32_t
へキャストします。
[in] | token | GetToken() で得られるトークンへの参照 |
[out] | number | 変換先の数値へのポインタ |
0 | 成功した場合 |
EINVAL | number がNULL であるか、数値以外を変換しようとした場合 |
ERANGE | 値がINT32_MAX より大きいか又はINT32_MIN より小さかった場合 |
EDOM | 浮動小数点数を変換しようとした場合でERANGE を返さない場合 |
ERANGE
又はEDOM
が返り値の場合は、*number
にキャストされた値が格納されています。 JsonStreamParser.h の 329 行目に定義があります。
|
inlinestaticnoexcept |
数値トークンをint32_t
へキャストします。
[in] | token | GetToken() で得られるトークンへの参照 |
int32_t
型の値のペアを返します。エラー値については以下の場合があります。 second
にキャストされた値が設定されます。 EINVAL
の場合は、数値以外を変換しようとしていて、second
の値は無効です。 ERANGE
の場合は、値がINT32_MAX
より大きいかINT32_MIN
より小さかった場合で、second
にはキャストされた値が設定されます。 EDOM
の場合は、浮動小数点数を変換し、且つERANGE
を返すケースに該当する場合ではなかった場合で、second
にはキャストされた値が設定されます。 JsonStreamParser.h の 229 行目に定義があります。
|
inlinestaticnoexcept |
数値トークンをint64_t
へキャストします。
[in] | token | GetToken() で得られるトークンへの参照 |
[out] | number | 変換先の数値へのポインタ |
0 | 成功した場合 |
EINVAL | number がNULL であるか、数値以外を変換しようとした場合 |
ERANGE | 値がINT64_MAX 又はINT64_MIN より小さかった場合 |
EDOM | 浮動小数点数を変換しようとした場合でERANGE を返さない場合 |
ERANGE
又はEDOM
が返り値の場合は、*number
にキャストされた値が格納されています。 JsonStreamParser.h の 399 行目に定義があります。
|
inlinestaticnoexcept |
数値トークンをint64_t
へキャストします。
[in] | token | GetToken() で得られるトークンへの参照 |
int64_t
型の値のペアを返します。エラー値については以下の場合があります。 second
にキャストされた値が設定されます。 EINVAL
の場合は、数値以外を変換しようとしていて、second
の値は無効です。 ERANGE
の場合は、値がINT64_MAX
より大きいかINT64_MIN
より小さかった場合で、second
にはキャストされた値が設定されます。 EDOM
の場合は、浮動小数点数を変換し、且つERANGE
を返すケースに該当する場合ではなかった場合で、second
にはキャストされた値が設定されます。 JsonStreamParser.h の 239 行目に定義があります。
|
staticnoexcept |
タイムスタンプをnlib_time
へ変換します。
[in] | token | GetToken() で得られるトークンへの参照 |
[out] | t | 変換先の時刻へのポインタ |
0 | 成功した場合 |
EINVAL | t がNULL であるか、タイムスタンプ以外を変換しようとした場合 |
ERANGE | 時刻がnlib_time に格納できる範囲ではない場合 |
|
inlinestaticnoexcept |
タイムスタンプをnlib_time
へ変換します。msgpackのTimestamp extension typeをパースした場合のみに変換されます。
[in] | token | GetToken() で得られるトークンへの参照 |
nlib_time
型の値のペアを返します。エラー値については以下の場合があります。 second
にキャストされた値が設定されます。 EINVAL
の場合は、タイムスタンプ以外を変換しようとした場合で、second
の値は無効です。 ERANGE
の場合は、時刻がnlib_time
に格納できる範囲ではない場合で、second
の値は無効です。 JsonStreamParser.h の 259 行目に定義があります。
|
inlinestaticnoexcept |
数値トークンをuint32_t
へキャストします。
[in] | token | GetToken() で得られるトークンへの参照 |
[out] | number | 変換先の数値へのポインタ |
0 | 成功した場合 |
EINVAL | number がNULL であるか、数値以外を変換しようとした場合 |
ERANGE | 値がUINT32_MAX より大きいか0より小さかった場合 |
EDOM | 浮動小数点数を変換しようとした場合でERANGE を返さない場合 |
ERANGE
又はEDOM
が返り値の場合は、*number
にキャストされた値が格納されています。 JsonStreamParser.h の 365 行目に定義があります。
|
inlinestaticnoexcept |
数値トークンをuint32_t
へキャストします。
[in] | token | GetToken() で得られるトークンへの参照 |
uint32_t
型の値のペアを返します。エラー値については以下の場合があります。 second
にキャストされた値が設定されます。 EINVAL
の場合は、数値以外を変換しようとしていて、second
の値は無効です。 ERANGE
の場合は、値がUINT32_MAX
より大きいか0より小さかった場合で、second
にはキャストされた値が設定されます。 EDOM
の場合は、浮動小数点数を変換し、且つERANGE
を返すケースに該当する場合ではなかった場合で、second
にはキャストされた値が設定されます。 JsonStreamParser.h の 234 行目に定義があります。
|
inlinestaticnoexcept |
数値トークンをuint64_t
へキャストします。
[in] | token | GetToken() で得られるトークンへの参照 |
[out] | number | 変換先の数値へのポインタ |
0 | 成功した場合 |
EINVAL | number がNULL であるか、数値以外を変換しようとした場合 |
ERANGE | 値がUINT64_MAX より大きいか0より小さかった場合 |
EDOM | 浮動小数点数を変換しようとした場合でERANGE を返さない場合 |
ERANGE
又はEDOM
が返り値の場合は、*number
にキャストされた値が格納されています。 JsonStreamParser.h の 433 行目に定義があります。
|
inlinestaticnoexcept |
数値トークンをuint64_t
へキャストします。
[in] | token | GetToken() で得られるトークンへの参照 |
uint64_t
型の値のペアを返します。エラー値については以下の場合があります。 second
にキャストされた値が設定されます。 EINVAL
の場合は、数値以外を変換しようとしていて、second
の値は無効です。 ERANGE
の場合は、値がUINT64_MAX
より大きいか0より小さかった場合で、second
にはキャストされた値が設定されます。 EDOM
の場合は、浮動小数点数を変換し、且つERANGE
を返すケースに該当する場合ではなかった場合で、second
にはキャストされた値が設定されます。 JsonStreamParser.h の 244 行目に定義があります。
© Nintendo Co., Ltd. All rights reserved.