summaryrefslogtreecommitdiff
path: root/xfa/fgas/crt/fgas_memory.h
diff options
context:
space:
mode:
authorDan Sinclair <dsinclair@chromium.org>2016-03-14 14:14:16 -0400
committerDan Sinclair <dsinclair@chromium.org>2016-03-14 14:14:16 -0400
commit1770c021cf998ff1b33855b1397f6ea8ff9f7cd7 (patch)
tree285e39abd4b5872d8cd632b9e331b0667fdc3eae /xfa/fgas/crt/fgas_memory.h
parentf766ad219f66543654520f6a1955836f519e26d1 (diff)
downloadpdfium-1770c021cf998ff1b33855b1397f6ea8ff9f7cd7.tar.xz
Move xfa/src up to xfa/.
This CL moves the xfa/src files up to the xfa/ directory and fixes the includes, include guards, and build files. R=tsepez@chromium.org Review URL: https://codereview.chromium.org/1803723002 .
Diffstat (limited to 'xfa/fgas/crt/fgas_memory.h')
-rw-r--r--xfa/fgas/crt/fgas_memory.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/xfa/fgas/crt/fgas_memory.h b/xfa/fgas/crt/fgas_memory.h
new file mode 100644
index 0000000000..a9c5cc97e7
--- /dev/null
+++ b/xfa/fgas/crt/fgas_memory.h
@@ -0,0 +1,59 @@
+// 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 XFA_FGAS_CRT_FGAS_MEMORY_H_
+#define XFA_FGAS_CRT_FGAS_MEMORY_H_
+
+#include "core/include/fxcrt/fx_memory.h"
+#include "core/include/fxcrt/fx_system.h"
+
+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 ~IFX_MEMAllocator() {}
+ 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:
+ virtual ~CFX_Target() {}
+ void* operator new(size_t size) { return FX_Alloc(uint8_t, 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_NewWith(__allocator__) new (__allocator__)
+#define FXTARGET_DeleteWith(__class__, __allocator__, pointer) \
+ { \
+ (pointer)->~__class__(); \
+ (pointer)->operator delete((pointer), (__allocator__)); \
+ }
+
+#endif // XFA_FGAS_CRT_FGAS_MEMORY_H_