Array.cpp
1//========================================================================
2//
3// Array.cpp
4//
5// Copyright 1996-2002 Glyph & Cog, LLC
6//
7//========================================================================
8
9#include <aconf.h>
10
11#ifdef USE_GCC_PRAGMAS
12#pragma implementation
13#endif
14
15#include <stddef.h>
16#include "gmem.h"
17#include "Object.h"
18#include "Array.h"
19
20//------------------------------------------------------------------------
21// Array
22//------------------------------------------------------------------------
23
24Array::Array(XRef *xrefA) {
25 xref = xrefA;
26 elems = NULL;
27 size = length = 0;
28 ref = 1;
29}
30
31Array::~Array() {
32 int i;
33
34 for (i = 0; i < length; ++i)
35 elems[i].free();
36 gfree(elems);
37}
38
39void Array::add(Object *elem) {
40 if (length + 1 > size) {
41 size += 8;
42 elems = (Object *)grealloc(elems, size * sizeof(Object));
43 }
44 elems[length] = *elem;
45 ++length;
46}
47
48Object *Array::get(int i, Object *obj) {
49 return elems[i].fetch(xref, obj);
50}
51
52Object *Array::getNF(int i, Object *obj) {
53 return elems[i].copy(obj);
54}