///////////////////////////////////////////////////////////////////////////////
/// @file Internal.hpp
///
/// @brief Destiny3D Internal Memory Manager for Memory Manager
///
/// @author Lightning
///
/// This file is the intellectual property of Novus Delta, LLC.. Usage of the
/// contents of this file is subject to the Destiny3D Member License which
/// can be found at http://www.destiny3d.com.  Any other usage is prohibited.
///
/// This file is distributed "AS IS" without warranty of any kind.  Novus
/// Delta, LLC. does not guarantee the fitness of the contents of this file
/// for any particular purpose.
///
/// Copyright (C) 2001-2003 Novus Delta, LLC. All Rights Reserved.
///
/// <hr>
///                                 Change History
/// <hr>
///
/// @date Dec 2002
/// @author Lightning
/// @remarks Creation
///
///////////////////////////////////////////////////////////////////////////////

#include "deGlobalTypes.hpp"
#include "deMemory_priv.hpp"

#ifndef INTERNAL_MEM_HPP
#define INTERNAL_MEM_HPP

//the internal struct for internal blocks
typedef struct InternalStruct
{
	InternalStruct	*Next;
	InternalStruct	*Prev;
	DWORD			Size;
} InternalStruct;

//init/release functions for internal memory
deBoolean InitializeInternalMem(DWORD PageCount);
void ReleaseInternalMem();

//these functions are for internal memory allocation/deallocation. The internal memory has
//NO, i repeat, NO checks. you CAN, and WILL trash the internal memory, probably bringing
//the memory manager down if you overflow or underflow your allocated space
void *InternalAlloc(DWORD Size);			//max size, 0xFC00
void InternalFree(void *Ptr, DWORD Size);

#endif