1 // Copyright 2014 PDFium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7 #ifndef _JBIG2_LIST_H_ 8 #define _JBIG2_LIST_H_ 9 #include "JBig2_Define.h" 10 #include "JBig2_Object.h" 11 template <class TYPE> 12 class CJBig2_List : public CJBig2_Object 13 { 14 public: 15 16 CJBig2_List(FX_INT32 nSize = 8) 17 { 18 m_nSize = nSize; 19 m_pArray = (TYPE**)m_pModule->JBig2_Malloc2(sizeof(TYPE*), nSize); 20 m_nLength = 0; 21 } 22 ~CJBig2_List()23 ~CJBig2_List() 24 { 25 clear(); 26 m_pModule->JBig2_Free(m_pArray); 27 } 28 clear()29 void clear() 30 { 31 FX_INT32 i; 32 for(i = 0; i < m_nLength; i++) { 33 delete m_pArray[i]; 34 } 35 m_nLength = 0; 36 } 37 addItem(TYPE * pItem)38 void addItem(TYPE *pItem) 39 { 40 if(m_nLength >= m_nSize) { 41 m_nSize += 8; 42 m_pArray = (TYPE**)m_pModule->JBig2_Realloc(m_pArray, sizeof(TYPE*)*m_nSize); 43 } 44 m_pArray[m_nLength++] = pItem; 45 } 46 47 getLength()48 FX_INT32 getLength() 49 { 50 return m_nLength; 51 } 52 getAt(FX_INT32 nIndex)53 TYPE *getAt(FX_INT32 nIndex) 54 { 55 return m_pArray[nIndex]; 56 } 57 getLast()58 TYPE *getLast() 59 { 60 return m_pArray[m_nLength - 1]; 61 } 62 private: 63 FX_INT32 m_nSize; 64 TYPE **m_pArray; 65 FX_INT32 m_nLength; 66 }; 67 #endif 68