nlib
nn::nlib::InputConverterStream クラス

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

#include "nn/nlib/InputConverterStream.h"

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

公開メンバ関数

errno_t SetStream (InputStream *istr) noexcept
 変換前のデータを読み込む入力ストリームを設定します。 [詳解]
 
InputStreamGetStream () const noexcept
 変換前のデータを読み込む入力ストリームを取得します。 [詳解]
 
- 基底クラス nn::nlib::InputStream に属する継承公開メンバ関数
errno_t GetErrorValue () const noexcept
 エラー値を取得します。 [詳解]
 
size_t Pos () const noexcept
 ストリーム上の現在位置を返します。 [詳解]
 
uint64_t Pos64 () const noexcept
 ストリーム上の現在位置を64bit値で返します。 [詳解]
 
bool IsEos () noexcept
 ストリームを最後まで読み終えている場合trueを返します。最後まで読み終えていない場合やエラーが発生している場合はfalseを返します。 [詳解]
 
int Read () noexcept
 ストリームから1バイトを読み込みます。 [詳解]
 
NLIB_CHECK_RESULT int Peek () noexcept
 ストリームを消費せずに次の1バイトを読み込みます。 [詳解]
 
size_t Skip (size_t nbytes) noexcept
 nBytes を読み飛ばします。 [詳解]
 
size_t Read (void *ptr, size_t nbytes) noexcept
 ptr で示されるメモリにnBytes 読み込みます。 [詳解]
 
bool Close () noexcept
 ストリームを閉じます。成功した場合にはtrueを返します。 [詳解]
 
 operator bool () const
 内部でエラーが発生していなければtrueを返します。
 
constexpr InputStream () noexcept
 コンストラクタです。派生クラスから呼び出されます。
 
virtual ~InputStream () noexcept
 デストラクタです。派生クラスから呼び出されます。
 

その他の継承メンバ

- 基底クラス nn::nlib::InputStream に属する継承限定公開メンバ関数
void ResetBuffer (void *p, size_t nbytes) noexcept
 InputStreamが持つバッファを設定します。 [詳解]
 
void SetError (errno_t e) const noexcept
 InputStreamにエラーを設定します。 [詳解]
 

詳解

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

説明
SetStream()関数を用いて入力ストリームを設定しデータを読み込むと、データ変換の結果をInputStreamのインターフェイスで読み込むことができます。 通常、ユーザーが直接利用することはありません。
何も変換しない(最も単純な)データ変換のためのコードは以下のような形になります。
class NoInputTransform : public InputTransform {
public:
NoInputTransform() {}
virtual errno_t Transform(InputStream* is, void* p, size_t size, size_t* nbytes) {
// isから変換前のデータを読み込んで、(データを変換して)メモリに設定します。
*nBytes = is->Read(p, size);
if (*nBytes == 0) return is->GetErrorValue();
return 0;
}
virtual void* GetWorkBuffer(size_t* n) {
// 必要なワークメモリを登録。
// InputConverterStreamの基底クラスのInputStream(ユーザーが値を取り出す入力ストリーム)
// はこのワークメモリからデータを取り出していくことになります。
*n = 128;
return buf_;
}
virtual errno_t OnSetStream(InputStream* is) {
// ストリームが設定された時に行う処理を記述
return 0;
}
virtual errno_t OnClose() {
// ストリームが閉じた時の後処理を行う
return 0;
}
private:
unsigned char buf_[128]; //
NLIB_DISALLOW_COPY_AND_ASSIGN(NoInputTransform);
};
//
typedef InputConverterStreamTempl<NoInputTransform> NoConvertInputStream;

InputConverterStream.h35 行目に定義があります。

関数詳解

§ GetStream()

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

変換前のデータを読み込む入力ストリームを取得します。

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

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

§ SetStream()

nn::nlib::InputConverterStream::SetStream ( InputStream istr)
noexcept

変換前のデータを読み込む入力ストリームを設定します。

引数
[in]istr変換前のデータを読み込むストリームへのポインタ
戻り値
0エラーがない場合
EEXIST既にストリームがセットされている場合
EINVAListrNULLだった場合
EBADFSetTransform()が未実行の場合
ENOMEMワークメモリの確保に失敗した場合

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