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

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

Issue 372473003: Remove custom memory manager (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Change malloc to calloc Created 6 years, 5 months 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
« no previous file with comments | « core/src/fxcodec/lcms2/lcms2-2.6/src/cmserr.c ('k') | core/src/fxcrt/fx_basic_array.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 _FXCRT_EXTENSION_IMP_ 7 #ifndef _FXCRT_EXTENSION_IMP_
8 #define _FXCRT_EXTENSION_IMP_ 8 #define _FXCRT_EXTENSION_IMP_
9 class IFXCRT_FileAccess 9 class IFXCRT_FileAccess
10 { 10 {
11 public: 11 public:
12 virtual ~IFXCRT_FileAccess() {} 12 virtual ~IFXCRT_FileAccess() {}
13 virtual FX_BOOL Open(FX_BSTR fileName, FX_DWORD dwMode) = 0; 13 virtual FX_BOOL Open(FX_BSTR fileName, FX_DWORD dwMode) = 0;
14 virtual FX_BOOL Open(FX_WSTR fileName, FX_DWORD dwMode) = 0; 14 virtual FX_BOOL Open(FX_WSTR fileName, FX_DWORD dwMode) = 0;
15 virtual void Close() = 0; 15 virtual void Close() = 0;
16 virtual void» » Release(IFX_Allocator* pAllocator = NULL) = 0; 16 virtual void» » Release() = 0;
17 virtual FX_FILESIZE GetSize() const = 0; 17 virtual FX_FILESIZE GetSize() const = 0;
18 virtual FX_FILESIZE GetPosition() const = 0; 18 virtual FX_FILESIZE GetPosition() const = 0;
19 virtual FX_FILESIZE SetPosition(FX_FILESIZE pos) = 0; 19 virtual FX_FILESIZE SetPosition(FX_FILESIZE pos) = 0;
20 virtual size_t Read(void* pBuffer, size_t szBuffer) = 0; 20 virtual size_t Read(void* pBuffer, size_t szBuffer) = 0;
21 virtual size_t Write(const void* pBuffer, size_t szBuffer) = 0; 21 virtual size_t Write(const void* pBuffer, size_t szBuffer) = 0;
22 virtual size_t ReadPos(void* pBuffer, size_t szBuffer, FX_FILES IZE pos) = 0; 22 virtual size_t ReadPos(void* pBuffer, size_t szBuffer, FX_FILES IZE pos) = 0;
23 virtual size_t WritePos(const void* pBuffer, size_t szBuffer, F X_FILESIZE pos) = 0; 23 virtual size_t WritePos(const void* pBuffer, size_t szBuffer, F X_FILESIZE pos) = 0;
24 virtual FX_BOOL Flush() = 0; 24 virtual FX_BOOL Flush() = 0;
25 virtual FX_BOOL Truncate(FX_FILESIZE szFile) = 0; 25 virtual FX_BOOL Truncate(FX_FILESIZE szFile) = 0;
26 }; 26 };
27 IFXCRT_FileAccess*» FXCRT_FileAccess_Create(IFX_Allocator* pAllocator = NULL ); 27 IFXCRT_FileAccess*» FXCRT_FileAccess_Create();
28 class CFX_CRTFileStream : public IFX_FileStream, public CFX_Object 28 class CFX_CRTFileStream : public IFX_FileStream, public CFX_Object
29 { 29 {
30 public: 30 public:
31 CFX_CRTFileStream(IFXCRT_FileAccess* pFA, IFX_Allocator* pAllocator) : m_pAl locator(pAllocator), m_pFile(pFA), m_dwCount(1), m_bUseRange(FALSE), m_nOffset(0 ), m_nSize(0) {} 31 CFX_CRTFileStream(IFXCRT_FileAccess* pFA) : m_pFile(pFA), m_dwCount(1), m_bU seRange(FALSE), m_nOffset(0), m_nSize(0) {}
32 ~CFX_CRTFileStream() 32 ~CFX_CRTFileStream()
33 { 33 {
34 if (m_pFile) { 34 if (m_pFile) {
35 m_pFile->Release(m_pAllocator); 35 m_pFile->Release();
36 } 36 }
37 } 37 }
38 virtual IFX_FileStream* Retain() 38 virtual IFX_FileStream* Retain()
39 { 39 {
40 m_dwCount ++; 40 m_dwCount ++;
41 return this; 41 return this;
42 } 42 }
43 virtual void Release() 43 virtual void Release()
44 { 44 {
45 FX_DWORD nCount = -- m_dwCount; 45 FX_DWORD nCount = -- m_dwCount;
46 if (!nCount) { 46 if (!nCount) {
47 if (m_pAllocator) { 47 delete this;
48 FX_DeleteAtAllocator(this, m_pAllocator, CFX_CRTFileStream);
49 } else {
50 delete this;
51 }
52 } 48 }
53 } 49 }
54 virtual FX_FILESIZE GetSize() 50 virtual FX_FILESIZE GetSize()
55 { 51 {
56 return m_bUseRange ? m_nSize : m_pFile->GetSize(); 52 return m_bUseRange ? m_nSize : m_pFile->GetSize();
57 } 53 }
58 virtual FX_BOOL IsEOF() 54 virtual FX_BOOL IsEOF()
59 { 55 {
60 return GetPosition() >= GetSize(); 56 return GetPosition() >= GetSize();
61 } 57 }
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 { 101 {
106 if (m_bUseRange) { 102 if (m_bUseRange) {
107 offset += m_nOffset; 103 offset += m_nOffset;
108 } 104 }
109 return (FX_BOOL)m_pFile->WritePos(buffer, size, offset); 105 return (FX_BOOL)m_pFile->WritePos(buffer, size, offset);
110 } 106 }
111 virtual FX_BOOL Flush() 107 virtual FX_BOOL Flush()
112 { 108 {
113 return m_pFile->Flush(); 109 return m_pFile->Flush();
114 } 110 }
115 IFX_Allocator* m_pAllocator;
116 IFXCRT_FileAccess* m_pFile; 111 IFXCRT_FileAccess* m_pFile;
117 FX_DWORD m_dwCount; 112 FX_DWORD m_dwCount;
118 FX_BOOL m_bUseRange; 113 FX_BOOL m_bUseRange;
119 FX_FILESIZE m_nOffset; 114 FX_FILESIZE m_nOffset;
120 FX_FILESIZE m_nSize; 115 FX_FILESIZE m_nSize;
121 }; 116 };
122 #define FX_MEMSTREAM_BlockSize (64 * 1024) 117 #define FX_MEMSTREAM_BlockSize (64 * 1024)
123 #define FX_MEMSTREAM_Consecutive 0x01 118 #define FX_MEMSTREAM_Consecutive 0x01
124 #define FX_MEMSTREAM_TakeOver 0x02 119 #define FX_MEMSTREAM_TakeOver 0x02
125 class CFX_MemoryStream : public IFX_MemoryStream, public CFX_Object 120 class CFX_MemoryStream : public IFX_MemoryStream, public CFX_Object
126 { 121 {
127 public: 122 public:
128 CFX_MemoryStream(FX_BOOL bConsecutive, IFX_Allocator* pAllocator) 123 CFX_MemoryStream(FX_BOOL bConsecutive)
129 : m_Blocks(pAllocator) 124 : m_dwCount(1)
130 , m_dwCount(1)
131 , m_nTotalSize(0) 125 , m_nTotalSize(0)
132 , m_nCurSize(0) 126 , m_nCurSize(0)
133 , m_nCurPos(0) 127 , m_nCurPos(0)
134 , m_nGrowSize(FX_MEMSTREAM_BlockSize) 128 , m_nGrowSize(FX_MEMSTREAM_BlockSize)
135 , m_bUseRange(FALSE) 129 , m_bUseRange(FALSE)
136 { 130 {
137 m_dwFlags = FX_MEMSTREAM_TakeOver | (bConsecutive ? FX_MEMSTREAM_Consecu tive : 0); 131 m_dwFlags = FX_MEMSTREAM_TakeOver | (bConsecutive ? FX_MEMSTREAM_Consecu tive : 0);
138 } 132 }
139 CFX_MemoryStream(FX_LPBYTE pBuffer, size_t nSize, FX_BOOL bTakeOver, IFX_All ocator* pAllocator) 133 CFX_MemoryStream(FX_LPBYTE pBuffer, size_t nSize, FX_BOOL bTakeOver)
140 : m_Blocks(pAllocator) 134 : m_dwCount(1)
141 , m_dwCount(1)
142 , m_nTotalSize(nSize) 135 , m_nTotalSize(nSize)
143 , m_nCurSize(nSize) 136 , m_nCurSize(nSize)
144 , m_nCurPos(0) 137 , m_nCurPos(0)
145 , m_nGrowSize(FX_MEMSTREAM_BlockSize) 138 , m_nGrowSize(FX_MEMSTREAM_BlockSize)
146 , m_bUseRange(FALSE) 139 , m_bUseRange(FALSE)
147 { 140 {
148 m_Blocks.Add(pBuffer); 141 m_Blocks.Add(pBuffer);
149 m_dwFlags = FX_MEMSTREAM_Consecutive | (bTakeOver ? FX_MEMSTREAM_TakeOve r : 0); 142 m_dwFlags = FX_MEMSTREAM_Consecutive | (bTakeOver ? FX_MEMSTREAM_TakeOve r : 0);
150 } 143 }
151 ~CFX_MemoryStream() 144 ~CFX_MemoryStream()
152 { 145 {
153 IFX_Allocator* pAllocator = m_Blocks.m_pAllocator;
154 if (m_dwFlags & FX_MEMSTREAM_TakeOver) { 146 if (m_dwFlags & FX_MEMSTREAM_TakeOver) {
155 for (FX_INT32 i = 0; i < m_Blocks.GetSize(); i ++) { 147 for (FX_INT32 i = 0; i < m_Blocks.GetSize(); i++) {
156 FX_Allocator_Free(pAllocator, (FX_LPBYTE)m_Blocks[i]); 148 FX_Free((FX_LPBYTE)m_Blocks[i]);
157 } 149 }
158 } 150 }
159 m_Blocks.RemoveAll(); 151 m_Blocks.RemoveAll();
160 } 152 }
161 virtual IFX_FileStream* Retain() 153 virtual IFX_FileStream* Retain()
162 { 154 {
163 m_dwCount ++; 155 m_dwCount ++;
164 return this; 156 return this;
165 } 157 }
166 virtual void Release() 158 virtual void Release()
167 { 159 {
168 FX_DWORD nCount = -- m_dwCount; 160 FX_DWORD nCount = -- m_dwCount;
169 if (nCount) { 161 if (nCount) {
170 return; 162 return;
171 } 163 }
172 IFX_Allocator* pAllocator = m_Blocks.m_pAllocator; 164 delete this;
173 if (pAllocator) {
174 FX_DeleteAtAllocator(this, pAllocator, CFX_MemoryStream);
175 } else {
176 delete this;
177 }
178 } 165 }
179 virtual FX_FILESIZE GetSize() 166 virtual FX_FILESIZE GetSize()
180 { 167 {
181 return m_bUseRange ? (FX_FILESIZE) m_nSize : (FX_FILESIZE)m_nCurSize; 168 return m_bUseRange ? (FX_FILESIZE) m_nSize : (FX_FILESIZE)m_nCurSize;
182 } 169 }
183 virtual FX_BOOL IsEOF() 170 virtual FX_BOOL IsEOF()
184 { 171 {
185 return m_nCurPos >= (size_t)GetSize(); 172 return m_nCurPos >= (size_t)GetSize();
186 } 173 }
187 virtual FX_FILESIZE GetPosition() 174 virtual FX_FILESIZE GetPosition()
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 { 245 {
259 if (!buffer || !size) { 246 if (!buffer || !size) {
260 return FALSE; 247 return FALSE;
261 } 248 }
262 if (m_bUseRange) { 249 if (m_bUseRange) {
263 offset += (FX_FILESIZE)m_nOffset; 250 offset += (FX_FILESIZE)m_nOffset;
264 } 251 }
265 if (m_dwFlags & FX_MEMSTREAM_Consecutive) { 252 if (m_dwFlags & FX_MEMSTREAM_Consecutive) {
266 m_nCurPos = (size_t)offset + size; 253 m_nCurPos = (size_t)offset + size;
267 if (m_nCurPos > m_nTotalSize) { 254 if (m_nCurPos > m_nTotalSize) {
268 IFX_Allocator* pAllocator = m_Blocks.m_pAllocator;
269 m_nTotalSize = (m_nCurPos + m_nGrowSize - 1) / m_nGrowSize * m_n GrowSize; 255 m_nTotalSize = (m_nCurPos + m_nGrowSize - 1) / m_nGrowSize * m_n GrowSize;
270 if (m_Blocks.GetSize() < 1) { 256 if (m_Blocks.GetSize() < 1) {
271 void* block = FX_Allocator_Alloc(pAllocator, FX_BYTE, m_nTot alSize); 257 void* block = FX_Alloc(FX_BYTE, m_nTotalSize);
272 m_Blocks.Add(block); 258 m_Blocks.Add(block);
273 } else { 259 } else {
274 m_Blocks[0] = FX_Allocator_Realloc(pAllocator, FX_BYTE, m_Bl ocks[0], m_nTotalSize); 260 m_Blocks[0] = FX_Realloc(FX_BYTE, m_Blocks[0], m_nTotalSize) ;
275 } 261 }
276 if (!m_Blocks[0]) { 262 if (!m_Blocks[0]) {
277 m_Blocks.RemoveAll(); 263 m_Blocks.RemoveAll();
278 return FALSE; 264 return FALSE;
279 } 265 }
280 } 266 }
281 FXSYS_memcpy32((FX_LPBYTE)m_Blocks[0] + (size_t)offset, buffer, size ); 267 FXSYS_memcpy32((FX_LPBYTE)m_Blocks[0] + (size_t)offset, buffer, size );
282 if (m_nCurSize < m_nCurPos) { 268 if (m_nCurSize < m_nCurPos) {
283 m_nCurSize = m_nCurPos; 269 m_nCurSize = m_nCurPos;
284 } 270 }
(...skipping 23 matching lines...) Expand all
308 return TRUE; 294 return TRUE;
309 } 295 }
310 virtual FX_BOOL IsConsecutive() const 296 virtual FX_BOOL IsConsecutive() const
311 { 297 {
312 return m_dwFlags & FX_MEMSTREAM_Consecutive; 298 return m_dwFlags & FX_MEMSTREAM_Consecutive;
313 } 299 }
314 virtual void EstimateSize(size_t nInitSize, s ize_t nGrowSize) 300 virtual void EstimateSize(size_t nInitSize, s ize_t nGrowSize)
315 { 301 {
316 if (m_dwFlags & FX_MEMSTREAM_Consecutive) { 302 if (m_dwFlags & FX_MEMSTREAM_Consecutive) {
317 if (m_Blocks.GetSize() < 1) { 303 if (m_Blocks.GetSize() < 1) {
318 FX_LPBYTE pBlock = FX_Allocator_Alloc(m_Blocks.m_pAllocator, FX_ BYTE, FX_MAX(nInitSize, 4096)); 304 FX_LPBYTE pBlock = FX_Alloc(FX_BYTE, FX_MAX(nInitSize, 4096));
319 if (pBlock) { 305 if (pBlock) {
320 m_Blocks.Add(pBlock); 306 m_Blocks.Add(pBlock);
321 } 307 }
322 } 308 }
323 m_nGrowSize = FX_MAX(nGrowSize, 4096); 309 m_nGrowSize = FX_MAX(nGrowSize, 4096);
324 } else if (m_Blocks.GetSize() < 1) { 310 } else if (m_Blocks.GetSize() < 1) {
325 m_nGrowSize = FX_MAX(nGrowSize, 4096); 311 m_nGrowSize = FX_MAX(nGrowSize, 4096);
326 } 312 }
327 } 313 }
328 virtual FX_LPBYTE GetBuffer() const 314 virtual FX_LPBYTE GetBuffer() const
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
366 { 352 {
367 if (m_nCurSize < size) { 353 if (m_nCurSize < size) {
368 m_nCurSize = size; 354 m_nCurSize = size;
369 } 355 }
370 if (size <= m_nTotalSize) { 356 if (size <= m_nTotalSize) {
371 return TRUE; 357 return TRUE;
372 } 358 }
373 FX_INT32 iCount = m_Blocks.GetSize(); 359 FX_INT32 iCount = m_Blocks.GetSize();
374 size = (size - m_nTotalSize + m_nGrowSize - 1) / m_nGrowSize; 360 size = (size - m_nTotalSize + m_nGrowSize - 1) / m_nGrowSize;
375 m_Blocks.SetSize(m_Blocks.GetSize() + (FX_INT32)size, -1); 361 m_Blocks.SetSize(m_Blocks.GetSize() + (FX_INT32)size, -1);
376 IFX_Allocator* pAllocator = m_Blocks.m_pAllocator;
377 while (size --) { 362 while (size --) {
378 FX_LPBYTE pBlock = FX_Allocator_Alloc(pAllocator, FX_BYTE, m_nGrowSi ze); 363 FX_LPBYTE pBlock = FX_Alloc(FX_BYTE, m_nGrowSize);
379 if (!pBlock) { 364 if (!pBlock) {
380 return FALSE; 365 return FALSE;
381 } 366 }
382 m_Blocks.SetAt(iCount ++, pBlock); 367 m_Blocks.SetAt(iCount ++, pBlock);
383 m_nTotalSize += m_nGrowSize; 368 m_nTotalSize += m_nGrowSize;
384 } 369 }
385 return TRUE; 370 return TRUE;
386 } 371 }
387 }; 372 };
388 #ifdef __cplusplus 373 #ifdef __cplusplus
(...skipping 15 matching lines...) Expand all
404 FX_DWORD mt[MT_N]; 389 FX_DWORD mt[MT_N];
405 } FX_MTRANDOMCONTEXT, * FX_LPMTRANDOMCONTEXT; 390 } FX_MTRANDOMCONTEXT, * FX_LPMTRANDOMCONTEXT;
406 typedef FX_MTRANDOMCONTEXT const * FX_LPCMTRANDOMCONTEXT; 391 typedef FX_MTRANDOMCONTEXT const * FX_LPCMTRANDOMCONTEXT;
407 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ 392 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
408 FX_BOOL FX_GenerateCryptoRandom(FX_LPDWORD pBuffer, FX_INT32 iCount); 393 FX_BOOL FX_GenerateCryptoRandom(FX_LPDWORD pBuffer, FX_INT32 iCount);
409 #endif 394 #endif
410 #ifdef __cplusplus 395 #ifdef __cplusplus
411 } 396 }
412 #endif 397 #endif
413 #endif 398 #endif
OLDNEW
« no previous file with comments | « core/src/fxcodec/lcms2/lcms2-2.6/src/cmserr.c ('k') | core/src/fxcrt/fx_basic_array.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698