nlib
MemoryInputStream.h
[詳解]
1 
2 #pragma once
3 #ifndef INCLUDE_NN_NLIB_MEMORYINPUTSTREAM_H_
4 #define INCLUDE_NN_NLIB_MEMORYINPUTSTREAM_H_
5 
6 #include "nn/nlib/InputStream.h"
7 
8 NLIB_NAMESPACE_BEGIN
9 
11  public:
12  MemoryInputStream() NLIB_NOEXCEPT : m_Buf(NULL), m_Size(0) {}
14  template <class T, size_t N>
15  explicit MemoryInputStream(const T(&buf)[N]) NLIB_NOEXCEPT : m_Buf(buf),
16  m_Size(N * sizeof(T)) {}
17  MemoryInputStream(const void* buf, size_t n) NLIB_NOEXCEPT NLIB_NONNULL;
18  template <class T, size_t N>
19  void Init(const T(&buf)[N]) NLIB_NOEXCEPT {
20  this->Init(&buf[0], N * sizeof(T));
21  }
22  void Init(const void* buf, size_t n) NLIB_NOEXCEPT NLIB_NONNULL;
23 
24  private:
25  virtual size_t FillBuffer_(void* p, size_t nBytes) NLIB_NOEXCEPT NLIB_OVERRIDE;
26  virtual bool Close_() NLIB_NOEXCEPT NLIB_OVERRIDE {
27  m_Buf = NULL;
28  m_Size = 0;
29  return true;
30  }
31 
32  private:
33  const void* m_Buf;
34  size_t m_Size;
35  NLIB_DISALLOW_COPY_AND_ASSIGN(MemoryInputStream);
36 };
37 
38 NLIB_NAMESPACE_END
39 
40 #endif // INCLUDE_NN_NLIB_MEMORYINPUTSTREAM_H_
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
Definition: Platform.h:2151
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
#define NLIB_NONNULL
全ての引数にNULLを指定することができないことを示します。
Definition: Platform_unix.h:66
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
Definition: Config.h:126
入力ストリームの基底クラスを定義しています。
#define NLIB_OVERRIDE
利用可能であればoverrideが定義されます。そうでない場合は空文字列です。
MemoryInputStream() noexcept
デフォルトコンストラクタです。利用前にInit()メンバ関数を呼び出す必要があります。
入力ストリームの基底クラスです。このクラスを実体化することはできません。
Definition: InputStream.h:15
メモリを使用する入力ストリームを作成します。
#define NLIB_VIS_PUBLIC
関数やクラス等のシンボルをライブラリの外部に公開します。
Definition: Platform_unix.h:51
void Init(const T(&buf)[N]) noexcept
MemoryInputStreamを初期化して利用できるようにします。