1 // 文字列、あるいはファイルからデータを読みだすためのフロントエンドです。
2 // このフロントエンドは、文字列・ファイル等からデータを読出すだけの
3 // 機能を持つ別のインターフェースと組み合わせ、ITranscoderを適用した
5 #ifndef _UTAKATA_SRC_READER_H_
6 #define _UTAKATA_SRC_READER_H_
13 #include "smart_ptr.h"
17 namespace transcoder {
24 class EncodingReader {
25 // 渡されたistreamから、Unicodeスカラー値を抽出する。
26 // istreamからUnicodeスカラー値を抽出するのは、全て
27 // Transcoderを介するようにする。
31 StreamReader(smart_ptr<std::istream>& s,
32 const smart_ptr<transcoder::ITranscoder>& t);
33 virtual ~StreamReader() {}
35 virtual unsigned long read();
36 virtual std::vector<unsigned long> read(size_t num);
38 virtual unsigned long peek();
40 // 現在streamのどこまでを読んでいるのかを返す。
41 virtual size_t pos() const;
43 // 渡されたvectorをstreamに戻す。
44 virtual void unget(unsigned long ch);
46 // 現在のportが終了時点かどうかを返す。
52 // validチェックは成功しない場合にはPortExceptionが発生する。
55 smart_ptr<std::istream> stream_;
56 smart_ptr<transcoder::ITranscoder> trans_;
65 #endif /* __HOME_DERUI_DEVELOP_UTAKATA_SRC_READER_H_ */