3 #ifndef INCLUDE_NN_NLIB_HTTPSTYLEURI_H_
4 #define INCLUDE_NN_NLIB_HTTPSTYLEURI_H_
15 typedef std::pair<const char*, const char*>
KeyValue;
22 NLIB_VIS_PUBLIC bool ComposeString(
char* buf,
size_t size) const NLIB_NOEXCEPT;
24 bool ComposeString(
char (&buf)[N]) const NLIB_NOEXCEPT {
25 return this->ComposeString(buf, N);
32 bool SetQuery(
const char* query) NLIB_NOEXCEPT {
return m_Query.Set(query); }
34 bool AddQuery(
const char* key,
const char* value) NLIB_NOEXCEPT {
35 return m_Query.Add(key, value);
38 return m_IsSchemeHttps ?
"https" :
"http";
40 const char*
GetUserInfo() const NLIB_NOEXCEPT {
return m_UserInfo.get(); }
41 const char*
GetHost() const NLIB_NOEXCEPT {
return m_Host.get(); }
42 int GetPort() const NLIB_NOEXCEPT {
return m_Port; }
44 return m_Segments.GetNumSegment();
47 return m_Segments.GetSegment(i);
50 return m_Segments.IsDirectory();
53 return m_Query.GetValue(key);
55 size_t GetNumQuery() const NLIB_NOEXCEPT {
return m_Query.GetNumQuery(); }
57 return m_Query.GetKeyValue(i);
59 const char*
GetFragment() const NLIB_NOEXCEPT {
return m_Fragment.get(); }
64 bool ComposeQuery(
char* first,
char* last) const NLIB_NOEXCEPT {
65 return m_Query.Compose(&first, last);
71 UniquePtr<char[]> m_UserInfo;
72 UniquePtr<char[]> m_Host;
73 UniquePtr<char[]> m_Fragment;
74 detail::Segments m_Segments;
75 detail::Query m_Query;
79 #endif // INCLUDE_NN_NLIB_HTTPSTYLEURI_H_
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
const KeyValue * GetQueryKeyValue(size_t i) const noexcept
インデックスを指定してキーと値のペアを取得します。見つからなかった場合はNULLを返します。 ...
bool AddQuery(const char *key, const char *value) noexcept
クエリにキーと値を追加します。
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
bool SetQuery(const char *query) noexcept
クエリ文字列からクエリを設定します。
std::unique_ptrに相当するクラスが定義されています。
http/httpsスキームを用いたURIをパースしたりURI文字列を構築したりするためのクラスです。 ...
size_t GetNumQuery() const noexcept
キーに対応する値を取得します。見つからなかった場合はNULLを返します。
const char * GetScheme() const noexcept
スキーム名を取得します。"http"か"https"のどちらかです。
std::pair< const char *, const char * > KeyValue
クエリのキーと値を格納する型です。
HttpStyleUri() noexcept
デフォルトコンストラクタです。オブジェクトを初期化します。
int GetPort() const noexcept
ポート番号を取得します。
const char * GetSegment(size_t i) const noexcept
インデックスを指定してセグメントを取得します。
const char * GetUserInfo() const noexcept
ユーザー情報を取得します。
const char * GetHost() const noexcept
ホスト名を取得します。
bool IsPathDirectory() const noexcept
パスがディレクトリ形式かどうかを取得します。
一般的なURIをパースしたり構築したりするためのクラスです。
size_t GetNumSegment() const noexcept
格納されているセグメントの数を取得します。
const char * GetFragment() const noexcept
フラグメント文字列を取得します。
const char * GetQueryValue(const char *key) const noexcept
キーを指定して値を取得します。見つからなかった場合はNULLを返します。