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