//////////////////////////////////////////////////////////////////////////////
//
// Asura_Platform_MemoryManagement.h (PC)
//
// Created by Mike Healey.
//
// Copyright (c) 2002 Rebellion. All rights reserved.
//
// provides defines for platform-specific memory manager functionality
//
//////////////////////////////////////////////////////////////////////////////

// B E G I N   F I L E   W R A P P E R ///////////////////////////////////////

#ifdef ASURA_USE_PRAGMA_ONCE
    #pragma once
#endif

#ifndef ___ASURA_PLATFORM_MEMORYMANAGEMENT_H___
#define ___ASURA_PLATFORM_MEMORYMANAGEMENT_H___ 1

// M A C R O S ///////////////////////////////////////////////////////////////

#define ASURA_MEMORYMANAGEMENT_PLATFORM_INIT_WHEN_DISABLED (1)
#define ASURA_MEMORYMANAGEMENT_INIT_OBJ_IN_PLATFORM_CODE   (1)

// P R O T O T Y P E S   A N D   I N L I N E   F U N C T I O N S /////////////

#ifndef ASURA_MEMORYMANAGEMENT_ENABLED

extern void* Asura_PC_AllocateAlign(unsigned int bytes, enum ASURA_ALIGN_ID alignment);
extern void Asura_PC_DeallocateAlign(void* address);


inline void* Asura_AllocateAlign(unsigned int bytes, enum ASURA_ALIGN_ID alignment)
{
    return Asura_PC_AllocateAlign(bytes,alignment);
}

inline void Asura_DeallocateAlign(void* address)
{
    Asura_PC_DeallocateAlign(address);
}

#endif


// E N D   F I L E   W R A P P E R ///////////////////////////////////////////

#endif // #ifndef ___ASURA_PLATFORM_MEMORYMANAGEMENT_H___
