URIのクエリをパースするためのクラステンプレートです。
[詳解]
#include "nn/nlib/Uri.h"
template<size_t K = 64, size_t V = 192>
class nn::nlib::UriQueryDecoder< K, V >
URIのクエリをパースするためのクラステンプレートです。
- テンプレート引数
-
K | デコードされたキー文字列を格納するためのバッファのサイズ |
V | デコードされた値文字列を格納するためのバッファのサイズ |
- 説明
Uri
クラスからクエリ文字列を受け取りキーと値を順番に取得していきます。 クラスはヘッダオンリーで実装され、内部バッファの動的メモリ確保はありません。 内部バッファのサイズはテンプレートパラメータで指定することが可能です。
- 以下がコード例です。
bool result = uri.
Parse(
"http://www.example.com?date=today");
SUCCEED_IF(!!result);
SUCCEED_IF(e == 0);
SUCCEED_IF(k.first == 0);
SUCCEED_IF(v.first == 0);
}
- 各種例:
- misc/uri/uri.cpp.
Uri.h の 339 行目に定義があります。
◆ GetFirstValueByName()
template<size_t K, size_t V>
key
に対応する値文字列をデコードして取得します。
- 引数
-
- 戻り値
-
0,デコードされた値文字列 | 成功した場合 |
ESRCH,NULL | keyに一致するキー文字列が存在しなかった場合 |
EBADF,NULL | クエリ文字列が設定されていない場合 |
ENOENT,NULL | クエリ文字列の末尾まで到達している場合 |
ELISEQ,NULL | クエリ文字列のデコードに失敗した場合 |
ERANGE,NULL | デコードされたクエリ文字列を格納するバッファが不足している場合 |
Uri.h の 462 行目に定義があります。
◆ GetKey()
template<size_t K, size_t V>
キー文字列をデコードして取得します。
- 戻り値
-
0,デコードされたキー文字列 | 成功した場合 |
EBADF,NULL | クエリ文字列が設定されていない場合 |
ENOENT,NULL | クエリ文字列の末尾まで到達している場合 |
ELISEQ,NULL | クエリ文字列のデコードに失敗した場合 |
ERANGE,NULL | デコードされたクエリ文字列を格納するバッファが不足している場合 |
- 説明
- 空のキーに対しては空文字列のキーを取得するという結果になります。 '='文字がない場合についてもキー文字列として扱われそれを取得するという結果になります。
Uri.h の 431 行目に定義があります。
◆ GetValue()
template<size_t K, size_t V>
値文字列をデコードして取得します。
- 戻り値
-
0,デコードされた値文字列 | 成功した場合 |
EBADF,NULL | クエリ文字列が設定されていない場合 |
ENOENT,NULL | クエリ文字列の末尾まで到達している場合 |
ELISEQ,NULL | クエリ文字列のデコードに失敗した場合 |
ERANGE,NULL | デコードされたクエリ文字列を格納するバッファが不足している場合 |
- 説明
- 空の値に対しては空文字列の値を取得するという結果になります。
Uri.h の 444 行目に定義があります。
◆ HasNext()
template<size_t K, size_t V>
クエリの末尾でないかどうかを返します。
- 戻り値
- クエリの末尾でない場合には
true
を返します。
Uri.h の 405 行目に定義があります。
◆ Init()
template<size_t K, size_t V>
クエリ文字列を設定して初期化します。
- 引数
-
[in] | uri | パースが成功したUriオブジェクトです。 |
- 戻り値
-
0 | 成功した場合 |
EINVAL | uri がエラー状態であった場合 |
Uri.h の 384 行目に定義があります。
◆ MoveNext()
template<size_t K, size_t V>
次のキーと値が取得可能な位置まで移動します。
- 戻り値
-
0 | 成功した場合 |
ENOENT | クエリの末尾に到達している場合 |
Uri.h の 417 行目に定義があります。
このクラス詳解は次のファイルから抽出されました: