--- parser3/src/include/pa_string.h 2001/01/26 18:34:02 1.2 +++ parser3/src/include/pa_string.h 2001/01/27 15:21:05 1.7 @@ -1,5 +1,5 @@ /* - $Id: pa_string.h,v 1.2 2001/01/26 18:34:02 paf Exp $ + $Id: pa_string.h,v 1.7 2001/01/27 15:21:05 paf Exp $ */ /* @@ -20,6 +20,8 @@ #include +#include "pa_types.h" + class Pool; class String { @@ -35,10 +37,8 @@ private: // the pool I'm allocated on Pool *pool; - // last chank allocated count cache - int curr_chunk_rows; struct Chunk { - // the number of rows per chunk + // the number of rows in chunk int count; union Row { // chunk item @@ -60,11 +60,21 @@ private: // of the link to the next chunk to allocate Chunk::Row *link_row; +private: + // last chank allocated count + int curr_chunk_rows; + + // string size + size_t fsize; + + // used rows in all chunks + int fused_rows; + +private: // new&constructors made private to enforce factory manufacturing at pool void *operator new(size_t size, Pool *apool); void construct(Pool *apool); - String() { /* never */} String(Pool *apool) { construct(apool); } @@ -77,17 +87,22 @@ private: return append_here == link_row; } void expand(); - int used_rows(); public: String(String& src); - size_t size(); + size_t size() { return fsize; } + int used_rows() { return fused_rows; } char *c_str(); String& operator += (char *src); bool operator == (String& src); - unsigned int hash_code(); + uint hash_code(); + +private: //disabled + + String& operator = (String& src) { return *this; } + }; #endif