nlib
nn::nlib::msgpack::JsonPatchBuilder クラス

JSON Patch (RFC-6902)を作成するためのクラスです。 [詳解]

#include "nn/nlib/msgpack/JsonPatch.h"

公開メンバ関数

errno_t Add (const nlib_utf8_t *path, MpObject *value) noexcept
 JSON Patch文書となる配列に"add"演算を追加します。 [詳解]
 
errno_t Remove (const nlib_utf8_t *path) noexcept
 JSON Patch文書となる配列に"remove"演算を追加します。 [詳解]
 
errno_t Move (const nlib_utf8_t *path, const nlib_utf8_t *from) noexcept
 JSON Patch文書となる配列に"move"演算を追加します。 [詳解]
 
errno_t Copy (const nlib_utf8_t *path, const nlib_utf8_t *from) noexcept
 JSON Patch文書となる配列に"copy"演算を追加します。 [詳解]
 
errno_t Test (const nlib_utf8_t *path, MpObject *value) noexcept
 JSON Patch文書となる配列に"test"演算を追加します。 [詳解]
 
errno_t Export (MpObject *patch) noexcept
 JSON PatchとなるJSONドキュメントを取り出します。 [詳解]
 
基本的なメンバ関数
 JsonPatchBuilder () noexcept
 デフォルトコンストラクタです。
 
 ~JsonPatchBuilder () noexcept
 デストラクタです。
 

詳解

JSON Patch (RFC-6902)を作成するためのクラスです。

説明
オブジェクトを構築して、Add(), Remove(), Replace(), Move(), Copy(), Test()を用いてJSON Patchドキュメントを構築します。 それぞれのメンバ関数は、RFC-6902で定められている"add", "remove", "replace", "move", "copy", "test"演算に対応します。 JSON Patchドキュメントを構築できたら、Export()MpObjectとして出力します。 出力されたJSON Patchドキュメントは、JsonPatch::Apply()を用いて適用することができます。
参照
https://tools.ietf.org/html/rfc6902
https://triple-underscore.github.io/RFC6902-ja.html

JsonPatch.h29 行目に定義があります。

関数詳解

◆ Add()

nn::nlib::msgpack::JsonPatchBuilder::Add ( const nlib_utf8_t path,
MpObject value 
)
inlinenoexcept

JSON Patch文書となる配列に"add"演算を追加します。

引数
[in]pathvalueが設定されるJSONドキュメント内の場所を示したJSON Pointer文字列
[in]value設定される値
戻り値
0成功した場合
ENOMEMメモリ割り当てに失敗した場合
説明
"add"演算はpathが指し示すJSONドキュメント内の場所に対して以下の演算のいずれかを実行します。
  • pathが空文字列であった場合、JSONドキュメント全体をvalueに置換する。
  • pathが配列のインデックスを指し示している場合、そこに新たにvalueを挿入する。 配列の末尾か'-'を示している場合、valueは配列の末尾に追加される。
  • pathの末尾のキーが存在しない場合は、そこに新たにvalueがキーで参照される値として追加される。
  • pathに対応する値が存在する場合、その値がvalueに置換される。

JsonPatch.h34 行目に定義があります。

◆ Copy()

nn::nlib::msgpack::JsonPatchBuilder::Copy ( const nlib_utf8_t path,
const nlib_utf8_t from 
)
inlinenoexcept

JSON Patch文書となる配列に"copy"演算を追加します。

引数
[in]pathコピー先のJSONドキュメント内の場所を示したJSON Pointer文字列
[in]fromコピー元のJSONドキュメント内の場所を示したJSON Pointer文字列
戻り値
0成功した場合
ENOMEMメモリ割り当てに失敗した場合
説明
"copy"演算は、fromにより指定される値を、pathを指定して"add"演算で追加する動作を行います。 この演算が実行される直前に、操作対象のJSONドキュメント内にfromに対応する場所が存在している必要があります。

JsonPatch.h45 行目に定義があります。

◆ Export()

nn::nlib::msgpack::JsonPatchBuilder::Export ( MpObject patch)
noexcept

JSON PatchとなるJSONドキュメントを取り出します。

引数
[in]patchJSON PatchとなるJSONドキュメントが格納されるMpObject
戻り値
0成功した場合
ENOMEMメモリ割り当てに失敗した場合
説明
取り出したJSON Patchドキュメントはpatchに格納されます。 patchに格納されていたデータは削除され、JsonPatchBuilderはコンストラクタ実行直後と同じ状態になります。 ENOMEMは、演算を何も追加していない場合のみに返される可能性があります。

◆ Move()

nn::nlib::msgpack::JsonPatchBuilder::Move ( const nlib_utf8_t path,
const nlib_utf8_t from 
)
inlinenoexcept

JSON Patch文書となる配列に"move"演算を追加します。

引数
[in]path移動先のJSONドキュメント内の場所を示したJSON Pointer文字列
[in]from移動元のJSONドキュメント内の場所を示したJSON Pointer文字列
戻り値
0成功した場合
ENOMEMメモリ割り当てに失敗した場合
説明
"move"演算は、fromを指定して"remove"演算を行って削除した値を、pathを指定して"add"演算で追加する動作を行います。 この演算が実行される直前に、操作対象のJSONドキュメント内にfromに対応する場所が存在している必要があります。

JsonPatch.h41 行目に定義があります。

◆ Remove()

nn::nlib::msgpack::JsonPatchBuilder::Remove ( const nlib_utf8_t path)
noexcept

JSON Patch文書となる配列に"remove"演算を追加します。

引数
[in]path削除されるJSONドキュメント内の場所を示したJSON Pointer文字列
戻り値
0成功した場合
ENOMEMメモリ割り当てに失敗した場合
説明
"remove"演算はpathが指し示すJSONドキュメント内の場所を削除します。 この演算が実行される直前に、操作対象のJSONドキュメント内にpathに対応する場所が存在している必要があります。 詳細は以下の通りです。
  • pathが空文字列であった場合、JSONドキュメント全体を削除する。
  • pathが配列のインデックスを指し示している場合、指定されたインデックスより先の要素は1つずつ前へずらす。
  • それ以外の場合、pathで指定される値と、その値を直接指し示すキーを取り除く。

◆ Test()

nn::nlib::msgpack::JsonPatchBuilder::Test ( const nlib_utf8_t path,
MpObject value 
)
inlinenoexcept

JSON Patch文書となる配列に"test"演算を追加します。

引数
[in]path演算が実行されるJSONドキュメント内の場所を示したJSON Pointer文字列
[in]value比較対象となる値
戻り値
0成功した場合
ENOMEMメモリ割り当てに失敗した場合
説明
"test"演算は、pathにより指定される値とvalueを比較します。 両者がJSONとして等価である場合に"test"演算が成功します。

JsonPatch.h49 行目に定義があります。


このクラス詳解は次のファイルから抽出されました: