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