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