nlib
MemoryOutputStream.h
[詳解]
1 
2 #pragma once
3 #ifndef INCLUDE_NN_NLIB_MEMORYOUTPUTSTREAM_H_
4 #define INCLUDE_NN_NLIB_MEMORYOUTPUTSTREAM_H_
5 
6 #include "nn/nlib/OutputStream.h"
7 
8 NLIB_NAMESPACE_BEGIN
9 
11  public:
12  MemoryOutputStream() NLIB_NOEXCEPT : mos_buf_(NULL), mos_pos_(0), mos_size_(0) {}
13  MemoryOutputStream(void* buf, size_t n) NLIB_NOEXCEPT NLIB_NONNULL;
14  template <class T, size_t N>
15  explicit MemoryOutputStream (T(&buf)[N]) NLIB_NOEXCEPT
16  : mos_buf_(reinterpret_cast<unsigned char*>(&buf[0])),
17  mos_pos_(0),
18  mos_size_(N * sizeof(T)) {}
20  const void* data() const NLIB_NOEXCEPT { return mos_buf_; }
21  errno_t Init(void* buf, size_t n) NLIB_NOEXCEPT NLIB_NONNULL;
22  template <class T, size_t N>
23  errno_t Init(T (&buf)[N]) NLIB_NOEXCEPT {
24  return this->Init(&buf[0], N * sizeof(T));
25  }
26 
27  private:
28  virtual bool PushBuffer_(const void* p, size_t nbytes,
29  bool do_flush) NLIB_NOEXCEPT NLIB_OVERRIDE;
30  virtual bool Close_() NLIB_NOEXCEPT NLIB_OVERRIDE {
31  mos_buf_ = NULL;
32  mos_pos_ = 0;
33  mos_size_ = 0;
34  return true;
35  }
36  virtual void* GetWorkBuffer_(size_t* nbytes) NLIB_NOEXCEPT NLIB_OVERRIDE;
37 
38  private:
39  unsigned char* mos_buf_;
40  size_t mos_pos_;
41  size_t mos_size_;
43 };
44 
45 NLIB_NAMESPACE_END
46 
47 #endif // INCLUDE_NN_NLIB_MEMORYOUTPUTSTREAM_H_
#define NLIB_OVERRIDE
利用可能であればoverrideが定義されます。そうでない場合は空文字列です。
Definition: Config.h:210
MemoryOutputStream() noexcept
デフォルトコンストラクタです。利用前にInit()メンバ関数を呼び出す必要があります。
MemoryOutputStream(T(&buf)[N]) noexcept
MemoryOutputStreamを構築して初期化します。
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
Definition: Config.h:145
メモリを使用する出力ストリームを作成します。
#define NLIB_VIS_PUBLIC
関数やクラス等のシンボルをライブラリの外部に公開します。
Definition: Platform_unix.h:61
const void * data() const noexcept
出力データの先頭のポインタを取得します。
errno_t Init(T(&buf)[N]) noexcept
MemoryOuputStreamを初期化して利用できるようにします。
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
Definition: Config.h:86
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
Definition: Config.h:211
出力ストリームの基底クラスを定義しています。
#define NLIB_NONNULL
全ての引数にNULLを指定することができないことを示します。
Definition: Platform_unix.h:76
出力ストリームの基底クラスです。このクラスを実体化することはできません。
Definition: OutputStream.h:17
int errno_t
intのtypedefで、戻り値としてPOSIXのエラー値を返すことを示します。
Definition: NMalloc.h:24