OSDN Git Service

reader_interfaceのファイル読み出しにおける実装であるFileReaderを追加した。
[simplecms/utakata.git] / src / string_reader.h
index 673965a..8feeed7 100644 (file)
@@ -56,13 +56,12 @@ class StringReader : public IReader, private utility::Uncopyable {
   // 現在の読み出し位置を返します。
   size_t GetPos() const;
 
-  // 読み出し位置を1バイト分だけ戻します。読み出し位置がすでに先頭
-  // である場合でも、例外を発生させる必要はありません。
-  void Unget();
-
   // 現在位置から、指定された方向に指定された量だけ読み出し位置を進めます。
-  // 指定された移動量のうち、実際に移動した量を返します。
-  size_t Seek(size_t seekpos, SeekDirection direciton);
+  // 正しく移動できた場合、trueを返します。
+  // seek_differenceには、実際に移動した量を設定するため、有効であるポインタ
+  // を渡さなければなりません。
+  bool Seek(int seekpos, SeekDirection direciton);
+  bool Seek(int seekpos, SeekDirection direciton, size_t* seek_difference);
 
   // 読み出し位置を先頭に戻します。
   void Begin();
@@ -75,6 +74,10 @@ class StringReader : public IReader, private utility::Uncopyable {
 
  private:
 
+  // 内部で利用されます。IsEof = trueである場合に、例外を発生
+  // させます。
+  void CheckInternal();
+
   // 初期化された読出し用の文字列です。内部では書込みなどは行われないため、
   // constです。
   const std::string buffer_;