nlib
|
MessagePack又はJSONを読み込むことで作成されるオブジェクトです。 [詳解]
#include "nn/nlib/msgpack/MpObject.h"
公開型 | |
enum | ObjectType { kNil = 0, kBoolean, kUint64, kInt64, kFloat, kDouble, kString, kArray, kMap } |
MpObject に格納されているオブジェクトの型情報です。 [詳解] | |
公開メンバ関数 | |
errno_t | Resize (uint32_t n) |
配列や連想配列や文字列やバイナリのリサイズをします。 [詳解] | |
MpObject * | Clone () const noexcept |
オブジェクトの複製を作成します。 [詳解] | |
uint32_t | GetSize () const noexcept |
配列や連想配列や文字列やバイナリの場合にそのサイズを返します。 [詳解] | |
配列型(kArray型)の利用 | |
MpObject * | GetArrayItem (size_t n) noexcept |
インデックスを指定して配列内のオブジェクトを取得します。 [詳解] | |
const MpObject * | GetArrayItem (size_t n) const noexcept |
GetArrayItem(size_t n) と同様です。 | |
MpObject & | operator[] (size_t n) |
配列である場合に配列の要素への参照を返します。 [詳解] | |
MpObject * | SwapArrayItem (size_t n, MpObject *obj) noexcept |
obj の内容と配列内のオブジェクトの内容を交換します。 [詳解] | |
MpObject * | AppendArrayItem () noexcept |
オブジェクトが配列を格納している場合、要素を末尾に追加します。 [詳解] | |
MpObject * | InsertArrayItem (size_t n) noexcept |
オブジェクトが配列を格納している場合、要素を指定されたインデックスの場所に挿入します。 [詳解] | |
errno_t | GetArrayItem (size_t n, MpObject **obj) noexcept |
インデックスを指定して配列内のオブジェクトを取得します。 [詳解] | |
errno_t | GetArrayItem (size_t n, const MpObject **obj) const noexcept |
GetArrayItem(size_t n, MpObject** obj) と同様です。 | |
errno_t | RemoveArrayItem (size_t n, MpObject *obj) noexcept |
インデックスを指定して配列内のオブジェクトを削除します。 [詳解] | |
errno_t | InitArray (uint32_t n) noexcept |
オブジェクトをn 個の要素を持つ配列として初期化します。 [詳解] | |
連想配列型(kMap型)の利用 | |
const MpObject * | GetMapItem (const nlib_utf8_t *str) const noexcept |
GetMapItem(const nlib_utf8_t* str) と同様です。 | |
MpObject * | GetMapItem (const nlib_utf8_t *str) noexcept |
文字列を指定して連想配列内のオブジェクトを取得します。 [詳解] | |
template<class STDSTRING > | |
const MpObject * | GetMapItem (const STDSTRING &str) const noexcept |
GetMapItem(const STDSTRING& str) と同様です。 | |
template<class STDSTRING > | |
MpObject * | GetMapItem (const STDSTRING &str) noexcept |
文字列を指定して連想配列内のオブジェクトを取得します。 [詳解] | |
template<class STDSTRING > | |
MpObject * | SwapMapItem (const STDSTRING &key, MpObject *obj) noexcept |
obj の内容と連想配列内のオブジェクトの内容を交換します。 [詳解] | |
MpObject * | SwapMapItem (const nlib_utf8_t *key, MpObject *obj) noexcept |
obj の内容と連想配列内のオブジェクトの内容を交換します。 [詳解] | |
MpObjectKv * | AppendMapItem () noexcept |
オブジェクトが連想配列を格納している場合、要素を末尾に追加します。 [詳解] | |
errno_t | GetMapItem (size_t n, MpObjectKv **obj) noexcept |
インデックスを指定して連想配列内のオブジェクトを取得します。 [詳解] | |
errno_t | GetMapItem (size_t n, const MpObjectKv **obj) const noexcept |
GetMapItem(size_t n, MpObjectKv** obj) と同様です。 | |
errno_t | GetMapItem (const nlib_utf8_t *str, size_t n, MpObjectKv **obj) noexcept |
キーとなる非ヌル終端の文字列を指定して連想配列のキーと値のペアを取得します。 [詳解] | |
errno_t | RemoveMapItem (size_t n, MpObjectKv *kv) noexcept |
インデックスを指定して連想配列内のキーとオブジェクトを削除します。 [詳解] | |
errno_t | RemoveMapItem (const nlib_utf8_t *key, MpObjectKv *kv) noexcept |
キーを指定して連想配列内のキーとオブジェクトを削除します。 [詳解] | |
template<class STDSTRING > | |
errno_t | RemoveMapItem (const STDSTRING &str, MpObjectKv *kv) noexcept |
キーを指定して連想配列内のキーとオブジェクトを削除します。 [詳解] | |
errno_t | InitMap (uint32_t n) noexcept |
オブジェクトをn 個の要素を持つ連想配列として初期化します。 [詳解] | |
基本的なメンバ関数 | |
MpObject () noexcept | |
デフォルトコンストラクタです。nil 型に設定されます。 | |
~MpObject () noexcept | |
デストラクタです。 | |
MpObject (MpObject &&rhs) noexcept | |
ムーブコンストラクタです。C++11の利用時に有効です。 | |
MpObject & | operator= (MpObject &&rhs) noexcept |
ムーブ代入演算子です。C++11の利用時に有効です。 | |
MpObject (MpObject &rhs, move_tag) noexcept | |
ムーブコンストラクタに相当します。 | |
MpObject & | assign (MpObject &rhs, move_tag) noexcept |
swap を利用したムーブにより代入します。 | |
void | swap (MpObject &rhs) noexcept |
オブジェクトの中身をスワップします。 [詳解] | |
template<class T > | |
MpObject (const T &x) | |
T型のオブジェクトをボックス化するコンストラクタです。 [詳解] | |
文字列型(STRING型)の利用 | |
nlib_utf8_t * | GetString () noexcept |
オブジェクトから文字列を取得します。 | |
const nlib_utf8_t * | GetString () const noexcept |
オブジェクトから文字列を取得します。 | |
errno_t | InitString (uint32_t n) noexcept |
オブジェクトを文字列として初期化します。 [詳解] | |
errno_t | InitString (const nlib_utf8_t *str, uint32_t n) noexcept |
オブジェクトを文字列として初期化します。 [詳解] | |
errno_t | InitString (const nlib_utf8_t *str) noexcept |
オブジェクトを文字列として初期化します。 [詳解] | |
バイナリ型(BINARY型)の利用 | |
void * | GetBinary (uint32_t *n) noexcept |
オブジェクトからバイナリを取得します。 | |
const void * | GetBinary (uint32_t *n) const noexcept |
オブジェクトからバイナリを取得します。 | |
errno_t | InitBinary (uint32_t n) noexcept |
オブジェクトをバイナリとして初期化します。 [詳解] | |
errno_t | InitBinary (const void *p, uint32_t n) noexcept |
オブジェクトをバイナリとして初期化します。 [詳解] | |
拡張データ型(<tt>kExt</tt> | |
void * | GetExt (int8_t *tp, uint32_t *n) noexcept |
オブジェクトから拡張データ型を取得します。 [詳解] | |
const void * | GetExt (int8_t *tp, uint32_t *n) const noexcept |
オブジェクトから拡張データ型を取得します。 | |
std::pair< errno_t, nlib_time > | GetTimestamp () const noexcept |
オブジェクトからタイムスタンプを取得します。 [詳解] | |
errno_t | InitExt (int8_t tp, uint32_t n) noexcept |
オブジェクトを拡張データ型として初期化します。 [詳解] | |
errno_t | InitExt (int8_t tp, const void *p, uint32_t n) noexcept |
オブジェクトを拡張データ型として初期化します。 [詳解] | |
errno_t | InitTimestamp (nlib_time t) noexcept |
オブジェクトを拡張データ型のタイムスタンプとして初期化します。 [詳解] | |
ボックス化 | |
数値・文字列・ベクタ等をボックス化して | |
errno_t | Box (const nlib_utf8_t *str) noexcept |
文字列をボックス化します。 [詳解] | |
template<uint32_t n> | |
errno_t | Box (const nlib_utf8_t(&str)[n]) noexcept |
文字列をボックス化します。 [詳解] | |
template<class T , uint32_t n> | |
errno_t | Box (const T(&vec)[n]) |
配列をボックス化します。 [詳解] | |
template<class T > | |
errno_t | Box (const T &v) |
オブジェクトをボックス化します。 [詳解] | |
template<class T > | |
MpObject & | operator= (const T &x) |
値をMpObject に代入します。 [詳解] | |
アンボックス化 | |
MpObjectのインスタンスをアンボックス化して数値・文字列・ベクタ等に格納します。 | |
template<class T , size_t n> | |
errno_t | Unbox (T(&a)[n]) const |
オブジェクトの値をアンボックス化します。 [詳解] | |
template<size_t n> | |
errno_t | Unbox (nlib_utf8_t(&str)[n]) const noexcept |
Unbox(T (&a)[n]) を御覧ください。 | |
template<class T > | |
errno_t | Unbox (T *a, size_t n) const |
配列データをアンボックス化します。 [詳解] | |
errno_t | Unbox (nlib_utf8_t *str, size_t n) const noexcept |
Unbox(T* a, size_t n) の説明を御覧ください。 | |
template<class T > | |
errno_t | Unbox (T v) const |
オブジェクトをアンボックス化します。 [詳解] | |
型の取得と判定 | |
ObjectType | GetType () const noexcept |
オブジェクトの型を返します。 [詳解] | |
bool | IsNil () const noexcept |
格納されている値ががnil であるかどうかを調べます。 | |
bool | IsBoolean () const noexcept |
格納されている値が真偽値であるかどうかを調べます。 | |
bool | IsInteger () const noexcept |
格納されている値が整数値であるかどうかを調べます。 | |
bool | IsFloat () const noexcept |
格納されている値が単精度浮動小数点型であるかどうかを調べます。 | |
bool | IsDouble () const noexcept |
格納されている値が倍精度浮動小数点型であるかどうかを調べます。 | |
bool | IsString () const noexcept |
格納されている値が文字列であるかどうかを調べます。 | |
bool | IsBinary () const noexcept |
格納されている値がバイナリであるかどうかを調べます。 | |
bool | IsExt () const noexcept |
格納されている値が拡張データであるかどうかを調べます。 | |
bool | IsArray () const noexcept |
格納されている値が配列であるかどうかを調べます。 | |
bool | IsMap () const noexcept |
格納されている値が連想配列であるかどうかを調べます。 | |
静的公開メンバ関数 | |
static bool | IsJsonPointer (const nlib_utf8_t *first, const nlib_utf8_t *last) noexcept |
文字列を指定してJSON Pointerであるかどうかを判定します。 [詳解] | |
static bool | IsJsonPointer (const nlib_utf8_t *str) noexcept |
IsJsonPointer(str, str + nlib_strlen(str)) と等価です。 | |
static errno_t | ResolveJsonPointer (MpObject **result, MpObject *root, const nlib_utf8_t *json_pointer) noexcept |
json_pointer によって参照されるMpObject を*result に格納します。 [詳解] | |
static errno_t | DigByJsonPointer (MpObject **result, MpObject *root, const nlib_utf8_t *json_pointer) noexcept |
json_pointer によってMpObject を参照しますが、新たにMpObject を追加する場合があります。 [詳解] | |
static errno_t | RemoveByJsonPointer (MpObjectKv *removed, MpObject *root, const nlib_utf8_t *json_pointer) noexcept |
json_pointer によって参照されるMpObject を削除してremoved に格納します。 [詳解] | |
MessagePack又はJSONを読み込むことで作成されるオブジェクトです。
Box
メソッドによるボックス化、又はJSONやMessagePackのデータを読み込んで作成される動的型つきオブジェクトです。 静的型オブジェクトへの変換はUnbox
メソッドを用いて行います。 デフォルトでBox化とUnbox化に対応している型は、各種数値型, 配列, 文字列, bool
, nil
, std::pair
, std::vector
, std::map
, std::string
です。 C++11においては、std::array
, std::unordered_map
, std::tuple
にも対応します。 template<class T> errno_t Box(MpObject* obj, const T& v)
template<class T> errno_t Unbox(const MpObject* obj, T* v)
0
以外を返す必要があります。 errno_t
型を返す関数は、0
以外には以下の値を返す可能性があります。 EINVAL
: 引数が不正です ENOMEM
: メモリの確保に失敗しました EACCES
: 型変換に失敗しました。 ERANGE
: 配列等のインデックスが範囲外です。 EILSEQ
: データにエラーがあります。 MpObject.h の 95 行目に定義があります。
MpObject
に格納されているオブジェクトの型情報です。
GetType()
で取得できます。 列挙値 | |
---|---|
kNil |
|
kBoolean | 真偽値型を表します。内部表現は |
kUint64 | 非負整数型を表します。内部表現は |
kInt64 | 整数型を表します。内部表現は |
kFloat | 浮動小数型を表します。内部表現は |
kDouble | 浮動小数型を表します。内部表現は |
kString | バイト列(文字列)を表します。 |
kArray | 配列を表します。内部では |
kMap | 連想配列を表します。内部では |
MpObject.h の 377 行目に定義があります。
|
inlineexplicit |
T型のオブジェクトをボックス化するコンストラクタです。
T | ボックス化対象の型 |
[in] | x | MpObject へボックス化する値 |
MpObject.h の 198 行目に定義があります。
|
noexcept |
オブジェクトが配列を格納している場合、要素を末尾に追加します。
NULL
|
noexcept |
オブジェクトが連想配列を格納している場合、要素を末尾に追加します。
NULL
|
noexcept |
文字列をボックス化します。
[in] | str | 文字列 |
kString
型のデータとして格納されます。
|
noexcept |
文字列をボックス化します。
n | 配列のサイズ |
[in] | str | ヌル終端する文字列 |
kString
型のデータとして格納されます。 MpObject.h の 921 行目に定義があります。
errno_t nn::nlib::msgpack::MpObject::Box | ( | const T(&) | vec[n] | ) |
配列をボックス化します。
[in] | vec | ボックス化する配列 |
T | 要素の型 |
n | 要素数 |
Tの型 | 説明 |
---|---|
nlib_utf8_t | 文字列としてヌル文字までの文字列がMpObject::kString 型にボックス化される。 |
それ以外 | 配列としてMpObject::kArray 型にボックス化される。 |
MpObject.h の 930 行目に定義があります。
|
inline |
オブジェクトをボックス化します。
T | ボックス化するオブジェクトの型 |
[in] | v | ボックス化するオブジェクト |
T
の型により動作は異なります。以下の表に動作の違いを示します。 Tの型 | 説明 |
---|---|
nil | MpObject::kNil 型として格納されます。この操作でエラーを返すことはありません。 |
bool | MpObject::kBoolean 型として格納されます。この操作でエラーを返すことはありません。 |
符号つき整数型 | MpObject::kInt64 型として格納されます。この操作でエラーを返すことはありません。 |
符号なし整数型 | MpObject::kUint64 型として格納されます。この操作でエラーを返すことはありません。 |
float | MpObject::kFloat 型として格納されます。この操作でエラーを返すことはありません。 |
double | MpObject::kDouble 型として格納されます。この操作でエラーを返すことはありません。 |
std::string | MpObject::kString 型として格納されます。 |
std::vector | MpObject::kArray 型として格納されます。 |
Nlist | MpObject::kArray 型として格納されます。 |
std::pair | サイズが2のMpObject::kArray 型として格納されます。 |
std::map | MpObject::kMap 型として格納されます。 |
std::array | MpObject::kArray 型として格納されます。 |
std::tuple | MpObject::kArray 型として格納されます。 |
std::unordered_map | MpObject::kMap 型として格納されます。 |
char
型の配列のみは文字列としてボックス化されます。 MpObject.h の 329 行目に定義があります。
|
noexcept |
オブジェクトの複製を作成します。
NULL
を返します。
|
staticnoexcept |
json_pointer
によってMpObject
を参照しますが、新たにMpObject
を追加する場合があります。
[in,out] | result | json_pointer によって参照されたオブジェクト |
[in] | root | json_pointer による参照の起点となる根元のオブジェクト |
[in] | json_pointer | JSON Pointerの文字列 |
0 | json_pointer の最後の参照トークンが辿れず、辿れるように新たにMpObject が作成された場合 |
EEXIST | 既にjson_pointer が指し示すMpObject が存在する場合 |
EINVAL | result , root , 又はjson_pointer がNULL の場合 |
EILSEQ | json_pointer の文法が間違っていた場合 |
ENOENT | json_pointer 内の最後でない参照トークンを辿ることができなかった場合 |
ENOMEM | メモリの確保に失敗した場合 |
MpObject
を取得します。 ただし、json_pointer
の末端に対応するMpObject
が存在しない場合は新たにMpObject
が作成されます。 戻り値が0かEEXIST
の場合は*result
にjson_pointer
を辿った先のMpObject
へのポインタが設定されます。 json_pointer
の末端の参照トークンによって配列が参照される場合、MpObject
が配列に挿入されること json_pointer
の末端以外の参照トークンを辿れなかった場合はENOENT
エラーになること。 つまり、以下に示す2つのJSONに対して操作を行うとして、json_pointer
に"/a/b"を指定した場合、1番目のJSONに対しては操作が成功し、2番目のJSONに対してはエラーになるということ
|
inlinenoexcept |
インデックスを指定して配列内のオブジェクトを取得します。
[in] | n | 配列のインデックス |
MpObject
)へのポインタNULL
を返します。 MpObject.h の 119 行目に定義があります。
|
noexcept |
インデックスを指定して配列内のオブジェクトを取得します。
[in] | n | 配列のインデックス |
[out] | obj | オブジェクトのポインタ(MpObject )が格納されるポインタ |
|
inlinenoexcept |
オブジェクトから拡張データ型を取得します。
[out] | tp | データ型を示す整数 |
[out] | n | バイナリのサイズ |
MpObject.h の 246 行目に定義があります。
|
noexcept |
文字列を指定して連想配列内のオブジェクトを取得します。
[in] | str | 連想配列のキー文字列 |
MpObject
)へのポインタNULL
を返します。
|
inlinenoexcept |
文字列を指定して連想配列内のオブジェクトを取得します。
STDSTRING | std::stringと互換性のある型 |
[in] | str | 連想配列のキー文字列 |
MpObject
)へのポインタGetMapItem(size_t n, MpObjectKv** obj)
を利用する必要があります。 また、探索は線形に行われます。取得に失敗した場合はNULL
を返します。 MpObject.h の 147 行目に定義があります。
|
noexcept |
インデックスを指定して連想配列内のオブジェクトを取得します。
[in] | n | 連想配列のインデックス |
[out] | obj | 連想配列のキーと値のペア(MpObjectKv* )が格納されるポインタ |
|
inlinenoexcept |
キーとなる非ヌル終端の文字列を指定して連想配列のキーと値のペアを取得します。
[in] | str | 連想配列のキー文字列 |
[in] | n | 文字列の長さ |
[out] | obj | 連想配列のキーと値のペア(MpObjectKv* )が格納されるポインタ |
0 | 成功した場合 |
EINVAL | str 又はobj がNULL だった場合 |
EACCES | このオブジェクトが連想配列でなかった場合 |
ENOENT | 与えられたキー文字列に対応する値が見つからなかった場合 |
MpObject.h の 205 行目に定義があります。
|
inlinenoexcept |
配列や連想配列や文字列やバイナリの場合にそのサイズを返します。
strlen
の値と一致しますが、文字列の途中にヌル文字が存在する場合は一致しません。 MpObject.h の 414 行目に定義があります。
|
noexcept |
オブジェクトからタイムスタンプを取得します。
|
inlinenoexcept |
|
noexcept |
オブジェクトをn
個の要素を持つ配列として初期化します。
[in] | n | 初期化する配列のサイズ |
|
noexcept |
オブジェクトをバイナリとして初期化します。
[in] | n | バイナリのサイズ |
|
noexcept |
オブジェクトをバイナリとして初期化します。
[in] | p | バイナリへのポインタ |
[in] | n | バイナリのサイズ |
|
noexcept |
オブジェクトを拡張データ型として初期化します。
[in] | tp | データ型を示す整数 |
[in] | n | バイナリのサイズ |
|
noexcept |
オブジェクトを拡張データ型として初期化します。
[in] | tp | データ型を示す整数 |
[in] | p | バイナリへのポインタ |
[in] | n | バイナリのサイズ |
|
noexcept |
オブジェクトをn
個の要素を持つ連想配列として初期化します。
[in] | n | 初期化する連想配列のサイズ |
|
noexcept |
オブジェクトを文字列として初期化します。
[in] | n | 初期化する文字列の(終端文字を含まない)長さ |
|
noexcept |
オブジェクトを文字列として初期化します。
[in] | str | 文字列 |
[in] | n | 初期化する文字列の(終端文字を含まない)長さ |
|
inlinenoexcept |
|
noexcept |
オブジェクトを拡張データ型のタイムスタンプとして初期化します。
[in] | t | 時刻 |
|
noexcept |
オブジェクトが配列を格納している場合、要素を指定されたインデックスの場所に挿入します。
[in] | n | 配列のインデックス |
NULL
|
staticnoexcept |
文字列を指定してJSON Pointerであるかどうかを判定します。
[in] | first | 検査する文字列の先頭 |
[in] | last | 検査する文字列の末尾 |
true
なら文字列はJSON Pointer
|
inline |
値をMpObject
に代入します。
T | 代入するオブジェクトの型 |
[in] | x | 代入する値 |
*this
の参照を返します。MpObject.h の 369 行目に定義があります。
|
inline |
配列である場合に配列の要素への参照を返します。
[in] | n | 配列のインデックス |
MpObject
への参照MpObject.h の 127 行目に定義があります。
|
noexcept |
インデックスを指定して配列内のオブジェクトを削除します。
[in] | n | 配列のインデックス |
[in,out] | obj | NULL でない場合は削除されたオブジェクトが格納されます。 |
|
staticnoexcept |
json_pointer
によって参照されるMpObject
を削除してremoved
に格納します。
[in,out] | removed | json_pointer によって参照されたキーと値のペア |
[in] | root | json_pointer による参照の起点となる根元のオブジェクト |
[in] | json_pointer | JSON Pointerの文字列 |
0 | 成功した場合 |
ECHILD | json_pointer が空文字列なので、root が削除された場合 |
EINVAL | removed , root , 又はjson_pointer がNULL の場合 |
EILSEQ | json_pointer の文法が間違っていた場合 |
ENOENT | json_pointer によって参照されるオブジェクトが存在しない場合 |
MpObject
を削除します。 削除されたキーと値のペアはremoved
に格納されます。 配列の要素が削除される場合には、removed->first
にインデックスがボックス化された状態で格納され、指定されたインデックスより先の要素は1つずつ先頭へずらされることに注意してください。
|
noexcept |
インデックスを指定して連想配列内のキーとオブジェクトを削除します。
[in] | n | 連想配列のインデックス |
[in,out] | kv | NULL でない場合は削除されたキーと値のペアが格納されます。 |
|
noexcept |
キーを指定して連想配列内のキーとオブジェクトを削除します。
[in] | key | 連想配列のキー文字列 |
[in,out] | kv | NULL でない場合は削除されたキーと値のペアが格納されます。 |
|
inlinenoexcept |
キーを指定して連想配列内のキーとオブジェクトを削除します。
STDSTRING | std::stringと互換性のある型 |
[in] | key | 連想配列のキー文字列 |
[in,out] | kv | NULL でない場合は削除されたキーと値のペアが格納されます。 |
MpObject.h の 225 行目に定義があります。
nn::nlib::msgpack::MpObject::Resize | ( | uint32_t | n | ) |
配列や連想配列や文字列やバイナリのリサイズをします。
[in] | n | リサイズ後のサイズ |
|
staticnoexcept |
json_pointer
によって参照されるMpObject
を*result
に格納します。
[in,out] | result | json_pointer によって参照されたオブジェクト |
[in] | root | json_pointer による参照の起点となる根元のオブジェクト |
[in] | json_pointer | JSON Pointerの文字列 |
0 | 成功した場合 |
EINVAL | result , root , 又はjson_pointer がNULL の場合 |
EILSEQ | json_pointer の文法が間違っていた場合 |
ENOENT | json_pointer によって参照されるオブジェクトが存在しない場合 |
MpObject
を取得します。 '/'で区切られた文字列は参照トークンと呼ばれ、ファイルパスのような文字列により、JSON内の場所を指定するようになっています。
|
inlinenoexcept |
オブジェクトの中身をスワップします。
[in,out] | rhs | スワップするオブジェクト |
MpObject
にはコピーコンストラクタ及び代入演算子が定義されていないので、オブジェクトを設定するにはswap
を用いる必要があります。 MpObject.h の 186 行目に定義があります。
obj
の内容と配列内のオブジェクトの内容を交換します。
[in] | n | 配列のインデックス |
[in,out] | obj | スワップするオブジェクトへのポインタ |
MpObject
にはコピーコンストラクタ及び代入演算子が定義されていないので、オブジェクトを設定するにはswap
を用いる必要があります。 戻り値は配列内のオブジェクトへのポインタです(つまり元のobj
の中身が入っている)。 対応する配列の要素が存在しない場合はNULL
を返します。 MpObject.h の 978 行目に定義があります。
|
inlinenoexcept |
obj
の内容と連想配列内のオブジェクトの内容を交換します。
STDSTRING | std::stringと互換性のある型 |
[in] | key | キー文字列 |
[in,out] | obj | スワップするオブジェクトへのポインタ |
MpObject
にはコピーコンストラクタ及び代入演算子が定義されていないので、オブジェクトを設定するにはswap
を用いる必要があります。 戻り値は連想配列内のオブジェクトへのポインタです(つまり元のobj
の中身が入っている)。 対応する連想配列の要素が存在しない場合はNULL
を返します。 MpObject.h の 987 行目に定義があります。
|
inlinenoexcept |
obj
の内容と連想配列内のオブジェクトの内容を交換します。
[in] | key | キー文字列 |
[in,out] | obj | スワップするオブジェクトへのポインタ |
MpObject
にはコピーコンストラクタ及び代入演算子が定義されていないので、オブジェクトを設定するにはswap
を用いる必要があります。 戻り値は連想配列内のオブジェクトへのポインタです(つまり元のobj
の中身が入っている)。 対応する連想配列の要素が存在しない場合はNULL
を返します。 MpObject.h の 1005 行目に定義があります。
|
inline |
オブジェクトの値をアンボックス化します。
[out] | a | アンボックスされたデータが格納される配列 |
T | アンボックス後のオブジェクトの型 |
n | 配列の要素数 |
Tの型 | 説明 |
---|---|
nlib_utf8_t | MpObject::kString 型のオブジェクトが文字列にアンボックス化される。末尾のヌル文字を格納する容量が必要です。 |
それ以外 | 配列としてMpObject::kArray 型にボックス化される。 |
MpObject.h の 338 行目に定義があります。
errno_t nn::nlib::msgpack::MpObject::Unbox | ( | T * | a, |
size_t | n | ||
) | const |
配列データをアンボックス化します。
T | アンボックスされた配列データを書きこむオブジェクト(へのポインタ)の型 |
[out] | a | アンボックスされたデータを書きこむオブジェクト(へのポインタ) |
[in] | n | 要素数 |
Tの型 | 説明 |
---|---|
void | バイト列データとしてアンボックス化します。 |
nlib_utf8_t | 文字列データとしてアンボックス化します。ヌル文字が追加されるのでヌル終端するだけの容量が必要です。 |
その他 | オブジェクトの配列としてアンボックス化します。 |
MpObject.h の 958 行目に定義があります。
|
inline |
オブジェクトをアンボックス化します。
T | アンボックスされたデータを書きこむオブジェクト(へのポインタ)の型 |
[out] | v | アンボックスされたデータを書きこむオブジェクト(へのポインタ) |
T
の型により動作は異なります。下記の表に動作の違いを示します。 Tの型 | 説明 |
---|---|
bool* | MpObject::kBoolean 型ならばbool値が格納されます。 |
整数型へのポインタ | MpObject::kInt64 又はMpObject::kUint64 型ならば整数値が格納されます。オーバーフローはチェックされません。 |
float*, double* | MpObject::kFloat 又はMpObject::kDouble 型ならばfloat 値が格納されます。オーバーフローはチェックされません。 |
std::string* | MpObject::kString 型ならばstring オブジェクトが設定されます。文字列のassign() 時に例外が発生した場合はENOMEM を返します。 |
std::vector* | MpObject::kArray 型ならばvector オブジェクトが設定されます。ベクタのresize() 時に例外が発生した場合はENOMEM を返します。 |
Nlist* | MpObject::kArray 型ならば Nlistオブジェクトが設定されます。メモリが足りない場合はENOMEMを返します。 |
std::pair* | サイズが2のMpObject::kArray 型ならばpair オブジェクトが設定されます。 |
std::map* | MpObject::kMap 型ならばmap オブジェクトが設定されます。map の要素の追加時に例外が発生した場合は、ENOMEM を返します。 |
std::array* | MpObject::kArray 型ならばarray オブジェクトが設定されます。 |
std::tuple* | MpObject::kArray 型ならばtuple オブジェクトが設定されます。 |
std::unordered_map* | MpObject::kMap 型ならば unordered_map オブジェクトが設定されます。unordered_map の要素の追加時に例外が発生した場合は、ENOMEM を返します。 |
EACCESS
を返します。 また、配列等のアンボックス化に失敗した場合、途中までの変換結果が格納されています。 ユーザー定義型へのアンボックス化については、その型のアンボックス関数の仕様に従います。 nlib_utf8_t
型の配列のみは文字列としてアンボックス化されます。 MpObject.h の 357 行目に定義があります。
© 2012-2017 Nintendo Co., Ltd. All rights reserved.