Merge to XFA: Kill FXSYS_mem{cpy,cmp,set.move}{32,8}.
[pdfium.git] / xfa / src / fxbarcode / common / 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 // Original code is licensed as follows:\r
7 /*\r
8  * Copyright 2008 ZXing authors\r
9  *\r
10  * Licensed under the Apache License, Version 2.0 (the "License");\r
11  * you may not use this file except in compliance with the License.\r
12  * You may obtain a copy of the License at\r
13  *\r
14  *      http://www.apache.org/licenses/LICENSE-2.0\r
15  *\r
16  * Unless required by applicable law or agreed to in writing, software\r
17  * distributed under the License is distributed on an "AS IS" BASIS,\r
18  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
19  * See the License for the specific language governing permissions and\r
20  * limitations under the License.\r
21  */\r
22 \r
23 #include "../barcode.h"\r
24 #include "BC_CommonByteArray.h"\r
25 CBC_CommonByteArray::CBC_CommonByteArray()\r
26 {\r
27     m_bytes = NULL;\r
28     m_size = 0;\r
29     m_index = 0;\r
30 }\r
31 CBC_CommonByteArray::CBC_CommonByteArray(int32_t size)\r
32 {\r
33     m_size = size;\r
34     m_bytes = FX_Alloc(uint8_t, size);\r
35     FXSYS_memset(m_bytes, 0, size);\r
36     m_index = 0;\r
37 }\r
38 CBC_CommonByteArray::CBC_CommonByteArray(uint8_t* byteArray, int32_t size)\r
39 {\r
40     m_size = size;\r
41     m_bytes = FX_Alloc(uint8_t, size);\r
42     FXSYS_memcpy(m_bytes, byteArray, size);\r
43     m_index = size;\r
44 }\r
45 CBC_CommonByteArray::~CBC_CommonByteArray()\r
46 {\r
47     if ( m_bytes != NULL) {\r
48         FX_Free( m_bytes );\r
49         m_bytes = NULL;\r
50     }\r
51     m_index = 0;\r
52     m_size = 0;\r
53 }\r
54 int32_t CBC_CommonByteArray::At(int32_t index)\r
55 {\r
56     return m_bytes[index] & 0xff;\r
57 }\r
58 void CBC_CommonByteArray::Set(int32_t index, int32_t value)\r
59 {\r
60     m_bytes[index] = (uint8_t) value;\r
61 }\r
62 int32_t CBC_CommonByteArray::Size()\r
63 {\r
64     return m_size;\r
65 }\r
66 FX_BOOL CBC_CommonByteArray::IsEmpty()\r
67 {\r
68     return m_size == 0;\r
69 }\r
70 void CBC_CommonByteArray::AppendByte(int32_t value)\r
71 {\r
72     if (m_size == 0 || m_index >= m_size) {\r
73         int32_t newSize = FX_MAX(32, m_size << 1);\r
74         Reserve(newSize);\r
75     }\r
76     m_bytes[m_index] = (uint8_t)value;\r
77     m_index++;\r
78 }\r
79 void CBC_CommonByteArray::Reserve(int32_t capacity)\r
80 {\r
81     if (m_bytes == NULL || m_size < capacity) {\r
82         uint8_t *newArray = FX_Alloc(uint8_t, capacity);\r
83         FXSYS_memset(newArray, 0, capacity);\r
84         if (m_bytes != NULL) {\r
85             FXSYS_memcpy(newArray, m_bytes, m_size);\r
86             FX_Free( m_bytes );\r
87         }\r
88         m_bytes = newArray;\r
89         m_size = capacity;\r
90     }\r
91 }\r
92 void CBC_CommonByteArray::Set(uint8_t* source, int32_t offset, int32_t count)\r
93 {\r
94     if (m_bytes != NULL) {\r
95         FX_Free( m_bytes );\r
96     }\r
97     m_bytes = FX_Alloc(uint8_t, count);\r
98     m_size = count;\r
99     FXSYS_memcpy(m_bytes, source + offset, count);\r
100     m_index = count;\r
101 }\r
102 void CBC_CommonByteArray::Set(CFX_ByteArray* source, int32_t offset, int32_t count)\r
103 {\r
104     if (m_bytes != NULL) {\r
105         FX_Free( m_bytes );\r
106     }\r
107     m_bytes =  FX_Alloc(uint8_t, count);\r
108     m_size = count;\r
109     int32_t i;\r
110     for(i = 0; i < count; i++) {\r
111         m_bytes[i] = source->operator [](i + offset);\r
112     }\r
113     m_index = m_size;\r
114 }\r