--- parser3/src/include/pa_string.h 2001/02/13 10:00:27 1.17 +++ parser3/src/include/pa_string.h 2001/02/14 15:19:02 1.21 @@ -1,5 +1,5 @@ /* - $Id: pa_string.h,v 1.17 2001/02/13 10:00:27 paf Exp $ + $Id: pa_string.h,v 1.21 2001/02/14 15:19:02 paf Exp $ */ /* @@ -49,6 +49,7 @@ public: String(Pool& apool); String(const String& src); + //String(const String_iterator& begin, const String_iterator& end); size_t size() const { return fsize; } int used_rows() const { return fused_rows; } char *cstr() const; @@ -110,45 +111,45 @@ private: //disabled }; -class Char_type { +class Char_types { public: - Char_type(); - void set(char c, int value) { - values[static_cast(c)]=static_cast(value); + Char_types(); + void set(char from, char to, int type); + void set(char c, int type) { + types[static_cast(c)]=static_cast(type); } int get(char c) { - return static_cast(values[static_cast(c)]); + return static_cast(types[static_cast(c)]); } private: - char values[0x100]; + char types[0x100]; }; class String_iterator { public: String_iterator(String& astring); + String_iterator(String_iterator& asi); void operator ++() { skip(); } void operator ++(int) { skip(); } - int skip_to(Char_type& types); + int skip_to(Char_types& types); bool skip_to(char c); - bool eof() { return feof; } + bool eof() { return position==0; } // current char - char operator() const; + char operator() () const; protected: // home string String& string; // the row in which we are - Chunk::Row *read_here; - // position in that row's string fragment - int offset; + String::Chunk::Row *read_here; + // position in text, eof when 0 + const char *position; // when read_here reaches this row, move to the next chunk - Chunk::Row *link_row; - - bool feof; + String::Chunk::Row *link_row; protected: