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