1/*
2* Copyright 2010, Haiku. All rights reserved.
3* Distributed under the terms of the MIT License.
4*
5* Authors:
6*		Michael Pfeiffer
7*/
8#include<Debug.h>
9
10template<typename TYPE>
11GPArray<TYPE>::GPArray()
12	:
13	fArray(NULL),
14	fSize(0)
15{
16
17}
18
19template<typename TYPE>
20GPArray<TYPE>::~GPArray()
21{
22	if (fArray != NULL) {
23		for (int i = 0; i < fSize; i ++)
24			delete fArray[i];
25		delete[] fArray;
26		fArray = NULL;
27	}
28}
29
30
31template<typename TYPE>
32void
33GPArray<TYPE>::SetSize(int size)
34{
35	ASSERT(fSize == 0);
36	fArray = new PointerType[size];
37	if (fArray == NULL)
38		return;
39
40	fSize = size;
41	for (int i = 0; i < size; i ++) {
42		fArray[i] = NULL;
43	}
44}
45
46
47template<typename TYPE>
48int
49GPArray<TYPE>::Size() const
50{
51	return fSize;
52}
53
54
55template<typename TYPE>
56void
57GPArray<TYPE>::DecreaseSize()
58{
59	ASSERT(fArray != NULL);
60	ASSERT(fArray[fSize-1] == NULL);
61	fSize --;
62}
63
64template<typename TYPE>
65TYPE**
66GPArray<TYPE>::Array()
67{
68	return fArray;
69}
70
71
72template<typename TYPE>
73TYPE **
74GPArray<TYPE>::Array() const
75{
76	return fArray;
77}
78
79template<typename TYPE>
80bool
81GPArray<TYPE>::IsEmpty() const
82{
83	return fSize == 0;
84}
85