nlib
|
出力ストリームの基底クラスです。このクラスを実体化することはできません。 [詳解]
#include "nn/nlib/OutputStream.h"
公開型 | |
enum | BufferingMode { kBufferingModeBlockBuffered = 0, kBufferingModeLineBuffered, kBufferingModeUnbuffered } |
OutputStream のバッファリングモードです。 [詳解] | |
公開メンバ関数 | |
size_t | Pos () const noexcept |
ストリーム上の現在位置を返します。 [詳解] | |
uint64_t | Pos64 () const noexcept |
ストリーム上の現在位置を64bit整数で返します。 [詳解] | |
bool | Write (int b) noexcept |
ストリームに1バイトのデータを書き込みます。 [詳解] | |
bool | Write (const void *p, size_t n) noexcept |
ストリームにn バイトのデータを書き込みます。 [詳解] | |
bool | WriteGather (const nlib_fd_iovec *iov, int iovcnt) noexcept |
複数の非連続のバッファからデータをストリームに書き出します。 [詳解] | |
bool | Flush () noexcept |
ストリームをフラッシュします。 [詳解] | |
bool | Close () noexcept |
ストリームをフラッシュした後、ストリームを閉じます。成功した場合にはtrue を返します。 [詳解] | |
errno_t | GetErrorValue () const noexcept |
エラー値を取得します。 [詳解] | |
BufferingMode | GetBufferingMode () const noexcept |
バッファリングモードを取得します。 | |
operator bool () const | |
内部でエラーが発生していなければtrue を返します。 | |
基本的なメンバ関数 | |
constexpr | OutputStream () noexcept |
デフォルトコンストラクタです。 | |
virtual | ~OutputStream () noexcept |
デストラクタです。何もしません。 | |
派生クラスから利用する関数 | |
BufferingMode | m_BufferingMode |
バッファリングモードが格納されています。 [詳解] | |
void | ResetBuffer (void *p, size_t nbytes) noexcept |
OutputStream が持つバッファを設定します。 [詳解] | |
void | SetError (errno_t e) const noexcept |
OutputStream にエラーを設定します。 [詳解] | |
出力ストリームの基底クラスです。このクラスを実体化することはできません。
OutputStream
クラスの仕様は予告なしに変更される可能性があるので、出来るだけ派生クラスを独自に実装しない方がリスクは低いですが、必要な場合、派生クラスは以下の仮想関数をオーバーライドすることで定義できます。 p
はデバイスに書きこむデータへのポインタで、nbytes
はサイズです。 do_flush
がtrue
の場合はデバイスをフラッシュする必要があります。 GetWorkBuffer_()
でバッファが設定されなかった場合は、p
にNULL
が入ってコールされることがあります。 その場合はResetBuffer()
をコールしてOutputStream
の内部バッファをセットする必要があります。 EBADF
エラーを設定しfalse
を返します。 EIO
)を設定しfalse
を返します。 Close()
から呼び出されて内部のハンドル等をクローズします。 Close_()
が呼び出される時点で基底クラスが参照するバッファはPushBuffer_()
によって空になっていることが保証されます。 派生クラスがこれとは別にバッファを持っている場合、実際にデバイスに書き込んでからデバイスのクローズを行う必要があります。 Close_()
が呼ばれないことに注意してください。 EBADF
エラーを設定しfalse
を返します。 EIO
)を設定しfalse
を返します。 is_buf_
がNULL
の場合、OutputStream
はまずこの関数を呼び出してバッファを獲得しようとします。 戻り値がバッファへのポインタで、nbytes
にサイズが設定されます。 バッファ自体の所有権は派生クラス側にあるので、バッファの解放は派生クラスのコードで行う必要があります。 NULL
を返しnbytes
に0を設定する必要があります。 NULL
を返し、nbytes
には-1が代入されます。 この場合、InputStream
はFillBuffer_()
においてバッファを獲得しようとします。 OutputStream.h の 30 行目に定義があります。
OutputStream
のバッファリングモードです。
列挙値 | |
---|---|
kBufferingModeBlockBuffered | 出力をブロックバッファします。デフォルトです。 |
kBufferingModeLineBuffered | 出力をラインバッファします。コンソールに出力する場合に設定されます。 |
kBufferingModeUnbuffered | 出力をバッファリングしません。 |
OutputStream.h の 32 行目に定義があります。
|
noexcept |
ストリームをフラッシュした後、ストリームを閉じます。成功した場合にはtrue
を返します。
true
false
の場合は途中で何らかの処理が失敗しています。失敗した場合でも再度クローズを行う必要はありません。 既にクローズが成功している場合は成功しtrue
を返します。
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlineprotectednoexcept |
|
inlineprotectednoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
ストリームにn
バイトのデータを書き込みます。
[in] | p | 書きこむデータへのポインタ |
[in] | n | バイト数 |
true
OutputStream.h の 70 行目に定義があります。
|
inlinenoexcept |
複数の非連続のバッファからデータをストリームに書き出します。
[in] | iov | iovcnt 個のバッファへのポインタとそのサイズ |
[in] | iovcnt | iov の個数 |
true
FileOutputStream
の場合、このメンバ関数はバッファを1つずつ書き出すより高速に動作するかもしれません。 ただし、nlib_fd_writev()
関数が保証しているような書き込みのアトミック性は保証されていないことに注意してください。 OutputStream.h の 88 行目に定義があります。
|
protected |
© 2012-2017 Nintendo Co., Ltd. All rights reserved.