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  m_Buf(NULL),
25  m_BufSize(0),
26  m_IsInternalBuffer(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 m_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 m_Fd;
45  unsigned char* m_Buf;
46  size_t m_BufSize;
47  bool m_IsInternalBuffer;
49 };
50 
51 NLIB_NAMESPACE_END
52 
53 #endif // INCLUDE_NN_NLIB_FILEINPUTSTREAM_H_
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
Definition: Platform.h:2151
ファイルストリームの設定情報を格納する構造体です。
FileInputStream() noexcept
デフォルトコンストラクタです。更にInit()でバッファを設定して初期化する必要があります。 ...
#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が定義されます。そうでない場合は空文字列です。
size_t buffer_size
バッファサイズです。
#define NLIB_FD_INVALID
無効なファイルディスクリプタを定義したマクロです。
Definition: Platform.h:1052
nlib_fd GetFd() const noexcept
ファイルディスクリプタを返します。
int nlib_fd
(nlib独自の)ファイルディスクリプタで、32bit整数です。
Definition: Platform.h:1051
#define NLIB_CEXPR
利用可能であればconstexprが定義されます。そうでない場合は空文字列です。
入力ストリームの基底クラスです。このクラスを実体化することはできません。
Definition: InputStream.h:15
constexpr FileInputStreamSettings(void *buf_, size_t buffer_size_) noexcept
データメンバを設定します。
ファイルの入力ストリームです。
#define NLIB_VIS_PUBLIC
関数やクラス等のシンボルをライブラリの外部に公開します。
Definition: Platform_unix.h:51
constexpr FileInputStreamSettings() noexcept
デフォルトコンストラクタです。メンバをデフォルト値に設定します。
void * buf
バッファのポインタです。
#define NLIB_CHECK_RESULT
関数の呼び出し元が戻り値をチェックする必要があることを示します。
Definition: Platform_unix.h:64
int errno_t
intのtypedefで、戻り値としてPOSIXのエラー値を返すことを示します。
Definition: NMalloc.h:24