nlib
nn::nlib::OutputConverterStream クラス

内部でデータ変換を行うOutputStreamのように振る舞うクラスの基底です。 [詳解]

#include "nn/nlib/OutputConverterStream.h"

+ nn::nlib::OutputConverterStream の継承関係図

公開メンバ関数

errno_t SetStream (OutputStream *ostr) noexcept
 ベースとなる出力ストリームを設定します。 [詳解]
 
OutputStreamGetStream () const noexcept
 ベースとなる入力ストリームを取得します。 [詳解]
 
- 基底クラス nn::nlib::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、発生していればfalseを返します。
 
constexpr OutputStream () noexcept
 デフォルトコンストラクタです。
 
virtual ~OutputStream () noexcept
 デストラクタです。
 

その他の継承メンバ

- 基底クラス nn::nlib::OutputStream に属する継承公開型
enum  BufferingMode {
  kBufferingModeBlockBuffered = 0,
  kBufferingModeLineBuffered,
  kBufferingModeUnbuffered
}
 OutputStreamのバッファリングモードです。 [詳解]
 
- 基底クラス nn::nlib::OutputStream に属する継承限定公開メンバ関数
void ResetBuffer (void *p, size_t nbytes) noexcept
 OutputStreamが持つバッファを設定します。 [詳解]
 
void SetError (errno_t e) const noexcept
 OutputStreamにエラーを設定します。 [詳解]
 
- 基底クラス nn::nlib::OutputStream に属する継承限定公開変数類
BufferingMode m_BufferingMode
 バッファリングモードが格納されています。 [詳解]
 

詳解

内部でデータ変換を行うOutputStreamのように振る舞うクラスの基底です。

説明
SetStream()関数を用いて出力ストリームを設定し、OutputStreamのI/Fを利用してデータを書き込むと、内部でデータ変換され出力ストリームに書きこまれます。 通常、ユーザーが直接利用することはありません。
何も変換しない(最も単純な)データ変換のためのコードは以下のような形になります。
OutputTransform::GetWorkBuffer()では、OutputStreamが利用するためのバッファを登録します。 OutputStreamはこのバッファにユーザーから与えられたデータをバッファします。 OutputTransform::Transform()では、OutputStreamからデータを読み込んで、変換したデータを書き出すことを行います。 OutputTransform::OnSetStream()は、OutputConverterStream::SetStream()が呼び出された時に行いたい処理を記述します。 OutputTransform::OnClose()は、ストリームが閉じられた際に呼び出されます。
最後にOutputConverterStreamTemplクラステンプレートを、OutputTransformの派生クラスで実体化することにより、内部でデータ変換を行う入力ストリームを定義できます。
class NoOutputTransform : public nlib_ns::OutputTransform {
public:
NoOutputTransform() {}
virtual errno_t Transform(nlib_ns::OutputStream* os, const void* p, size_t nbytes, bool do_flush) override {
if (!os->Write(p, nbytes)) { return os->GetErrorValue(); }
if (do_flush) {
if (!os->Flush()) { return os->GetErrorValue(); }
}
return 0;
}
virtual void* GetWorkBuffer(size_t* n) override {
*n = 128;
return buf_;
}
virtual errno_t OnSetStream(nlib_ns::OutputStream*) override {
return 0;
}
virtual errno_t OnClose(nlib_ns::OutputStream*) override {
return 0;
}
private:
unsigned char buf_[128];
NLIB_DISALLOW_COPY_AND_ASSIGN(NoOutputTransform);
};

OutputConverterStream.h40 行目に定義があります。

関数詳解

◆ GetStream()

nn::nlib::OutputConverterStream::GetStream ( ) const
inlinenoexcept

ベースとなる入力ストリームを取得します。

戻り値
出力ストリームへのポインタ

OutputConverterStream.h47 行目に定義があります。

◆ SetStream()

nn::nlib::OutputConverterStream::SetStream ( OutputStream ostr)
noexcept

ベースとなる出力ストリームを設定します。

引数
[in]ostrベースストリームへのポインタ
戻り値
0エラーがない場合
EEXIST既にストリームがセットされている場合
EINVALostrNULLだった場合
EBADFSetTransform()が未実行の場合
ENOMEMワークメモリの確保に失敗した場合

このクラス詳解は次のファイルから抽出されました: