Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(475)

Side by Side Diff: core/src/fxcrt/extension.h

Issue 1458373002: Merge to XFA: Add more overrides. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 CORE_SRC_FXCRT_EXTENSION_H_ 7 #ifndef CORE_SRC_FXCRT_EXTENSION_H_
8 #define CORE_SRC_FXCRT_EXTENSION_H_ 8 #define CORE_SRC_FXCRT_EXTENSION_H_
9 9
10 #include "core/include/fxcrt/fx_basic.h" 10 #include "core/include/fxcrt/fx_basic.h"
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 FX_MEMSTREAM_Consecutive | (bTakeOver ? FX_MEMSTREAM_TakeOver : 0); 129 FX_MEMSTREAM_Consecutive | (bTakeOver ? FX_MEMSTREAM_TakeOver : 0);
130 } 130 }
131 ~CFX_MemoryStream() override { 131 ~CFX_MemoryStream() override {
132 if (m_dwFlags & FX_MEMSTREAM_TakeOver) { 132 if (m_dwFlags & FX_MEMSTREAM_TakeOver) {
133 for (int32_t i = 0; i < m_Blocks.GetSize(); i++) { 133 for (int32_t i = 0; i < m_Blocks.GetSize(); i++) {
134 FX_Free((uint8_t*)m_Blocks[i]); 134 FX_Free((uint8_t*)m_Blocks[i]);
135 } 135 }
136 } 136 }
137 m_Blocks.RemoveAll(); 137 m_Blocks.RemoveAll();
138 } 138 }
139 virtual IFX_FileStream* Retain() override { 139
140 // IFX_MemoryStream:
141 IFX_FileStream* Retain() override {
140 m_dwCount++; 142 m_dwCount++;
141 return this; 143 return this;
142 } 144 }
143 virtual void Release() override { 145 void Release() override {
144 FX_DWORD nCount = --m_dwCount; 146 FX_DWORD nCount = --m_dwCount;
145 if (nCount) { 147 if (nCount) {
146 return; 148 return;
147 } 149 }
148 delete this; 150 delete this;
149 } 151 }
150 virtual FX_FILESIZE GetSize() override { return (FX_FILESIZE)m_nCurSize; } 152 FX_FILESIZE GetSize() override { return (FX_FILESIZE)m_nCurSize; }
151 virtual FX_BOOL IsEOF() override { return m_nCurPos >= (size_t)GetSize(); } 153 FX_BOOL IsEOF() override { return m_nCurPos >= (size_t)GetSize(); }
152 virtual FX_FILESIZE GetPosition() override { return (FX_FILESIZE)m_nCurPos; } 154 FX_FILESIZE GetPosition() override { return (FX_FILESIZE)m_nCurPos; }
153 virtual FX_BOOL ReadBlock(void* buffer, 155 FX_BOOL ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override {
154 FX_FILESIZE offset,
155 size_t size) override {
156 if (!buffer || !size) { 156 if (!buffer || !size) {
157 return FALSE; 157 return FALSE;
158 } 158 }
159 159
160 FX_SAFE_SIZE_T newPos = size; 160 FX_SAFE_SIZE_T newPos = size;
161 newPos += offset; 161 newPos += offset;
162 if (!newPos.IsValid() || newPos.ValueOrDefault(0) == 0 || 162 if (!newPos.IsValid() || newPos.ValueOrDefault(0) == 0 ||
163 newPos.ValueOrDie() > m_nCurSize) { 163 newPos.ValueOrDie() > m_nCurSize) {
164 return FALSE; 164 return FALSE;
165 } 165 }
(...skipping 12 matching lines...) Expand all
178 } 178 }
179 FXSYS_memcpy( 179 FXSYS_memcpy(
180 buffer, (uint8_t*)m_Blocks[(int)nStartBlock] + (size_t)offset, nRead); 180 buffer, (uint8_t*)m_Blocks[(int)nStartBlock] + (size_t)offset, nRead);
181 buffer = ((uint8_t*)buffer) + nRead; 181 buffer = ((uint8_t*)buffer) + nRead;
182 size -= nRead; 182 size -= nRead;
183 nStartBlock++; 183 nStartBlock++;
184 offset = 0; 184 offset = 0;
185 } 185 }
186 return TRUE; 186 return TRUE;
187 } 187 }
188 virtual size_t ReadBlock(void* buffer, size_t size) override { 188 size_t ReadBlock(void* buffer, size_t size) override {
189 if (m_nCurPos >= m_nCurSize) { 189 if (m_nCurPos >= m_nCurSize) {
190 return 0; 190 return 0;
191 } 191 }
192 size_t nRead = FX_MIN(size, m_nCurSize - m_nCurPos); 192 size_t nRead = FX_MIN(size, m_nCurSize - m_nCurPos);
193 if (!ReadBlock(buffer, (int32_t)m_nCurPos, nRead)) { 193 if (!ReadBlock(buffer, (int32_t)m_nCurPos, nRead)) {
194 return 0; 194 return 0;
195 } 195 }
196 return nRead; 196 return nRead;
197 } 197 }
198 virtual FX_BOOL WriteBlock(const void* buffer, 198 FX_BOOL WriteBlock(const void* buffer,
199 FX_FILESIZE offset, 199 FX_FILESIZE offset,
200 size_t size) override { 200 size_t size) override {
201 if (!buffer || !size) { 201 if (!buffer || !size) {
202 return FALSE; 202 return FALSE;
203 } 203 }
204 if (m_dwFlags & FX_MEMSTREAM_Consecutive) { 204 if (m_dwFlags & FX_MEMSTREAM_Consecutive) {
205 FX_SAFE_SIZE_T newPos = size; 205 FX_SAFE_SIZE_T newPos = size;
206 newPos += offset; 206 newPos += offset;
207 if (!newPos.IsValid()) 207 if (!newPos.IsValid())
208 return FALSE; 208 return FALSE;
209 209
210 m_nCurPos = newPos.ValueOrDie(); 210 m_nCurPos = newPos.ValueOrDie();
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 } 248 }
249 FXSYS_memcpy((uint8_t*)m_Blocks[(int)nStartBlock] + (size_t)offset, 249 FXSYS_memcpy((uint8_t*)m_Blocks[(int)nStartBlock] + (size_t)offset,
250 buffer, nWrite); 250 buffer, nWrite);
251 buffer = ((uint8_t*)buffer) + nWrite; 251 buffer = ((uint8_t*)buffer) + nWrite;
252 size -= nWrite; 252 size -= nWrite;
253 nStartBlock++; 253 nStartBlock++;
254 offset = 0; 254 offset = 0;
255 } 255 }
256 return TRUE; 256 return TRUE;
257 } 257 }
258 virtual FX_BOOL Flush() override { return TRUE; } 258 FX_BOOL Flush() override { return TRUE; }
259 virtual FX_BOOL IsConsecutive() const override { 259 FX_BOOL IsConsecutive() const override {
260 return m_dwFlags & FX_MEMSTREAM_Consecutive; 260 return m_dwFlags & FX_MEMSTREAM_Consecutive;
261 } 261 }
262 virtual void EstimateSize(size_t nInitSize, size_t nGrowSize) override { 262 void EstimateSize(size_t nInitSize, size_t nGrowSize) override {
263 if (m_dwFlags & FX_MEMSTREAM_Consecutive) { 263 if (m_dwFlags & FX_MEMSTREAM_Consecutive) {
264 if (m_Blocks.GetSize() < 1) { 264 if (m_Blocks.GetSize() < 1) {
265 uint8_t* pBlock = FX_Alloc(uint8_t, FX_MAX(nInitSize, 4096)); 265 uint8_t* pBlock = FX_Alloc(uint8_t, FX_MAX(nInitSize, 4096));
266 m_Blocks.Add(pBlock); 266 m_Blocks.Add(pBlock);
267 } 267 }
268 m_nGrowSize = FX_MAX(nGrowSize, 4096); 268 m_nGrowSize = FX_MAX(nGrowSize, 4096);
269 } else if (m_Blocks.GetSize() < 1) { 269 } else if (m_Blocks.GetSize() < 1) {
270 m_nGrowSize = FX_MAX(nGrowSize, 4096); 270 m_nGrowSize = FX_MAX(nGrowSize, 4096);
271 } 271 }
272 } 272 }
273 virtual uint8_t* GetBuffer() const override { 273 uint8_t* GetBuffer() const override {
274 return m_Blocks.GetSize() ? (uint8_t*)m_Blocks[0] : NULL; 274 return m_Blocks.GetSize() ? (uint8_t*)m_Blocks[0] : NULL;
275 } 275 }
276 virtual void AttachBuffer(uint8_t* pBuffer, 276 void AttachBuffer(uint8_t* pBuffer,
277 size_t nSize, 277 size_t nSize,
278 FX_BOOL bTakeOver = FALSE) override { 278 FX_BOOL bTakeOver = FALSE) override {
279 if (!(m_dwFlags & FX_MEMSTREAM_Consecutive)) { 279 if (!(m_dwFlags & FX_MEMSTREAM_Consecutive)) {
280 return; 280 return;
281 } 281 }
282 m_Blocks.RemoveAll(); 282 m_Blocks.RemoveAll();
283 m_Blocks.Add(pBuffer); 283 m_Blocks.Add(pBuffer);
284 m_nTotalSize = m_nCurSize = nSize; 284 m_nTotalSize = m_nCurSize = nSize;
285 m_nCurPos = 0; 285 m_nCurPos = 0;
286 m_dwFlags = 286 m_dwFlags =
287 FX_MEMSTREAM_Consecutive | (bTakeOver ? FX_MEMSTREAM_TakeOver : 0); 287 FX_MEMSTREAM_Consecutive | (bTakeOver ? FX_MEMSTREAM_TakeOver : 0);
288 } 288 }
289 virtual void DetachBuffer() override { 289 void DetachBuffer() override {
290 if (!(m_dwFlags & FX_MEMSTREAM_Consecutive)) { 290 if (!(m_dwFlags & FX_MEMSTREAM_Consecutive)) {
291 return; 291 return;
292 } 292 }
293 m_Blocks.RemoveAll(); 293 m_Blocks.RemoveAll();
294 m_nTotalSize = m_nCurSize = m_nCurPos = 0; 294 m_nTotalSize = m_nCurSize = m_nCurPos = 0;
295 m_dwFlags = FX_MEMSTREAM_TakeOver; 295 m_dwFlags = FX_MEMSTREAM_TakeOver;
296 } 296 }
297 297
298 protected: 298 protected:
299 CFX_PtrArray m_Blocks; 299 CFX_PtrArray m_Blocks;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 } FX_MTRANDOMCONTEXT, *FX_LPMTRANDOMCONTEXT; 341 } FX_MTRANDOMCONTEXT, *FX_LPMTRANDOMCONTEXT;
342 typedef FX_MTRANDOMCONTEXT const* FX_LPCMTRANDOMCONTEXT; 342 typedef FX_MTRANDOMCONTEXT const* FX_LPCMTRANDOMCONTEXT;
343 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ 343 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
344 FX_BOOL FX_GenerateCryptoRandom(FX_DWORD* pBuffer, int32_t iCount); 344 FX_BOOL FX_GenerateCryptoRandom(FX_DWORD* pBuffer, int32_t iCount);
345 #endif 345 #endif
346 #ifdef __cplusplus 346 #ifdef __cplusplus
347 } 347 }
348 #endif 348 #endif
349 349
350 #endif // CORE_SRC_FXCRT_EXTENSION_H_ 350 #endif // CORE_SRC_FXCRT_EXTENSION_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698