16 #ifndef INCLUDE_NN_NLIB_MSGPACK_JSONSTREAMGENERATOR_H_ 17 #define INCLUDE_NN_NLIB_MSGPACK_JSONSTREAMGENERATOR_H_ 20 #include "nn/nlib/Swap.h" 23 #if defined(_MSC_VER) && defined(nx_msgpack_EXPORTS) 24 #undef NLIB_VIS_PUBLIC 25 #define NLIB_VIS_PUBLIC NLIB_WINEXPORT 38 omit_utf8_checking(false),
48 kErrorEndArrayRequired,
49 kErrorEndArrayForbidden,
51 kErrorEndMapForbidden,
55 kErrorArrayOrMapRequired,
57 kErrorBinaryNotAvailable,
58 kErrorExtNotAvailable,
69 return Generate(written, str, n, obj, settings);
74 return Generate(written, str, N, obj, settings);
80 return Generate(written, str, N, obj, settings);
83 static std::pair<errno_t, size_t>
86 std::pair<errno_t, size_t> rval;
87 rval.first = Generate(&rval.second, str, n, obj, settings);
91 static std::pair<errno_t, size_t>
94 return Generate(&str[0], N, obj, settings);
96 static std::pair<errno_t, size_t>
99 return Generate(str, n, obj, settings);
102 static std::pair<errno_t, size_t>
105 return Generate(&str[0], N, obj, settings);
115 return Init(settings);
176 struct JsonStreamGeneratorPrivate;
177 JsonStreamGeneratorPrivate* prv_;
185 #if defined(_MSC_VER) && defined(nx_msgpack_EXPORTS) 186 #undef NLIB_VIS_PUBLIC 187 #define NLIB_VIS_PUBLIC NLIB_WINIMPORT 190 #endif // INCLUDE_NN_NLIB_MSGPACK_JSONSTREAMGENERATOR_H_ static errno_t Generate(size_t *written, nlib_utf8_t(&str)[N], const MpObject &obj, const JsonStreamGeneratorSettings &settings) noexcept
上記関数のテンプレートオーバーロードです。
bool strict
trueの場合は最初の出力が、配列かマップでない場合にエラーを発生させます。デフォルト値はfalseです。 ...
static errno_t Generate(size_t *written, nlib_utf8_t(&str)[N], const MpObject &obj) noexcept
上記関数のテンプレートオーバーロードです。
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
#define NLIB_SAFE_BOOL(class_name, exp)
クラス内に安全なoperator bool()を定義します。 可能であればC++11のexplicit boolを利用します。 ...
static std::pair< errno_t, size_t > Generate(nlib_utf8_t *str, size_t n, const MpObject &obj) noexcept
上記関数の引数省略版で、settingsをデフォルト値で渡します。
Error GetError() const noexcept
エラーを取得します。
constexpr JsonStreamGenerator() noexcept
デフォルトコンストラクタです。
static std::pair< errno_t, size_t > Generate(nlib_utf8_t(&str)[N], const MpObject &obj) noexcept
上記関数のテンプレートオーバーロードです。
bool omit_utf8_checking
trueの場合は文字列の出力時にUTF-8であるかどうかのチェックを省略します。デフォルト値はfalseです。 ...
MessagePack又はJSONを読み込むことで作成されるオブジェクトです。
static std::pair< errno_t, size_t > Generate(nlib_utf8_t *str, size_t n, const MpObject &obj, const JsonStreamGeneratorSettings &settings) noexcept
objの内容をJSON又はmsgpackで出力します。
bool msgpack
falseの場合はJsonStreamGeneratorはJSONを出力し、trueの場合はmsgpackを出力します。デフォルト値はfalse...
MessagePack, JSON及びCSVを読み込むと作成されるオブジェクトです。
static std::pair< errno_t, size_t > Generate(nlib_utf8_t(&str)[N], const MpObject &obj, const JsonStreamGeneratorSettings &settings) noexcept
上記関数のテンプレートオーバーロードです。
共通して使われることの多いストリーム関連のクラス群や各種コンテナ、及びガシェットクラスが実装されてい...
constexpr JsonStreamGeneratorSettings() noexcept
デフォルトコンストラクタです。 各データメンバにデフォルト値を設定します。
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
#define NLIB_CEXPR
利用可能であればconstexprが定義されます。そうでない場合は空文字列です。
~JsonStreamGenerator() noexcept
デストラクタです。
static errno_t Generate(size_t *written, nlib_utf8_t *str, size_t n, const MpObject &obj) noexcept
上記関数の引数省略版で、settingsをデフォルト値で渡します。
bool pretty_print
trueの場合はJSON出力時に整形されたJSONを出力します。デフォルト値はfalseです。
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
JsonStreamGeneratorの設定パラメータ群を格納する構造体です。
JsonStreamGenerator & EmptyMap() noexcept
空のマップを出力します。
JSON又はmsgpackを出力するためのクラスです。
出力ストリームの基底クラスです。このクラスを実体化することはできません。