// 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 _JBIG2_MODULE_H_
#define _JBIG2_MODULE_H_
#include "JBig2_Define.h"
class CJBig2_Module {
 public:
  virtual ~CJBig2_Module() {}

  virtual void* JBig2_Malloc(FX_DWORD dwSize) = 0;

  virtual void* JBig2_Malloc2(FX_DWORD num, FX_DWORD dwSize) = 0;

  virtual void* JBig2_Malloc3(FX_DWORD num,
                              FX_DWORD dwSize,
                              FX_DWORD dwSize2) = 0;

  virtual void* JBig2_Realloc(void* pMem, FX_DWORD dwSize) = 0;

  virtual void JBig2_Free(void* pMem) = 0;
};
#endif
