機種依存しない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) を返します。
|
|
|
| NativePathMapper () noexcept |
| コンストラクタです。
|
|
| ~NativePathMapper () noexcept |
| デストラクタです。
|
|
機種依存しないURIによるパス記述からネイティブのパス文字列を得るためのクラスです。
- 説明
- nlib内の関数に渡すパス文字列は動作する環境特有のネイティブな文字列となります。 これは分かりやすいことも多いのですが、複数環境で動作するプログラムを書く場合には障害となります。
NativePathMapper
クラスを用いてURIからネイティブのパス文字列に変換するようにすれば、環境毎にパス文字列の内容を別々に設定するコードを書く必要がなくなります。
NativePathMapper.h の 10 行目に定義があります。
§ AddMap()
nn::nlib::NativePathMapper::AddMap |
( |
const char * |
native_prefix, |
|
|
const char * |
uri_prefix |
|
) |
| |
|
noexcept |
ネイティブのパス文字列のプレフィックスとそれに対応するURIのパス文字列のプレフィックスを登録します。
- 引数
-
[in] | native_prefix | ネイティブのパス文字列のプレフィックス |
[in] | uri_prefix | nativePrefix に対応するURIのパス文字列のプレフィックス |
- 戻り値
-
0 | 成功した場合 |
EINVAL | nativePrefix , uriPrefix がNULL や空文字列、及び不正なUTF-8文字列だった場合 |
EINVAL | uriPrefix がURI文字列でなかった場合 |
EINVAL | uriPrefix のスキームが'nlibpath' でなかった場合 |
EINVAL | uriPrefix が絶対パスでなかった場合 |
ENOMEM | 内部でメモリの確保に失敗した場合 |
- 説明
uriPrefix
に含まれるホスト名やクエリ及びフラグメントは無視されます。
§ 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_path | URIのパス文字列 |
- 戻り値
-
0 | 成功した場合 |
EINVAL | native がNULL かつn が0でない場合 |
EINVAL | uriPath がNULL であるか空文字列である、又は不正なUTF-8文字列だった場合 |
EINVAL | uriPrefix がURI文字列でなかった場合 |
EINVAL | uriPath のスキームが'nlibpath' でなかった場合 |
ESRCH | URIに対応するネイティブのパス文字列が登録されていない場合 |
ERANGE | native のバッファ・サイズが足りなかった場合 |
ENOMEM | 内部でメモリの確保に失敗した場合 |
- 説明
uriPath
に含まれるホスト名やクエリ及びフラグメントは無視されます。 native
をNULL
, n
を0にしてこの関数を呼び出すと、変換後のパス文字列のバイト数を得ることができます。
- なお、Windowsの場合でもUTF-8文字列が格納されることに注意してください。
このクラス詳解は次のファイルから抽出されました: