--- parser3/src/include/pa_string.h 2001/02/13 10:30:22 1.18 +++ parser3/src/include/pa_string.h 2001/02/20 18:45:51 1.22 @@ -1,5 +1,5 @@ /* - $Id: pa_string.h,v 1.18 2001/02/13 10:30:22 paf Exp $ + $Id: pa_string.h,v 1.22 2001/02/20 18:45:51 paf Exp $ */ /* @@ -28,17 +28,17 @@ #include "pa_types.h" #ifndef NO_STRING_ORIGIN -# define STRING_APPEND_PARAMS const char *src, char *file, uint line -# define APPEND(src, file, line) real_append(src, file, line) +# define STRING_APPEND_PARAMS const char *src, size_t size, char *file, uint line +# define APPEND(src, size, file, line) real_append(src, size, file, line) #else -# define STRING_APPEND_PARAMS const char *src -# define APPEND(src, file, line) real_append(src) +# define STRING_APPEND_PARAMS const char *src, size_t size +# define APPEND(src, size, file, line) real_append(src, size) #endif -class String_iterator; +//class String_iterator; class String : public Pooled { - friend String_iterator; +// friend String_iterator; public: enum { CR_PREALLOCATED_COUNT=5, @@ -49,12 +49,13 @@ 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; String& real_append(STRING_APPEND_PARAMS); bool operator == (const String& src) const; - String& append(const String_iterator& begin, const String_iterator& end); +// String& append(const String_iterator& begin, const String_iterator& end); uint hash_code() const; @@ -109,10 +110,11 @@ private: //disabled }; - +/* class Char_types { public: Char_types(); + void set(char from, char to, int type); void set(char c, int type) { types[static_cast(c)]=static_cast(type); } @@ -120,38 +122,40 @@ public: return static_cast(types[static_cast(c)]); } private: - char type[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 position; } + 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; + String::Chunk::Row *read_here; // position in text, eof when 0 - char *position; + const char *position; // when read_here reaches this row, move to the next chunk - Chunk::Row *link_row; + String::Chunk::Row *link_row; protected: // advances position by one char void skip(); }; +*/ #endif