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

version 1.7, 2001/01/29 15:56:03 version 1.17, 2001/02/21 17:36:29
Line 20 Line 20
   
 #include <stddef.h>  #include <stddef.h>
   
   #include "pa_pool.h"
 #include "pa_types.h"  #include "pa_types.h"
   #include "pa_string.h"
   
 class Pool;  class Array : public Pooled {
   
 class Array {  
 public:  public:
   
         typedef void *Item;          typedef void Item;
   
         enum {          enum {
                 CR_INITIAL_ROWS_DEFAULT=10,                  CR_INITIAL_ROWS_DEFAULT=10,
Line 36  public: Line 36  public:
   
 public:  public:
   
         void *operator new(size_t size, Pool *apool);          Array(Pool& apool, int initial_rows=CR_INITIAL_ROWS_DEFAULT);
         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:          int size() const { return fused_rows; }
           Array& operator += (Item *src);
           Array& append_array(const Array& src);
           Item *quick_get(int index) const {
                   // considering these true:
                   //   index increments from 0 to size()-1
                   //   index>=0 && index<size()
                   //   index>=cache_chunk_base
   
                   // next chunk will be with "index" row
                   if(!(index<cache_chunk_base+cache_chunk->count)) {
                           int count=cache_chunk->count;
                           cache_chunk_base+=count;
                           cache_chunk=cache_chunk->rows[count].link;
                   }
                   
                   return cache_chunk->rows[index-cache_chunk_base].item;
           }
   
         // the pool I'm allocated on          Item *get(int index) const;
         Pool *pool;          void put(int index, Item *item);
           const char *get_cstr(int index) const { 
                   return static_cast<const char *>(get(index)); 
           }
           const String *get_string(int index) const { 
                   return static_cast<const String *>(get(index)); 
           }
   
 private:  private:
   
Line 55  private: Line 72  private:
                 // the number of rows in chunk                  // the number of rows in chunk
                 int count;                  int count;
                 union Row {                  union Row {
                         Item item;                          Item *item;
                         Chunk *link;  // link to the next chunk in chain                          Chunk *link;  // link to the next chunk in chain
                 } rows[1];                  } rows[1];
                 // next rows are here                  // next rows are here
Line 78  private: Line 95  private:
         // array size          // array size
         int fused_rows;          int fused_rows;
   
         int cache_chunk_base;          mutable int cache_chunk_base;
         Chunk *cache_chunk;          mutable Chunk *cache_chunk;
                   
 private:  private:
   
Line 90  private: Line 107  private:
   
 private: //disabled  private: //disabled
   
         Array(Array&) {}          //Array(Array&) { }
         Array& operator = (Array&) { return *this; }          Array& operator = (const Array&) { return *this; }
 };  };
   
 #endif  #endif

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


E-mail: