nlib
nn::nlib::FileStyleUri クラスfinal

fileスキームを用いたURIをパースしたりURI文字列を構築したりするためのクラスです。 [詳解]

#include "nn/nlib/FileStyleUri.h"

公開メンバ関数

 FileStyleUri () noexcept
 デフォルトコンストラクタです。オブジェクトを初期化します。
 
bool FromUri (const Uri &uri) noexcept
 Uri オブジェクトから変換します。 [詳解]
 
bool ToUri (Uri *uri) const noexcept
 Uri オブジェクトに変換します。 [詳解]
 
bool Parse (const char *str) noexcept
 URI文字列をパースします。 [詳解]
 
bool ComposeString (char *buf, size_t size) const noexcept
 URI文字列を書き出します。 [詳解]
 
template<size_t N>
bool ComposeString (char(&buf)[N]) const noexcept
 URI文字列を書き出します。 [詳解]
 
bool SetPath (const char *path) noexcept
 パスを設定します。 [詳解]
 
size_t GetNumSegment () const noexcept
 格納されているセグメントの数を取得します。 [詳解]
 
const char * GetSegment (size_t i) const noexcept
 インデックスを指定してセグメントを取得します。 [詳解]
 
bool AddBaseUri (const Uri &relative, const FileStyleUri &base) noexcept
 相対パスを基底URIを用いて解決します。 [詳解]
 
void Reset () noexcept
 オブジェクトを初期化(リセット)します。
 
bool IsPathDirectory () const noexcept
 パスがディレクトリ形式かどうかを取得します。 [詳解]
 

詳解

fileスキームを用いたURIをパースしたりURI文字列を構築したりするためのクラスです。

説明
URI文字列がチェックされ、分割・正規化されて格納されます。 パスは../や./等が正規化されセグメントに分割されて格納されます。 例えば、/test/../../../a/b/cのようなパスは/a/b/cのように正規化されてから各セグメントに分割されて格納されます(/../は/とみなされる)。 各セグメント内の%エンコードされた文字はデコードされています。
このクラスではホスト名やクエリ文字列、フラグメントは無視されます。
以下はfileスキームを用いたURIの例です。
以下のような文字列は'|'がRFC3986に合致しないのでパースできません。

FileStyleUri.h11 行目に定義があります。

関数詳解

nn::nlib::FileStyleUri::AddBaseUri ( const Uri relative,
const FileStyleUri base 
)
noexcept

相対パスを基底URIを用いて解決します。

引数
[in]relative相対パス
[in]base基底URI
戻り値
成功した場合はtrue
説明
成功した場合オブジェクトには絶対パスが格納されます。
nn::nlib::FileStyleUri::ComposeString ( char *  buf,
size_t  size 
) const
noexcept

URI文字列を書き出します。

引数
[out]buf文字列が書きだされるバッファへのポインタ
[in]sizeバッファサイズ
戻り値
成功した場合はtrue
説明
内部でToUri()Uri::ComposeString()を利用しています。
template<size_t N>
nn::nlib::FileStyleUri::ComposeString ( char(&)  buf[N]) const
inlinenoexcept

URI文字列を書き出します。

引数
[out]buf文字列が書きだされるバッファ
戻り値
成功した場合はtrue

FileStyleUri.h20 行目に定義があります。

nn::nlib::FileStyleUri::FromUri ( const Uri uri)
noexcept

Uri オブジェクトから変換します。

引数
[in]uriUriオブジェクトへの参照
戻り値
成功した場合はtrue
説明
URIを変換する際にパス以外の文字列は無視されます。
nn::nlib::FileStyleUri::GetNumSegment ( ) const
inlinenoexcept

格納されているセグメントの数を取得します。

戻り値
セグメントの数

FileStyleUri.h24 行目に定義があります。

nn::nlib::FileStyleUri::GetSegment ( size_t  i) const
inlinenoexcept

インデックスを指定してセグメントを取得します。

引数
[in]iセグメントのインデックス
戻り値
セグメントの文字列
説明
セグメントを取得できた場合は文字列へのポインタを、失敗した場合にはNULLを返します。 セグメント文字列は%デコードされています。

FileStyleUri.h27 行目に定義があります。

nn::nlib::FileStyleUri::IsPathDirectory ( ) const
inlinenoexcept

パスがディレクトリ形式かどうかを取得します。

戻り値
パスがディレクトリならばtrue
説明
パス文字列が'/'で終わっているかどうかを返します。

FileStyleUri.h32 行目に定義があります。

nn::nlib::FileStyleUri::Parse ( const char *  str)
noexcept

URI文字列をパースします。

引数
[in]strURI文字列
戻り値
成功した場合はtrue
説明
内部でUri::Parse()FromUri()を利用しています。 URIのqueryとfragmentの部分は捨てられます。
nn::nlib::FileStyleUri::SetPath ( const char *  path)
noexcept

パスを設定します。

引数
[in]pathパス文字列
戻り値
成功した場合はtrue
説明
パスをセグメントに分解して格納します。 デリミタとして'/'を利用します。'\'は利用できません。 また、%エンコードを施しておく必要はありません('/'を除く)。
nn::nlib::FileStyleUri::ToUri ( Uri uri) const
noexcept

Uri オブジェクトに変換します。

引数
[out]uriUriオブジェクトへのポインタ
戻り値
成功した場合はtrue

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