1 // 各種デバイスからバイナリデータを読みだすためのインターフェースを
3 // ここで定義されたインターフェースでは、文字列には変換されず、
5 #ifndef _UTAKATA_SRC_READER_INTERFACE_H_
6 #define _UTAKATA_SRC_READER_INTERFACE_H_
10 #include "src/exception.h"
11 #include "src/unicode.h"
21 class EndOfDeviceException : public exception::Exception {
22 // reader::IReaderインターフェースの派生クラスにおいて、
23 // 末尾に到達しているにも関わらず読み出しが行われた場合に送出されます。
25 EndOfDeviceException(const unicode::UniString message,
26 const utakata::exception::ExceptionInfo& info) :
27 Exception(message, info) {}
29 EndOfDeviceException(const utakata::exception::Exception& exception,
30 const unicode::UniString message,
31 const utakata::exception::ExceptionInfo& info) :
32 Exception(exception, message, info) {}
34 virtual const char* what() const throw() {return "EndOfDeviceException";}
37 class IOException : public exception::Exception {
38 // reader::IReaderインターフェースの派生クラスにおいて、
41 IOException(const unicode::UniString message,
42 const utakata::exception::ExceptionInfo& info) :
43 Exception(message, info) {}
45 IOException(const utakata::exception::Exception& exception,
46 const unicode::UniString message,
47 const utakata::exception::ExceptionInfo& info) :
48 Exception(exception, message, info) {}
50 virtual const char* what() const throw() {return "IOException";}
53 // IReader::Seekの方向を制御します。
59 // 各種デバイスから読み出しを行うためのインターフェースです。
60 // このインターフェースを実装したクラスは、すべてのインターフェース
67 // 末尾に到達してなお読み出しが行われた場合、reader::EndOfDeviceException
69 // readでは、読み出し位置を更新します。
70 virtual unsigned int Read() = 0;
71 virtual std::vector<unsigned int> Read(size_t num) = 0;
73 // デバイスから1バイトの読出しを行いますが、内部の読み出し位置は変化
75 // peekした後、readを行うと、全く同一のバイトが得られます。
76 virtual unsigned int Peek() = 0;
77 virtual std::vector<unsigned int> Peek(size_t num) = 0;
80 virtual unsigned int GetPos() const = 0;
82 // 現在位置から、指定された方向に指定された量だけ読み出し位置を進めます。
84 virtual bool Seek(int seekpos, SeekDirection direciton) = 0;
86 // 現在位置から、指定された方向に指定された量だけ読み出し位置を進め、
89 // seek_differenceには、有効なsize_tのポインタを渡す必要があります。
90 virtual bool Seek(int seekpos, SeekDirection direciton,
91 size_t* seek_difference) = 0;
94 virtual void Begin() = 0;
97 virtual unsigned int GetSize() const = 0;
99 // 読み出し位置が末尾であるかどうかを返します。
100 virtual bool IsEof() const = 0;
105 #endif /* __HOME_DERUI_DEVELOP_UTAKATA_SRC_READER_INTERFACE_H_ */