内部でデータ変換を行う InputStream のように振る舞うクラスの基底です。
[詳解]
#include "nn/nlib/InputConverterStream.h"
内部でデータ変換を行う InputStream のように振る舞うクラスの基底です。
- 説明
SetStream()
関数を用いて入力ストリームを設定しデータを読み込むと、データ変換の結果をInputStream
のインターフェイスで読み込むことができます。 通常、ユーザーが直接利用することはありません。
- 何も変換しない(最も単純な)データ変換のためのコードは以下のような形になります。
InputTransform::GetWorkBuffer()
では、InputStream
が利用するためのバッファを登録します。 InputStream
はこのバッファからデータを取り出してユーザーに提供します。 InputTransform::Transform()
では、InputStream
からデータを読み込んで、変換したデータを書き出すことを行います。 InputTransform::OnSetStream()
は、InputConverterStream::SetStream()
が呼び出された時に行いたい処理を記述します。 InputTransform::OnClose()
は、ストリームが閉じられた際に呼び出されます。
- 最後に
InputConverterStreamTempl
クラステンプレートを、InputTransform
の派生クラスで実体化することにより、内部でデータ変換を行う入力ストリームを定義できます。 class NoInputTransform : public nlib_ns::InputTransform {
public:
NoInputTransform() {}
*nbytes = is->
Read(p, size);
return 0;
}
virtual void* GetWorkBuffer(size_t* n) override {
*n = 128;
return buf_;
}
return 0;
}
virtual errno_t OnClose()
override {
return 0;
}
private:
unsigned char buf_[128];
};
InputConverterStream.h の 48 行目に定義があります。
◆ GetStream()
nn::nlib::InputConverterStream::GetStream |
( |
| ) |
const |
|
inlinenoexcept |
◆ SetStream()
nn::nlib::InputConverterStream::SetStream |
( |
InputStream * |
istr | ) |
|
|
noexcept |
変換前のデータを読み込む入力ストリームを設定します。
- 引数
-
[in] | istr | 変換前のデータを読み込むストリームへのポインタ |
- 戻り値
-
0 | エラーがない場合 |
EEXIST | 既にストリームがセットされている場合 |
EINVAL | istr がNULL だった場合 |
EBADF | SetTransform() が未実行の場合 |
ENOMEM | ワークメモリの確保に失敗した場合 |
このクラス詳解は次のファイルから抽出されました: