/* =========================================================================== Copyright (C) 1999 - 2005, Id Software, Inc. Copyright (C) 2000 - 2013, Raven Software, Inc. Copyright (C) 2001 - 2013, Activision, Inc. Copyright (C) 2013 - 2015, OpenJK contributors This file is part of the OpenJK source code. OpenJK is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, see . =========================================================================== */ /***************************************************************************** * name: l_memory.h * * desc: memory management * * $Archive: /source/code/botlib/l_memory.h $ * $Author: Mrelusive $ * $Revision: 2 $ * $Modtime: 10/05/99 3:32p $ * $Date: 10/05/99 3:42p $ * *****************************************************************************/ #pragma once //#define MEMDEBUG #ifdef MEMDEBUG #define GetMemory(size) GetMemoryDebug(size, #size, __FILE__, __LINE__); #define GetClearedMemory(size) GetClearedMemoryDebug(size, #size, __FILE__, __LINE__); //allocate a memory block of the given size void *GetMemoryDebug(unsigned long size, char *label, char *file, int line); //allocate a memory block of the given size and clear it void *GetClearedMemoryDebug(unsigned long size, char *label, char *file, int line); // #define GetHunkMemory(size) GetHunkMemoryDebug(size, #size, __FILE__, __LINE__); #define GetClearedHunkMemory(size) GetClearedHunkMemoryDebug(size, #size, __FILE__, __LINE__); //allocate a memory block of the given size void *GetHunkMemoryDebug(unsigned long size, char *label, char *file, int line); //allocate a memory block of the given size and clear it void *GetClearedHunkMemoryDebug(unsigned long size, char *label, char *file, int line); #else //allocate a memory block of the given size void *GetMemory(unsigned long size); //allocate a memory block of the given size and clear it void *GetClearedMemory(unsigned long size); // #ifdef BSPC #define GetHunkMemory GetMemory #define GetClearedHunkMemory GetClearedMemory #else //allocate a memory block of the given size void *GetHunkMemory(unsigned long size); //allocate a memory block of the given size and clear it void *GetClearedHunkMemory(unsigned long size); #endif #endif //free the given memory block void FreeMemory(void *ptr); //returns the amount available memory int AvailableMemory(void); //prints the total used memory size void PrintUsedMemorySize(void); //print all memory blocks with label void PrintMemoryLabels(void); //returns the size of the memory block in bytes int MemoryByteSize(void *ptr); //free all allocated memory void DumpMemory(void);