Add missing operators for CFX_WideStringC.
[pdfium.git] / core / include / fxcrt / fx_memory.h
1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7 #ifndef _FX_MEMORY_H_
8 #define _FX_MEMORY_H_
9
10 #include "fx_system.h"
11
12 #ifdef __cplusplus
13 #include <new>
14 extern "C" {
15 #endif
16 #define FX_Alloc(type, size)                                            (type*)calloc(size, sizeof(type))
17 #define FX_Realloc(type, ptr, size)                                     (type*)realloc(ptr, sizeof(type) * (size))
18 #define FX_AllocNL(type, size)                                          FX_Alloc(type, size)
19 #define FX_ReallocNL(type, ptr, size)                           FX_Realloc(type, ptr, size)
20 #define FX_Free(ptr)                                                            free(ptr)
21 void*   FXMEM_DefaultAlloc(size_t byte_size, int flags);
22 void*   FXMEM_DefaultRealloc(void* pointer, size_t new_size, int flags);
23 void    FXMEM_DefaultFree(void* pointer, int flags);
24 #ifdef __cplusplus
25 }
26
27 #define FX_NEW_VECTOR(Pointer, Class, Count) (Pointer = new Class[Count])
28 #define FX_DELETE_VECTOR(Pointer, Class, Count) delete[] Pointer
29
30 class CFX_DestructObject 
31 {
32 public:
33
34     virtual ~CFX_DestructObject() {}
35 };
36 class CFX_GrowOnlyPool 
37 {
38 public:
39
40     CFX_GrowOnlyPool(size_t trunk_size = 16384);
41
42     ~CFX_GrowOnlyPool();
43
44     void        SetTrunkSize(size_t trunk_size)
45     {
46         m_TrunkSize = trunk_size;
47     }
48
49     void*       AllocDebug(size_t size, FX_LPCSTR file, int line)
50     {
51         return Alloc(size);
52     }
53
54     void*       Alloc(size_t size);
55
56     void*       ReallocDebug(void* p, size_t new_size, FX_LPCSTR file, int line)
57     {
58         return NULL;
59     }
60
61     void*       Realloc(void* p, size_t new_size)
62     {
63         return NULL;
64     }
65
66     void        Free(void*) {}
67
68     void        FreeAll();
69 private:
70
71     size_t      m_TrunkSize;
72
73     void*       m_pFirstTrunk;
74 };
75 #endif
76 #endif