//CFTTMem - [2020-04-13 11:57:46]
#ifndef _CFTTMEM_H_
#define _CFTTMEM_H_

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "mem_enum.h"
#include "common_type.h"

/*
00266C30 CFTTMem::Initialise(int, CFTTMem_HeapSettings const*)
00266C94 CFTTMem::Shutdown()
00266CBC CFTTMem::Allocate_Internal(EFTTMemHeapID, uint, uint, EFTTMemAllocMode)
00266E38 CFTTMem::Free_Internal(void *,EFTTMemAllocMode)
00266FBC CFTTMem::Reallocate_Internal(void *,EFTTMemHeapID,uint)

001FB0B2
*/
//-------------------------------------------------------------------------------------------------
struct CFTTMem_HeapSettings {
  uint32 field_0;
  char name[16];
  uint32 field_14;
  uint32 field_18;
};
//-------------------------------------------------------------------------------------------------
class CFTTMem {
public:
  static void* Allocate_Internal(EFTTMemHeapID eHeapID,
                                 uint count,
                                 uint aAlign,
                                 EFTTMemAllocMode eMod = EFTTMemAllocMode_0);  //00266CBC
  static void Initialise(int count,
                         CFTTMem_HeapSettings const* a2);  //00266C30
  static void Free_Internal(void* pbuf,
                            EFTTMemAllocMode eMode = EFTTMemAllocMode_0);  //00266E38
  static void* Reallocate_Internal(void* pbuf,
                                   EFTTMemHeapID eAllocMode,
                                   uint dsize);  //00266FBC
  static void Shutdown();                        //00266C94
};
//-------------------------------------------------------------------------------------------------
class CFTTMemAutoShutdown {
public:
  ~CFTTMemAutoShutdown();
};
//-------------------------------------------------------------------------------------------------
#endif  //_CFTTMEM_H_