nlib
FileInputStream.h
[詳解]
1 
2 #pragma once
3 #ifndef INCLUDE_NN_NLIB_FILEINPUTSTREAM_H_
4 #define INCLUDE_NN_NLIB_FILEINPUTSTREAM_H_
5 
6 #include "nn/nlib/InputStream.h"
7 
8 NLIB_NAMESPACE_BEGIN
9 
11  void* buf;
12  size_t buffer_size;
13 
14  public:
15  NLIB_CEXPR FileInputStreamSettings() NLIB_NOEXCEPT : buf(NULL), buffer_size(4096) {}
16  NLIB_CEXPR FileInputStreamSettings(void* buf_, size_t buffer_size_) NLIB_NOEXCEPT
17  : buf(buf_),
18  buffer_size(buffer_size_) {}
19 };
20 
22  public:
24  buf_(NULL),
25  buf_size_(0),
26  is_internal_buf_(false) {}
30  return this->Init(settings);
31  }
33  NLIB_CHECK_RESULT errno_t Open(const char* filename) NLIB_NOEXCEPT NLIB_NONNULL;
34  NLIB_CHECK_RESULT errno_t Open(const wchar_t* filename) NLIB_NOEXCEPT NLIB_NONNULL;
36  nlib_fd GetFd() const NLIB_NOEXCEPT { return fd_; }
37 
38  private:
39  virtual size_t FillBuffer_(void* p, size_t nbytes) NLIB_NOEXCEPT NLIB_OVERRIDE;
40  virtual bool Close_() NLIB_NOEXCEPT NLIB_OVERRIDE;
41  virtual void* GetWorkBuffer_(size_t* nbytes) NLIB_NOEXCEPT NLIB_OVERRIDE;
42 
43  private:
44  nlib_fd fd_;
45  unsigned char* buf_;
46  size_t buf_size_;
47  bool is_internal_buf_;
49 };
50 
51 NLIB_NAMESPACE_END
52 
53 #endif // INCLUDE_NN_NLIB_FILEINPUTSTREAM_H_
#define NLIB_OVERRIDE
利用可能であればoverrideが定義されます。そうでない場合は空文字列です。
Definition: Config.h:210
ファイルストリームの設定情報を格納する構造体です。
FileInputStream() noexcept
デフォルトコンストラクタです。更にInit()でバッファを設定して初期化する必要があります。 ...
nlib_fd GetFd() const noexcept
ファイルディスクリプタを返します。
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
Definition: Config.h:145
入力ストリームの基底クラスを定義しています。
#define NLIB_CHECK_RESULT
関数の呼び出し元が戻り値をチェックする必要があることを示します。
Definition: Platform_unix.h:74
size_t buffer_size
バッファサイズです。
#define NLIB_FD_INVALID
無効なファイルディスクリプタを定義したマクロです。
Definition: Platform.h:1729
#define NLIB_VIS_PUBLIC
関数やクラス等のシンボルをライブラリの外部に公開します。
Definition: Platform_unix.h:61
errno_t Init() noexcept
ストリームをデフォルトの設定で初期化します。
int nlib_fd
(nlib独自の)ファイルディスクリプタで、32bit整数です。
Definition: Platform.h:1728
入力ストリームの基底クラスです。このクラスを実体化することはできません。
Definition: InputStream.h:16
constexpr FileInputStreamSettings(void *buf_, size_t buffer_size_) noexcept
データメンバを設定します。
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
Definition: Config.h:86
#define NLIB_CEXPR
利用可能であればconstexprが定義されます。そうでない場合は空文字列です。
Definition: Config.h:80
ファイルの入力ストリームです。
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
Definition: Config.h:211
constexpr FileInputStreamSettings() noexcept
デフォルトコンストラクタです。メンバをデフォルト値に設定します。
void * buf
バッファのポインタです。
#define NLIB_NONNULL
全ての引数にNULLを指定することができないことを示します。
Definition: Platform_unix.h:76
int errno_t
intのtypedefで、戻り値としてPOSIXのエラー値を返すことを示します。
Definition: NMalloc.h:24