Merge XFA to PDFium master at 4dc95e7 on 10/28/2014
[pdfium.git] / xfa / src / fxbarcode / src / BC_CommonByteArray.cpp
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 #include "barcode.h"\r
8 #include "include/BC_CommonByteArray.h"\r
9 CBC_CommonByteArray::CBC_CommonByteArray()\r
10 {\r
11     m_bytes = NULL;\r
12     m_size = 0;\r
13     m_index = 0;\r
14 }\r
15 CBC_CommonByteArray::CBC_CommonByteArray(FX_INT32 size)\r
16 {\r
17     m_size = size;\r
18     m_bytes = FX_Alloc(FX_BYTE, size);\r
19     FXSYS_memset32(m_bytes, 0, size);\r
20     m_index = 0;\r
21 }\r
22 CBC_CommonByteArray::CBC_CommonByteArray(FX_BYTE* byteArray, FX_INT32 size)\r
23 {\r
24     m_size = size;\r
25     m_bytes = FX_Alloc(FX_BYTE, size);\r
26     FXSYS_memcpy32(m_bytes, byteArray, size);\r
27     m_index = size;\r
28 }\r
29 CBC_CommonByteArray::~CBC_CommonByteArray()\r
30 {\r
31     if ( m_bytes != NULL) {\r
32         FX_Free( m_bytes );\r
33         m_bytes = NULL;\r
34     }\r
35     m_index = 0;\r
36     m_size = 0;\r
37 }\r
38 FX_INT32 CBC_CommonByteArray::At(FX_INT32 index)\r
39 {\r
40     return m_bytes[index] & 0xff;\r
41 }\r
42 void CBC_CommonByteArray::Set(FX_INT32 index, FX_INT32 value)\r
43 {\r
44     m_bytes[index] = (FX_BYTE) value;\r
45 }\r
46 FX_INT32 CBC_CommonByteArray::Size()\r
47 {\r
48     return m_size;\r
49 }\r
50 FX_BOOL CBC_CommonByteArray::IsEmpty()\r
51 {\r
52     return m_size == 0;\r
53 }\r
54 void CBC_CommonByteArray::AppendByte(FX_INT32 value)\r
55 {\r
56     if (m_size == 0 || m_index >= m_size) {\r
57         FX_INT32 newSize = FX_MAX(32, m_size << 1);\r
58         Reserve(newSize);\r
59     }\r
60     m_bytes[m_index] = (FX_BYTE)value;\r
61     m_index++;\r
62 }\r
63 void CBC_CommonByteArray::Reserve(FX_INT32 capacity)\r
64 {\r
65     if (m_bytes == NULL || m_size < capacity) {\r
66         FX_BYTE *newArray = FX_Alloc(FX_BYTE, capacity);\r
67         FXSYS_memset32(newArray, 0, capacity);\r
68         if (m_bytes != NULL) {\r
69             FXSYS_memcpy32(newArray, m_bytes, m_size);\r
70             FX_Free( m_bytes );\r
71         }\r
72         m_bytes = newArray;\r
73         m_size = capacity;\r
74     }\r
75 }\r
76 void CBC_CommonByteArray::Set(FX_BYTE* source, FX_INT32 offset, FX_INT32 count)\r
77 {\r
78     if (m_bytes != NULL) {\r
79         FX_Free( m_bytes );\r
80     }\r
81     m_bytes = FX_Alloc(FX_BYTE, count);\r
82     m_size = count;\r
83     FXSYS_memcpy32(m_bytes, source + offset, count);\r
84     m_index = count;\r
85 }\r
86 void CBC_CommonByteArray::Set(CFX_ByteArray* source, FX_INT32 offset, FX_INT32 count)\r
87 {\r
88     if (m_bytes != NULL) {\r
89         FX_Free( m_bytes );\r
90     }\r
91     m_bytes =  FX_Alloc(FX_BYTE, count);\r
92     m_size = count;\r
93     FX_INT32 i;\r
94     for(i = 0; i < count; i++) {\r
95         m_bytes[i] = source->operator [](i + offset);\r
96     }\r
97     m_index = m_size;\r
98 }\r