--- parser3/src/main/Attic/pa_array.C 2001/01/29 20:10:32 1.10 +++ parser3/src/main/Attic/pa_array.C 2001/02/21 17:36:58 1.16 @@ -1,21 +1,17 @@ /* - $Id: pa_array.C,v 1.10 2001/01/29 20:10:32 paf Exp $ + $Id: pa_array.C,v 1.16 2001/02/21 17:36:58 paf Exp $ */ #include #include "pa_pool.h" #include "pa_array.h" -#include "pa_error.h" - -void *Array::operator new(size_t size, Pool& apool) { - return apool.malloc(size); -} +#include "pa_exception.h" Array::Array(Pool& apool, int initial_rows) : - pool(apool) { + Pooled(apool) { head=tail=static_cast( - pool.malloc(sizeof(int)+sizeof(Chunk::Row)*initial_rows+sizeof(Chunk *))); + pool().malloc(sizeof(int)+sizeof(Chunk::Row)*initial_rows+sizeof(Chunk *))); head->count=initial_rows; append_here=head->rows; link_row=&head->rows[initial_rows]; @@ -28,7 +24,7 @@ Array::Array(Pool& apool, int initial_ro void Array::expand(int chunk_rows) { Chunk *chunk=tail=static_cast( - pool.malloc(sizeof(int)+sizeof(Chunk::Row)*chunk_rows+sizeof(Chunk *))); + pool().malloc(sizeof(int)+sizeof(Chunk::Row)*chunk_rows+sizeof(Chunk *))); chunk->count=chunk_rows; link_row->link=chunk; append_here=chunk->rows; @@ -47,9 +43,10 @@ Array& Array::operator += (Item *src) { return *this; } -Array::Item *Array::get(int index) { +Array::Item *Array::get(int index) const { if(!(index>=0 && indexrows[index-cache_chunk_base].item; } -Array& Array::append_array(Array& src) { +void Array::put(int index, Item *item) { + if(!(index>=0 && index=cache_chunk_base && indexcount)) { + int count=cache_chunk->count; + cache_chunk_base+=count; + cache_chunk=cache_chunk->rows[count].link; + } + + cache_chunk->rows[index-cache_chunk_base].item=item; +} + +Array& Array::append_array(const Array& src) { int src_used_rows=src.fused_rows; int last_chunk_rows_left=link_row-append_here;