1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Copyright 2014 PDFium Authors. All rights reserved.
2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Use of this source code is governed by a BSD-style license that can be
3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// found in the LICENSE file.
4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "JBig2_Object.h"
8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "JBig2_Module.h"
9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid *CJBig2_Object::operator new(size_t size, CJBig2_Module *pModule, FX_LPCSTR filename, int line)
10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CJBig2_Object *p;
12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    p = (CJBig2_Object *)pModule->JBig2_Malloc((FX_DWORD)size);
13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    p->m_pModule = pModule;
14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return p;
15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJBig2_Object::operator delete(void *p, CJBig2_Module *pModule, FX_LPCSTR filename, int line)
17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    pModule->JBig2_Free(p);
19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid *CJBig2_Object::operator new(size_t size, CJBig2_Module *pModule)
21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CJBig2_Object *p;
23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    p = (CJBig2_Object *)pModule->JBig2_Malloc((FX_DWORD)size);
24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    p->m_pModule = pModule;
25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return p;
26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJBig2_Object::operator delete(void *p)
28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    ((CJBig2_Object *)p)->m_pModule->JBig2_Free(p);
30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJBig2_Object::operator delete(void *p, CJBig2_Module *pModule)
32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    pModule->JBig2_Free(p);
34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid *CJBig2_Object::operator new[](size_t size, CJBig2_Module *pModule, size_t unit_size,
36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                    FX_LPCSTR filename, int line)
37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void *p;
39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BYTE *pCur, *pEnd;
40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    p = (FX_BYTE *)pModule->JBig2_Malloc((FX_DWORD)size);
41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    pCur = (FX_BYTE *)p;
42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    pEnd = pCur + size;
43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    for(; pCur < pEnd; pCur += unit_size) {
44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        ((CJBig2_Object *)pCur)->m_pModule = pModule;
45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return p;
47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJBig2_Object::operator delete[](void *p, CJBig2_Module *pModule, size_t unit_size,
49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                      FX_LPCSTR filename, int line)
50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    pModule->JBig2_Free(p);
52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid *CJBig2_Object::operator new[](size_t size, CJBig2_Module *pModule, size_t unit_size)
54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void *p;
56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BYTE *pCur, *pEnd;
57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    p = (FX_BYTE *)pModule->JBig2_Malloc((FX_DWORD)size);
58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    pCur = (FX_BYTE *)p;
59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    pEnd = pCur + size;
60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    for(; pCur < pEnd; pCur += unit_size) {
61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        ((CJBig2_Object *)pCur)->m_pModule = pModule;
62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return p;
64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJBig2_Object::operator delete[](void* p)
66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    ((CJBig2_Object *)p)->m_pModule->JBig2_Free(p);
68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CJBig2_Object::operator delete[](void *p, CJBig2_Module *pModule, size_t unit_size)
70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    pModule->JBig2_Free(p);
72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
73