nlib
FileOutputStream.h
[詳解]
1 
2 #pragma once
3 #ifndef INCLUDE_NN_NLIB_FILEOUTPUTSTREAM_H_
4 #define INCLUDE_NN_NLIB_FILEOUTPUTSTREAM_H_
5 
6 #include "nn/nlib/OutputStream.h"
7 
8 NLIB_NAMESPACE_BEGIN
9 
11  void* buf;
12  size_t buffer_size;
13 
14  public:
15  NLIB_CEXPR FileOutputStreamSettings() NLIB_NOEXCEPT : buf(NULL), buffer_size(4096) {}
16  NLIB_CEXPR FileOutputStreamSettings(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 bool PushBuffer_(const void* p, size_t nBytes,
40  bool doFlush) NLIB_NOEXCEPT NLIB_OVERRIDE;
41  virtual bool Close_() NLIB_NOEXCEPT NLIB_OVERRIDE;
42  virtual bool WriteGather_(const nlib_fd_iovec* iov, int iovcnt) NLIB_NOEXCEPT NLIB_OVERRIDE;
43 
44  private:
45  nlib_fd m_Fd;
46  unsigned char* m_Buf;
47  size_t m_BufSize;
48  bool m_IsInternalBuffer;
50 };
51 
52 NLIB_NAMESPACE_END
53 
54 #endif // INCLUDE_NN_NLIB_FILEOUTPUTSTREAM_H_
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
Definition: Platform.h:2151
constexpr FileOutputStreamSettings() noexcept
デフォルトコンストラクタです。デフォルト値を設定します。
ファイルストリームの設定情報を格納する構造体です。
#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
ファイルの出力ストリームです。
void * buf
バッファのポインタです。
#define NLIB_OVERRIDE
利用可能であればoverrideが定義されます。そうでない場合は空文字列です。
nlib_fd GetFd() const noexcept
ファイルディスクリプタを返します。
#define NLIB_FD_INVALID
無効なファイルディスクリプタを定義したマクロです。
Definition: Platform.h:1052
size_t buffer_size
バッファサイズです。
int nlib_fd
(nlib独自の)ファイルディスクリプタで、32bit整数です。
Definition: Platform.h:1051
#define NLIB_CEXPR
利用可能であればconstexprが定義されます。そうでない場合は空文字列です。
FileOutputStream() noexcept
デフォルトコンストラクタです。更にInit()でバッファを設定して初期化する必要があります。 ...
#define NLIB_VIS_PUBLIC
関数やクラス等のシンボルをライブラリの外部に公開します。
Definition: Platform_unix.h:51
constexpr FileOutputStreamSettings(void *buf_, size_t buffer_size_) noexcept
それぞれのデータメンバを設定します。
出力ストリームの基底クラスを定義しています。
出力ストリームの基底クラスです。このクラスを実体化することはできません。
Definition: OutputStream.h:17
#define NLIB_CHECK_RESULT
関数の呼び出し元が戻り値をチェックする必要があることを示します。
Definition: Platform_unix.h:64
int errno_t
intのtypedefで、戻り値としてPOSIXのエラー値を返すことを示します。
Definition: NMalloc.h:24