Quake-III-Arena

Quake III Arena GPL Source Release
Log | Files | Refs

l_memory.h (3011B)


      1 /*
      2 ===========================================================================
      3 Copyright (C) 1999-2005 Id Software, Inc.
      4 
      5 This file is part of Quake III Arena source code.
      6 
      7 Quake III Arena source code is free software; you can redistribute it
      8 and/or modify it under the terms of the GNU General Public License as
      9 published by the Free Software Foundation; either version 2 of the License,
     10 or (at your option) any later version.
     11 
     12 Quake III Arena source code is distributed in the hope that it will be
     13 useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
     14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15 GNU General Public License for more details.
     16 
     17 You should have received a copy of the GNU General Public License
     18 along with Foobar; if not, write to the Free Software
     19 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
     20 ===========================================================================
     21 */
     22 
     23 /*****************************************************************************
     24  * name:		l_memory.h
     25  *
     26  * desc:		memory management
     27  *
     28  * $Archive: /source/code/botlib/l_memory.h $
     29  *
     30  *****************************************************************************/
     31 
     32 //#define MEMDEBUG
     33 
     34 #ifdef MEMDEBUG
     35 #define GetMemory(size)				GetMemoryDebug(size, #size, __FILE__, __LINE__);
     36 #define GetClearedMemory(size)		GetClearedMemoryDebug(size, #size, __FILE__, __LINE__);
     37 //allocate a memory block of the given size
     38 void *GetMemoryDebug(unsigned long size, char *label, char *file, int line);
     39 //allocate a memory block of the given size and clear it
     40 void *GetClearedMemoryDebug(unsigned long size, char *label, char *file, int line);
     41 //
     42 #define GetHunkMemory(size)			GetHunkMemoryDebug(size, #size, __FILE__, __LINE__);
     43 #define GetClearedHunkMemory(size)	GetClearedHunkMemoryDebug(size, #size, __FILE__, __LINE__);
     44 //allocate a memory block of the given size
     45 void *GetHunkMemoryDebug(unsigned long size, char *label, char *file, int line);
     46 //allocate a memory block of the given size and clear it
     47 void *GetClearedHunkMemoryDebug(unsigned long size, char *label, char *file, int line);
     48 #else
     49 //allocate a memory block of the given size
     50 void *GetMemory(unsigned long size);
     51 //allocate a memory block of the given size and clear it
     52 void *GetClearedMemory(unsigned long size);
     53 //
     54 #ifdef BSPC
     55 #define GetHunkMemory GetMemory
     56 #define GetClearedHunkMemory GetClearedMemory
     57 #else
     58 //allocate a memory block of the given size
     59 void *GetHunkMemory(unsigned long size);
     60 //allocate a memory block of the given size and clear it
     61 void *GetClearedHunkMemory(unsigned long size);
     62 #endif
     63 #endif
     64 
     65 //free the given memory block
     66 void FreeMemory(void *ptr);
     67 //returns the amount available memory
     68 int AvailableMemory(void);
     69 //prints the total used memory size
     70 void PrintUsedMemorySize(void);
     71 //print all memory blocks with label
     72 void PrintMemoryLabels(void);
     73 //returns the size of the memory block in bytes
     74 int MemoryByteSize(void *ptr);
     75 //free all allocated memory
     76 void DumpMemory(void);