nlib
ZlibOutputStream.h
[詳解]
1 
2 #pragma once
3 #ifndef INCLUDE_NN_NLIB_ZLIBOUTPUTSTREAM_H_
4 #define INCLUDE_NN_NLIB_ZLIBOUTPUTSTREAM_H_
5 
6 #include "nn/nlib/Platform.h"
7 #ifdef NLIB_HAS_ZLIB
8 
10 
11 NLIB_NAMESPACE_BEGIN
12 
13 class OutputStream;
14 
16  typedef void* (*ReallocFunc)(void* p, size_t n);
17  void* buf_in;
18  void* buf_out;
19  size_t buffer_size;
20  int level;
21  ReallocFunc realloc_func;
22 
23  public:
25  buf_out(NULL),
26  buffer_size(64 * 1024),
27  level(-1),
28  realloc_func(::nlib_realloc) {}
29  NLIB_CEXPR ZlibOutputStreamSettings(void* buf_in_, void* buf_out_, size_t buffer_size_,
30  int level_) NLIB_NOEXCEPT : buf_in(buf_in_),
31  buf_out(buf_out_),
32  buffer_size(buffer_size_),
33  level(level_),
34  realloc_func(::nlib_realloc) {}
35  NLIB_CEXPR ZlibOutputStreamSettings(void* buf_in_, void* buf_out_, size_t buffer_size_,
36  int level_, ReallocFunc realloc_func_) NLIB_NOEXCEPT
37  : buf_in(buf_in_),
38  buf_out(buf_out_),
39  buffer_size(buffer_size_),
40  level(level_),
41  realloc_func(realloc_func_) {}
42 };
43 
45  public:
46  ZlibOutputStream() NLIB_NOEXCEPT : prv_(NULL) {}
50  return this->Init(settings);
51  }
52  errno_t Init(const ZlibOutputStreamSettings& settings) NLIB_NOEXCEPT;
53 
54  private:
55  struct ZlibOutputStreamPrivate;
56  ZlibOutputStreamPrivate* prv_;
58 };
59 
60 NLIB_NAMESPACE_END
61 
62 #endif
63 #endif // INCLUDE_NN_NLIB_ZLIBOUTPUTSTREAM_H_
#define NLIB_OVERRIDE
利用可能であればoverrideが定義されます。そうでない場合は空文字列です。
Definition: Config.h:210
errno_t Init() noexcept
デフォルト設定で初期化します。
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
Definition: Config.h:145
ZlibOutputStream() noexcept
デフォルトコンストラクタです。
void * buf_out
z_stream::next_outに設定されるバッファです。
基本的なAPIがCベースで宣言されています。
void * buf_in
z_stream::next_inに設定されるバッファです。
#define NLIB_VIS_PUBLIC
関数やクラス等のシンボルをライブラリの外部に公開します。
Definition: Platform_unix.h:61
size_t buffer_size
ZlibOutputStreamSettings::buf_in, ZlibOutputStreamSettings::buf_outのバッファサイズです。 ...
ReallocFunc realloc_func
ZlibOutputStream内部で利用するrealloc又はreallocと同等の関数です。
内部でデータ変換を行うOutputStreamのように振る舞うクラスの基底です。
constexpr ZlibOutputStreamSettings() noexcept
デフォルトコンストラクタです。デフォルト値を設定します。
constexpr ZlibOutputStreamSettings(void *buf_in_, void *buf_out_, size_t buffer_size_, int level_) noexcept
それぞれのデータメンバを設定します。
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
Definition: Config.h:86
#define NLIB_CEXPR
利用可能であればconstexprが定義されます。そうでない場合は空文字列です。
Definition: Config.h:80
NLIB_CHECK_RESULT void * nlib_realloc(void *ptr, size_t size)
C標準関数のrealloc()を呼び出すweak関数です。nlibはこの関数を経由してrealloc()を呼び出します。 ...
ZlibOutputStreamの各種設定が格納されている構造体です。コンストラクト時にはデフォルトの設定が格納され...
zlibを用いてデータを圧縮してストリームに書き込みます。
int level
zlibのdeflateInit2関数に渡す圧縮設定です。
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
Definition: Config.h:211
constexpr ZlibOutputStreamSettings(void *buf_in_, void *buf_out_, size_t buffer_size_, int level_, ReallocFunc realloc_func_) noexcept
それぞれのデータメンバを設定します。
int errno_t
intのtypedefで、戻り値としてPOSIXのエラー値を返すことを示します。
Definition: NMalloc.h:24