--- parser3/src/include/pa_string.h 2001/02/12 13:26:54 1.16 +++ parser3/src/include/pa_string.h 2001/02/13 10:30:22 1.18 @@ -1,5 +1,5 @@ /* - $Id: pa_string.h,v 1.16 2001/02/12 13:26:54 paf Exp $ + $Id: pa_string.h,v 1.18 2001/02/13 10:30:22 paf Exp $ */ /* @@ -110,13 +110,17 @@ private: //disabled }; -class Char_set { +class Char_types { public: - Char_set(); - void include(char c) { bools[static_cast(c)]=true; } - bool in(char c) { return bools[static_cast(c)]; } + Char_types(); + void set(char c, int type) { + types[static_cast(c)]=static_cast(type); + } + int get(char c) { + return static_cast(types[static_cast(c)]); + } private: - bool bools[0x100]; + char type[0x100]; }; class String_iterator { @@ -126,10 +130,10 @@ public: void operator ++() { skip(); } void operator ++(int) { skip(); } - void skip_to(Char_set& set); - void skip_to(char c); + int skip_to(Char_type& types); + bool skip_to(char c); - bool eof() { return feof; } + bool eof() { return position; } // current char char operator() const; @@ -139,19 +143,15 @@ protected: String& string; // the row in which we are Chunk::Row *read_here; - // position in that row's string fragment - int offset; + // position in text, eof when 0 + char *position; // when read_here reaches this row, move to the next chunk Chunk::Row *link_row; - bool feof; - protected: - // advances position on one char - void skip() { - - } + // advances position by one char + void skip(); }; #endif