filters

Array.cc

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