nlib
nn::nlib::NativePathMapper クラスfinal

機種依存しないURIによるパス記述からネイティブのパス文字列を得るためのクラスです。 [詳解]

#include "nn/nlib/NativePathMapper.h"

公開メンバ関数

errno_t AddMap (const char *native_prefix, const char *uri_prefix) noexcept
 ネイティブのパス文字列のプレフィックスとそれに対応するURIのパス文字列のプレフィックスを登録します。 [詳解]
 
errno_t ResolvePath (size_t *count, char *native, size_t n, const char *uri_path) const noexcept
 URIのパス文字列からネイティブのパス文字列に変換します。 [詳解]
 
template<size_t N>
errno_t ResolvePath (size_t *count, char(&native)[N], const char *uri_path) const noexcept
 ResolvePath(count, native, N, uri_path) を返します。
 
基本的なメンバ関数
constexpr NativePathMapper () noexcept
 コンストラクタです。
 
 ~NativePathMapper () noexcept
 デストラクタです。
 

詳解

機種依存しないURIによるパス記述からネイティブのパス文字列を得るためのクラスです。

説明
nlib内の関数に渡すパス文字列は動作する環境特有のネイティブな文字列となります。 これは分かりやすいことも多いのですが、複数環境で動作するプログラムを書く場合には障害となります。 NativePathMapperクラスを用いてURIからネイティブのパス文字列に変換するようにすれば、環境毎にパス文字列の内容を別々に設定するコードを書く必要がなくなります。

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

関数詳解

◆ AddMap()

nn::nlib::NativePathMapper::AddMap ( const char *  native_prefix,
const char *  uri_prefix 
)
noexcept

ネイティブのパス文字列のプレフィックスとそれに対応するURIのパス文字列のプレフィックスを登録します。

引数
[in]native_prefixネイティブのパス文字列のプレフィックス
[in]uri_prefixnative_prefix に対応するURIのパス文字列のプレフィックス
戻り値
0成功した場合
EINVALnative_prefix, uri_prefixNULLや空文字列、及び不正なUTF-8文字列だった場合
EINVALuri_prefix がURI文字列でなかった場合
EINVALuri_prefix のスキームが'nlibpath' でなかった場合
EINVALuri_prefix が絶対パスでなかった場合
ENOMEM内部でメモリの確保に失敗した場合
説明
uri_prefix に含まれるホスト名やクエリ及びフラグメントは無視されます。

◆ ResolvePath()

nn::nlib::NativePathMapper::ResolvePath ( size_t *  count,
char *  native,
size_t  n,
const char *  uri_path 
) const
noexcept

URIのパス文字列からネイティブのパス文字列に変換します。

引数
[out]count書き込まれた文字列のバイト数(終端のヌル文字を含まない)
[out]nativeネイティブのパス文字列が書き込まれるバッファ
[in]nバッファ・サイズ
[in]uri_pathURIのパス文字列
戻り値
0成功した場合
EINVALnativeNULLかつn が0でない場合
EINVALuri_pathNULLであるか空文字列である、又は不正なUTF-8文字列だった場合
EINVALuri_path がURI文字列でなかった場合
EINVALuri_path のスキームが'nlibpath' でなかった場合
ESRCHURIに対応するネイティブのパス文字列が登録されていない場合
ERANGEnative のバッファ・サイズが足りなかった場合
ENOMEM内部でメモリの確保に失敗した場合
説明
uri_path に含まれるホスト名やクエリ及びフラグメントは無視されます。 nativeNULL, n を0にしてこの関数を呼び出すと、変換後のパス文字列のバイト数を得ることができます。
なお、Windowsの場合でもUTF-8文字列が格納されることに注意してください。

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