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