| 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 #include "../../include/fxcrt/fx_basic.h" | 7 #include "../../include/fxcrt/fx_basic.h" |
| 8 FX_STRSIZE FX_ftoa(FX_FLOAT f, FX_CHAR* buf); | 8 FX_STRSIZE FX_ftoa(FX_FLOAT f, FX_CHAR* buf); |
| 9 CFX_BinaryBuf::CFX_BinaryBuf() | 9 CFX_BinaryBuf::CFX_BinaryBuf() |
| 10 : m_AllocStep(0), m_pBuffer(NULL), m_DataSize(0), m_AllocSize(0) {} | 10 : m_AllocStep(0), m_pBuffer(NULL), m_DataSize(0), m_AllocSize(0) {} |
| 11 CFX_BinaryBuf::CFX_BinaryBuf(FX_STRSIZE size) | 11 CFX_BinaryBuf::CFX_BinaryBuf(FX_STRSIZE size) |
| 12 : m_AllocStep(0), m_DataSize(size), m_AllocSize(size) { | 12 : m_AllocStep(0), m_DataSize(size), m_AllocSize(size) { |
| 13 m_pBuffer = FX_Alloc(uint8_t, size); | 13 m_pBuffer = FX_Alloc(uint8_t, size); |
| 14 } | 14 } |
| 15 CFX_BinaryBuf::~CFX_BinaryBuf() { | 15 CFX_BinaryBuf::~CFX_BinaryBuf() { |
| 16 if (m_pBuffer) { | |
| 17 FX_Free(m_pBuffer); | 16 FX_Free(m_pBuffer); |
| 18 } | |
| 19 } | 17 } |
| 20 void CFX_BinaryBuf::Delete(int start_index, int count) { | 18 void CFX_BinaryBuf::Delete(int start_index, int count) { |
| 21 if (!m_pBuffer || start_index < 0 || start_index + count > m_DataSize) { | 19 if (!m_pBuffer || start_index < 0 || start_index + count > m_DataSize) { |
| 22 return; | 20 return; |
| 23 } | 21 } |
| 24 FXSYS_memmove(m_pBuffer + start_index, m_pBuffer + start_index + count, | 22 FXSYS_memmove(m_pBuffer + start_index, m_pBuffer + start_index + count, |
| 25 m_DataSize - start_index - count); | 23 m_DataSize - start_index - count); |
| 26 m_DataSize -= count; | 24 m_DataSize -= count; |
| 27 } | 25 } |
| 28 void CFX_BinaryBuf::Clear() { | 26 void CFX_BinaryBuf::Clear() { |
| 29 m_DataSize = 0; | 27 m_DataSize = 0; |
| 30 } | 28 } |
| 31 void CFX_BinaryBuf::DetachBuffer() { | 29 void CFX_BinaryBuf::DetachBuffer() { |
| 32 m_DataSize = 0; | 30 m_DataSize = 0; |
| 33 m_pBuffer = NULL; | 31 m_pBuffer = NULL; |
| 34 m_AllocSize = 0; | 32 m_AllocSize = 0; |
| 35 } | 33 } |
| 36 void CFX_BinaryBuf::AttachData(void* buffer, FX_STRSIZE size) { | 34 void CFX_BinaryBuf::AttachData(void* buffer, FX_STRSIZE size) { |
| 37 if (m_pBuffer) { | |
| 38 FX_Free(m_pBuffer); | 35 FX_Free(m_pBuffer); |
| 39 } | |
| 40 m_DataSize = size; | 36 m_DataSize = size; |
| 41 m_pBuffer = (uint8_t*)buffer; | 37 m_pBuffer = (uint8_t*)buffer; |
| 42 m_AllocSize = size; | 38 m_AllocSize = size; |
| 43 } | 39 } |
| 44 void CFX_BinaryBuf::TakeOver(CFX_BinaryBuf& other) { | 40 void CFX_BinaryBuf::TakeOver(CFX_BinaryBuf& other) { |
| 45 AttachData(other.GetBuffer(), other.GetSize()); | 41 AttachData(other.GetBuffer(), other.GetSize()); |
| 46 other.DetachBuffer(); | 42 other.DetachBuffer(); |
| 47 } | 43 } |
| 48 void CFX_BinaryBuf::EstimateSize(FX_STRSIZE size, FX_STRSIZE step) { | 44 void CFX_BinaryBuf::EstimateSize(FX_STRSIZE size, FX_STRSIZE step) { |
| 49 m_AllocStep = step; | 45 m_AllocStep = step; |
| (...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 251 if (bit_left) { | 247 if (bit_left) { |
| 252 result |= m_pData[byte_pos] >> (8 - bit_left); | 248 result |= m_pData[byte_pos] >> (8 - bit_left); |
| 253 } | 249 } |
| 254 m_BitPos += nBits; | 250 m_BitPos += nBits; |
| 255 return result; | 251 return result; |
| 256 } | 252 } |
| 257 IFX_BufferArchive::IFX_BufferArchive(FX_STRSIZE size) | 253 IFX_BufferArchive::IFX_BufferArchive(FX_STRSIZE size) |
| 258 : m_BufSize(size), m_pBuffer(NULL), m_Length(0) {} | 254 : m_BufSize(size), m_pBuffer(NULL), m_Length(0) {} |
| 259 void IFX_BufferArchive::Clear() { | 255 void IFX_BufferArchive::Clear() { |
| 260 m_Length = 0; | 256 m_Length = 0; |
| 261 if (m_pBuffer) { | |
| 262 FX_Free(m_pBuffer); | 257 FX_Free(m_pBuffer); |
| 263 m_pBuffer = NULL; | 258 m_pBuffer = NULL; |
| 264 } | |
| 265 } | 259 } |
| 266 FX_BOOL IFX_BufferArchive::Flush() { | 260 FX_BOOL IFX_BufferArchive::Flush() { |
| 267 FX_BOOL bRet = DoWork(m_pBuffer, m_Length); | 261 FX_BOOL bRet = DoWork(m_pBuffer, m_Length); |
| 268 m_Length = 0; | 262 m_Length = 0; |
| 269 return bRet; | 263 return bRet; |
| 270 } | 264 } |
| 271 int32_t IFX_BufferArchive::AppendBlock(const void* pBuf, size_t size) { | 265 int32_t IFX_BufferArchive::AppendBlock(const void* pBuf, size_t size) { |
| 272 if (!pBuf || size < 1) { | 266 if (!pBuf || size < 1) { |
| 273 return 0; | 267 return 0; |
| 274 } | 268 } |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 329 } | 323 } |
| 330 FX_BOOL CFX_FileBufferArchive::DoWork(const void* pBuf, size_t size) { | 324 FX_BOOL CFX_FileBufferArchive::DoWork(const void* pBuf, size_t size) { |
| 331 if (!m_pFile) { | 325 if (!m_pFile) { |
| 332 return FALSE; | 326 return FALSE; |
| 333 } | 327 } |
| 334 if (!pBuf || size < 1) { | 328 if (!pBuf || size < 1) { |
| 335 return TRUE; | 329 return TRUE; |
| 336 } | 330 } |
| 337 return m_pFile->WriteBlock(pBuf, size); | 331 return m_pFile->WriteBlock(pBuf, size); |
| 338 } | 332 } |
| OLD | NEW |