nlib
nn::nlib::UriQueryDecoder< K, V > クラステンプレートfinal

URIのクエリをパースするためのクラステンプレートです。 [詳解]

#include "nn/nlib/Uri.h"

公開メンバ関数

constexpr UriQueryDecoder () noexcept
 デフォルトコンストラクタです。
 
errno_t Init (const Uri &uri) noexcept
 クエリ文字列を設定して初期化します。 [詳解]
 
void Reset () noexcept
 コンストラクタ実行直後の状態にリセットします。
 
bool HasNext () noexcept
 クエリの末尾でないかどうかを返します。 [詳解]
 
errno_t MoveNext () noexcept
 次のキーと値が取得可能な位置まで移動します。 [詳解]
 
std::pair< errno_t, const char * > GetKey () noexcept
 キー文字列をデコードして取得します。 [詳解]
 
std::pair< errno_t, const char * > GetValue () noexcept
 値文字列をデコードして取得します。 [詳解]
 
std::pair< errno_t, const char * > GetFirstValueByName (const char *key) noexcept
 keyに対応する値文字列をデコードして取得します。 [詳解]
 
void Rewind () noexcept
 Init()実行直後の状態に巻き戻します。
 

詳解

template<size_t K = 64, size_t V = 192>
class nn::nlib::UriQueryDecoder< K, V >

URIのクエリをパースするためのクラステンプレートです。

テンプレート引数
Kデコードされたキー文字列を格納するためのバッファのサイズ
Vデコードされた値文字列を格納するためのバッファのサイズ
説明
Uriクラスからクエリ文字列を受け取りキーと値を順番に取得していきます。 クラスはヘッダオンリーで実装され、内部バッファの動的メモリ確保はありません。 内部バッファのサイズはテンプレートパラメータで指定することが可能です。
各種例:
misc/uri/uri.cpp.

Uri.h346 行目に定義があります。

関数詳解

◆ GetFirstValueByName()

template<size_t K, size_t V>
std::pair< errno_t, const char * > nn::nlib::UriQueryDecoder< K, V >::GetFirstValueByName ( const char *  key)
noexcept

keyに対応する値文字列をデコードして取得します。

引数
[in]key値に対応するキー文字列
戻り値
0,デコードされた値文字列成功した場合
ESRCH,NULLkeyに一致するキー文字列が存在しなかった場合
EBADF,NULLクエリ文字列が設定されていない場合
ENOENT,NULLクエリ文字列の末尾まで到達している場合
ELISEQ,NULLクエリ文字列のデコードに失敗した場合
ERANGE,NULLデコードされたクエリ文字列を格納するバッファが不足している場合

Uri.h467 行目に定義があります。

◆ GetKey()

template<size_t K, size_t V>
std::pair< errno_t, const char * > nn::nlib::UriQueryDecoder< K, V >::GetKey ( )
noexcept

キー文字列をデコードして取得します。

戻り値
0,デコードされたキー文字列成功した場合
EBADF,NULLクエリ文字列が設定されていない場合
ENOENT,NULLクエリ文字列の末尾まで到達している場合
ELISEQ,NULLクエリ文字列のデコードに失敗した場合
ERANGE,NULLデコードされたクエリ文字列を格納するバッファが不足している場合
説明
空のキーに対しては空文字列のキーを取得するという結果になります。 '='文字がない場合についてもキー文字列として扱われそれを取得するという結果になります。

Uri.h435 行目に定義があります。

◆ GetValue()

template<size_t K, size_t V>
std::pair< errno_t, const char * > nn::nlib::UriQueryDecoder< K, V >::GetValue ( )
noexcept

値文字列をデコードして取得します。

戻り値
0,デコードされた値文字列成功した場合
EBADF,NULLクエリ文字列が設定されていない場合
ENOENT,NULLクエリ文字列の末尾まで到達している場合
ELISEQ,NULLクエリ文字列のデコードに失敗した場合
ERANGE,NULLデコードされたクエリ文字列を格納するバッファが不足している場合
説明
空の値に対しては空文字列の値を取得するという結果になります。

Uri.h449 行目に定義があります。

◆ HasNext()

template<size_t K, size_t V>
bool nn::nlib::UriQueryDecoder< K, V >::HasNext ( )
noexcept

クエリの末尾でないかどうかを返します。

戻り値
クエリの末尾でない場合にはtrueを返します。

Uri.h408 行目に定義があります。

◆ Init()

template<size_t K, size_t V>
errno_t nn::nlib::UriQueryDecoder< K, V >::Init ( const Uri uri)
noexcept

クエリ文字列を設定して初期化します。

引数
[in]uriパースが成功したUriオブジェクトです。
戻り値
0成功した場合
EINVALuriがエラー状態であった場合

Uri.h387 行目に定義があります。

◆ MoveNext()

template<size_t K, size_t V>
errno_t nn::nlib::UriQueryDecoder< K, V >::MoveNext ( )
noexcept

次のキーと値が取得可能な位置まで移動します。

戻り値
0成功した場合
ENOENTクエリの末尾に到達している場合

Uri.h420 行目に定義があります。


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