// Copyright 2014 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #ifndef _JBIG2_LIST_H_ #define _JBIG2_LIST_H_ #include "JBig2_Define.h" #include "JBig2_Object.h" template class CJBig2_List : public CJBig2_Object { public: CJBig2_List(FX_INT32 nSize = 8) { m_nSize = nSize; m_pArray = (TYPE**)m_pModule->JBig2_Malloc2(sizeof(TYPE*), nSize); m_nLength = 0; } ~CJBig2_List() { clear(); m_pModule->JBig2_Free(m_pArray); } void clear() { FX_INT32 i; for(i = 0; i < m_nLength; i++) { delete m_pArray[i]; } m_nLength = 0; } void addItem(TYPE *pItem) { if(m_nLength >= m_nSize) { m_nSize += 8; m_pArray = (TYPE**)m_pModule->JBig2_Realloc(m_pArray, sizeof(TYPE*)*m_nSize); } m_pArray[m_nLength++] = pItem; } FX_INT32 getLength() { return m_nLength; } TYPE *getAt(FX_INT32 nIndex) { return m_pArray[nIndex]; } TYPE *getLast() { return m_pArray[m_nLength - 1]; } private: FX_INT32 m_nSize; TYPE **m_pArray; FX_INT32 m_nLength; }; #endif