Diff for /parser3/src/include/pa_array.h between versions 1.2 and 1.7

version 1.2, 2001/01/27 15:21:05 version 1.7, 2001/01/29 15:56:03
Line 26  class Pool; Line 26  class Pool;
   
 class Array {  class Array {
 public:  public:
   
         typedef void *Item;          typedef void *Item;
   
         enum {          enum {
                 CR_PREALLOCATED_COUNT=10,                  CR_INITIAL_ROWS_DEFAULT=10,
                 CR_GROW_PERCENT=60                  CR_GROW_PERCENT=60
         };          };
   
 private:  public:
         friend Pool;  
           void *operator new(size_t size, Pool *apool);
           Array(Pool *apool, int initial_rows=CR_INITIAL_ROWS_DEFAULT);
   
           int size() { return fused_rows; }
           Array& operator += (Item src);
           Array& operator += (Array& src);
           Item& operator [] (int index);
   
   protected:
   
         // the pool I'm allocated on          // the pool I'm allocated on
         Pool *pool;          Pool *pool;
   
   private:
   
         struct Chunk {          struct Chunk {
                 // the number of rows in chunk                  // the number of rows in chunk
                 int count;                  int count;
Line 50  private: Line 62  private:
         }          }
                 *head;  // the head chunk of the chunk chain                  *head;  // the head chunk of the chunk chain
   
           // last allocated chunk
           // helps appending Arrays
           Chunk *tail;
   
         // next append would write to this record          // next append would write to this record
         Chunk::Row *append_here;          Chunk::Row *append_here;
                   
Line 58  private: Line 74  private:
         Chunk::Row *link_row;          Chunk::Row *link_row;
   
 private:  private:
         // last chank allocated count  
         int curr_chunk_rows;  
   
         // array size          // array size
         int fused_rows;          int fused_rows;
   
         int cache_index;          int cache_chunk_base;
         Chunk::Row *cache_row;          Chunk *cache_chunk;
         int cache_countdown;  
         Chunk::Row *cache_link_row;  
                   
 private:  private:
         // new&constructors made private to enforce factory manufacturing at pool  
         void *operator new(size_t size, Pool *apool);  
   
         void construct(Pool *apool, int initial_rows);  
         Array(Pool *apool) {  
                 construct(apool, CR_PREALLOCATED_COUNT);   
         }  
         Array(Pool *apool, int initial_rows) {  
                 construct(apool, initial_rows);   
         }  
   
   
         bool chunk_is_full() {          bool chunk_is_full() {
                 return append_here == link_row;                  return append_here == link_row;
         }          }
         void expand();          void expand(int chunk_rows);
   
 public:  
   
         int size() { return fused_rows; }  
         Array& operator += (Item src);  
   
         /*  
         void put(int index, Item item);  
         Item get(int index);  
         */  
         Item& operator [] (int index);  
   
 private: //disabled  private: //disabled
   
         Array& operator = (Array& src) { return *this; }          Array(Array&) {}
         Array(Array& src) {}          Array& operator = (Array&) { return *this; }
 };  };
   
 #endif  #endif

Removed from v.1.2  
changed lines
  Added in v.1.7


E-mail: