summaryrefslogtreecommitdiff
path: root/xfa/src/fgas/include/fx_mem.h
diff options
context:
space:
mode:
Diffstat (limited to 'xfa/src/fgas/include/fx_mem.h')
-rw-r--r--xfa/src/fgas/include/fx_mem.h58
1 files changed, 58 insertions, 0 deletions
diff --git a/xfa/src/fgas/include/fx_mem.h b/xfa/src/fgas/include/fx_mem.h
new file mode 100644
index 0000000000..18cd85e422
--- /dev/null
+++ b/xfa/src/fgas/include/fx_mem.h
@@ -0,0 +1,58 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef _FX_MEMORY
+#define _FX_MEMORY
+class IFX_MEMAllocator;
+class CFX_Target;
+enum FX_ALLOCTYPE {
+ FX_ALLOCTYPE_Default = 0,
+ FX_ALLOCTYPE_Static ,
+ FX_ALLOCTYPE_Fixed ,
+ FX_ALLOCTYPE_Dynamic ,
+};
+class IFX_MEMAllocator
+{
+public:
+ virtual void Release() = 0;
+ virtual void* Alloc(size_t size) = 0;
+ virtual void Free(void *pBlock) = 0;
+ virtual size_t GetBlockSize() const = 0;
+ virtual size_t GetDefChunkSize() const = 0;
+ virtual size_t SetDefChunkSize(size_t size) = 0;
+ virtual size_t GetCurrentDataSize() const = 0;
+};
+IFX_MEMAllocator* FX_CreateAllocator(FX_ALLOCTYPE eType, size_t chunkSize, size_t blockSize);
+class CFX_Target
+{
+public:
+ void* operator new(size_t size)
+ {
+ return FX_Alloc(FX_BYTE, size);
+ }
+ void operator delete(void *p)
+ {
+ FX_Free(p);
+ }
+ void* operator new(size_t size, IFX_MEMAllocator *pAllocator)
+ {
+ return pAllocator->Alloc(size);
+ }
+ void operator delete(void *p, IFX_MEMAllocator *pAllocator)
+ {
+ pAllocator->Free(p);
+ }
+ void* operator new(size_t size, void *place)
+ {
+ return place;
+ }
+ void operator delete(void *p, void *place) {}
+};
+#define FXTARGET_New new
+#define FXTARGET_NewWith(__allocator__) new(__allocator__)
+#define FXTARGET_Delete delete
+#define FXTARGET_DeleteWith(__class__, __allocator__, pointer) {(pointer)->~__class__(); (pointer)->operator delete((pointer), (__allocator__));}
+#endif