3 #ifndef INCLUDE_NN_NLIB_URI_H_ 4 #define INCLUDE_NN_NLIB_URI_H_ 15 class MemoryOutputStream;
27 static errno_t DecodeUriComponent(
size_t* written,
char* buf,
size_t n,
const char* first,
30 const char* s) NLIB_NOEXCEPT {
31 return DecodeUriComponent(written, buf, n, s, s +
nlib_strlen(s));
33 static errno_t EncodeUriComponent(
size_t* written,
char* buf,
size_t n,
const char* first,
36 bool fragment_mode) NLIB_NOEXCEPT {
37 return EncodeUriComponent(written, buf, n, s, s +
nlib_strlen(s), fragment_mode);
44 const char* s) NLIB_NOEXCEPT {
45 return DecodeUriComponent(written, buf, N, s);
49 const char* last) NLIB_NOEXCEPT {
50 return DecodeUriComponent(written, buf, N, first, last);
54 bool fragment_mode) NLIB_NOEXCEPT {
55 return EncodeUriComponent(written, buf, N, s, fragment_mode);
59 const char* last,
bool fragment_mode) NLIB_NOEXCEPT {
60 return EncodeUriComponent(written, buf, N, first, last, fragment_mode);
64 return DecodePath(written, buf, N, s);
68 return EncodePath(written, buf, N, s);
72 Uri() NLIB_NOEXCEPT : prv_(NULL) {}
84 bool SetUri(
const char* scheme,
const char* userinfo,
const char* host,
85 const char* port,
const char* path,
const char* query,
87 bool ComposeString(
char* buf,
size_t size)
const NLIB_NOEXCEPT;
90 return this->ComposeString(buf, N);
126 mutable UriPrivate* prv_;
131 #endif // INCLUDE_NN_NLIB_URI_H_ static errno_t DecodeUriComponent(size_t *written, char *buf, size_t n, const char *s) noexcept
%エンコードされた文字列をデコードします。
static errno_t EncodeUriComponent(size_t *written, char *buf, size_t n, const char *s, bool fragment_mode) noexcept
文字列を%エンコードします。
static errno_t DecodePath(size_t *written, char(&buf)[N], const char *s) noexcept
DecodePath(written, buf, N, s)を呼び出します。
static errno_t DecodeUriComponent(size_t *written, char(&buf)[N], const char *s) noexcept
DecodeUriComponent(written, buf, N, s)を呼び出します。
static errno_t EncodePath(size_t *written, char(&buf)[N], const char *s) noexcept
EncodePath(written, buf, N, s)を呼び出します。
Uri() noexcept
デフォルトコンストラクタです。オブジェクトを初期化します。
static errno_t DecodeUriComponent(size_t *written, char(&buf)[N], const char *first, const char *last) noexcept
DecodeUriComponent(written, buf, N, first, last)を呼び出します。
std::vectorに似ていますが、コピーできないオブジェクトを格納可能なクラスが定義されています。 ...
static errno_t EncodeUriComponent(size_t *written, char(&buf)[N], const char *first, const char *last, bool fragment_mode) noexcept
EncodeUriComponent(written, buf, N, first, last, fragment_mode)を呼び出します。
static errno_t EncodeUriComponent(size_t *written, char(&buf)[N], const char *s, bool fragment_mode) noexcept
EncodeUriComponent(written, buf, N, s, fragment_mode)を呼び出します。
bool ComposeString(char(&buf)[N]) const noexcept
URI文字列を書き出します。
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
一般的なURIをパースしたり構築したりするためのクラスです。
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。