OSDN Git Service

231480f7782c6bca565fd32dbaac7fc3a355d3a1
[simplecms/utakata.git] / src / common / textarrayformat.h
1 // テキスト処理を行うテストのデバッグ用途に利用される、
2 // 簡単なテキストフォーマットであるTextArrayFormatの実装を提供します。
3 // TextArrayFormatは、TextArrayGeneratorにて文字列からの生成を行い
4 // TextArrayReaderによって、テキストブロックを取得することができます。
5 // 
6 // これらは柔軟に行うことができるため、テキストを扱うテストデータを
7 // 複数作成したい場合に有用です。
8 #ifndef _UTAKATA_SRC_COMMON_TEXTARRAYFORMAT_H_
9 #define _UTAKATA_SRC_COMMON_TEXTARRAYFORMAT_H_
10
11 #include <string>
12 #include <vector>
13 #include <exception>
14
15 namespace utility {
16
17 namespace textarrayformat {
18
19 class TextArrayReader {
20  public:
21
22   explicit TextArrayReader(const TextArrayGenerator& is);
23   virtual ~TextArrayReader() {}
24
25   // 指定したストリームの先頭からフォーマットに従ってブロック単位
26   // への切り出しを行う。
27   // この関数が成功した場合、以前のブロックなどは保存されない。
28   void open(std::istream& is);
29
30   // 指定したブロックを取得する。
31   // 番号を指定しない場合には、最初に取得したブロックが取得される。
32   std::string get(int = 0);
33
34   // ブロックのリストを取得する。
35   const std::vector<std::string>& getBlock() const {return blocks_;}
36
37  private:
38
39   // ファイル中のスプリッタを行ごと退避する。
40   std::string splitter_;
41
42   // テキストのブロックを退避しておくリスト
43   std::vector<std::string> blocks_;
44 };
45
46 };
47 }; // end of namespace utility
48
49 #endif /* _C:_MEADOW_DEVELOP_UTAKATA_SRC_COMMON_TEXTARRAYFORMAT_H_ */