nlib
UriTemplate.h
[詳解]
1 
2 #pragma once
3 #ifndef INCLUDE_NN_NLIB_URITEMPLATE_H_
4 #define INCLUDE_NN_NLIB_URITEMPLATE_H_
5 
6 #include "nn/nlib/Uri.h"
7 #include "nn/nlib/Nlist.h"
8 #include "nn/nlib/UniquePtr.h"
9 
10 NLIB_NAMESPACE_BEGIN
11 
12 class OutputStream;
13 
14 // See RFC6570: https://tools.ietf.org/html/rfc6570
16  public:
19  NLIB_VIS_PUBLIC errno_t SetTemplate(const char* str) NLIB_NOEXCEPT;
20  NLIB_VIS_PUBLIC errno_t SetParameter(const char* param, const char* value) NLIB_NOEXCEPT;
21  void ResetParameter() NLIB_NOEXCEPT {
22  StringList<> tmp;
23  tmp.swap(m_Pv);
24  }
26 
27  NLIB_VIS_PUBLIC bool Resolve(char* str, size_t n) const NLIB_NOEXCEPT;
28  template <size_t N>
29  bool Resolve(char (&str)[N]) const NLIB_NOEXCEPT {
30  return Resolve(&str[0], N);
31  }
32 
33  private:
34  UniquePtr<char[]> m_Template;
35  StringList<> m_Pv;
37 };
38 
39 NLIB_NAMESPACE_END
40 
41 #endif // INCLUDE_NN_NLIB_URITEMPLATE_H_
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
Definition: Platform.h:2151
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
Definition: Config.h:126
std::unique_ptrに相当するクラスが定義されています。
URI Template(RFC 6570, Level3)をサポートします。
Definition: UriTemplate.h:15
std::vectorに似ていますが、コピーできないオブジェクトを格納可能なクラスが定義されています。 ...
void ResetParameter() noexcept
パラメータとその値の設定を全てクリアします。
Definition: UriTemplate.h:21
bool Resolve(char(&str)[N]) const noexcept
Definition: UriTemplate.h:29
URIを扱うためのクラスを定義しています。
#define NLIB_VIS_PUBLIC
関数やクラス等のシンボルをライブラリの外部に公開します。
Definition: Platform_unix.h:51
出力ストリームの基底クラスです。このクラスを実体化することはできません。
Definition: OutputStream.h:17
int errno_t
intのtypedefで、戻り値としてPOSIXのエラー値を返すことを示します。
Definition: NMalloc.h:24