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