00001 //======================================================================== 00002 // 00003 // Array.cc 00004 // 00005 // Copyright 1996-2002 Glyph & Cog, LLC 00006 // 00007 //======================================================================== 00008 00009 #ifdef __GNUC__ 00010 #pragma implementation 00011 #endif 00012 00013 #include <aconf.h> 00014 #include <stddef.h> 00015 #include "gmem.h" 00016 #include "Object.h" 00017 #include "Array.h" 00018 00019 //------------------------------------------------------------------------ 00020 // Array 00021 //------------------------------------------------------------------------ 00022 00023 Array::Array(XRef *xrefA) { 00024 xref = xrefA; 00025 elems = NULL; 00026 size = length = 0; 00027 ref = 1; 00028 } 00029 00030 Array::~Array() { 00031 int i; 00032 00033 for (i = 0; i < length; ++i) 00034 elems[i].free(); 00035 gfree(elems); 00036 } 00037 00038 void Array::add(Object *elem) { 00039 if (length + 1 > size) { 00040 size += 8; 00041 elems = (Object *)grealloc(elems, size * sizeof(Object)); 00042 } 00043 elems[length] = *elem; 00044 ++length; 00045 } 00046 00047 Object *Array::get(int i, Object *obj) { 00048 return elems[i].fetch(xref, obj); 00049 } 00050 00051 Object *Array::getNF(int i, Object *obj) { 00052 return elems[i].copy(obj); 00053 }
1.4.2