16 #ifndef INCLUDE_NN_NLIB_URI_H_ 17 #define INCLUDE_NN_NLIB_URI_H_ 23 #include "nn/nlib/Swap.h" 29 class MemoryOutputStream;
41 static errno_t DecodeUriComponent(
size_t* written,
char* buf,
size_t n,
const char* first,
44 const char* s) NLIB_NOEXCEPT {
45 return DecodeUriComponent(written, buf, n, s, s +
nlib_strlen(s));
47 static errno_t EncodeUriComponent(
size_t* written,
char* buf,
size_t n,
const char* first,
50 bool fragment_mode) NLIB_NOEXCEPT {
51 return EncodeUriComponent(written, buf, n, s, s +
nlib_strlen(s), fragment_mode);
58 const char* s) NLIB_NOEXCEPT {
59 return DecodeUriComponent(written, buf, N, s);
63 const char* last) NLIB_NOEXCEPT {
64 return DecodeUriComponent(written, buf, N, first, last);
68 bool fragment_mode) NLIB_NOEXCEPT {
69 return EncodeUriComponent(written, buf, N, s, fragment_mode);
73 const char* last,
bool fragment_mode) NLIB_NOEXCEPT {
74 return EncodeUriComponent(written, buf, N, first, last, fragment_mode);
78 return DecodePath(written, buf, N, s);
82 return EncodePath(written, buf, N, s);
86 Uri() NLIB_NOEXCEPT : prv_(NULL) {}
88 NLIB_MOVE_MEMBER_HELPER_1(
Uri, prv_);
99 bool SetUri(
const char* scheme,
const char* userinfo,
const char* host,
100 const char* port,
const char* path,
const char* query,
102 bool ComposeString(
char* buf,
size_t size)
const NLIB_NOEXCEPT;
105 return this->ComposeString(buf, N);
127 void swap(
Uri& rhs) NLIB_NOEXCEPT {
129 swap(prv_, rhs.prv_);
145 mutable UriPrivate* prv_;
151 #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)を呼び出します。
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
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が定義されます。そうでない場合は空文字列です。