mirror of
https://github.com/id-Software/DOOM.git
synced 2026-03-20 00:49:46 +01:00
The DOOM sources as originally released on December 23, 1997
This commit is contained in:
86
linuxdoom-1.10/z_zone.h
Normal file
86
linuxdoom-1.10/z_zone.h
Normal file
@@ -0,0 +1,86 @@
|
||||
// Emacs style mode select -*- C++ -*-
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// $Id:$
|
||||
//
|
||||
// Copyright (C) 1993-1996 by id Software, Inc.
|
||||
//
|
||||
// This source is available for distribution and/or modification
|
||||
// only under the terms of the DOOM Source Code License as
|
||||
// published by id Software. All rights reserved.
|
||||
//
|
||||
// The source is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License
|
||||
// for more details.
|
||||
//
|
||||
// DESCRIPTION:
|
||||
// Zone Memory Allocation, perhaps NeXT ObjectiveC inspired.
|
||||
// Remark: this was the only stuff that, according
|
||||
// to John Carmack, might have been useful for
|
||||
// Quake.
|
||||
//
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
#ifndef __Z_ZONE__
|
||||
#define __Z_ZONE__
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
//
|
||||
// ZONE MEMORY
|
||||
// PU - purge tags.
|
||||
// Tags < 100 are not overwritten until freed.
|
||||
#define PU_STATIC 1 // static entire execution time
|
||||
#define PU_SOUND 2 // static while playing
|
||||
#define PU_MUSIC 3 // static while playing
|
||||
#define PU_DAVE 4 // anything else Dave wants static
|
||||
#define PU_LEVEL 50 // static until level exited
|
||||
#define PU_LEVSPEC 51 // a special thinker in a level
|
||||
// Tags >= 100 are purgable whenever needed.
|
||||
#define PU_PURGELEVEL 100
|
||||
#define PU_CACHE 101
|
||||
|
||||
|
||||
void Z_Init (void);
|
||||
void* Z_Malloc (int size, int tag, void *ptr);
|
||||
void Z_Free (void *ptr);
|
||||
void Z_FreeTags (int lowtag, int hightag);
|
||||
void Z_DumpHeap (int lowtag, int hightag);
|
||||
void Z_FileDumpHeap (FILE *f);
|
||||
void Z_CheckHeap (void);
|
||||
void Z_ChangeTag2 (void *ptr, int tag);
|
||||
int Z_FreeMemory (void);
|
||||
|
||||
|
||||
typedef struct memblock_s
|
||||
{
|
||||
int size; // including the header and possibly tiny fragments
|
||||
void** user; // NULL if a free block
|
||||
int tag; // purgelevel
|
||||
int id; // should be ZONEID
|
||||
struct memblock_s* next;
|
||||
struct memblock_s* prev;
|
||||
} memblock_t;
|
||||
|
||||
//
|
||||
// This is used to get the local FILE:LINE info from CPP
|
||||
// prior to really call the function in question.
|
||||
//
|
||||
#define Z_ChangeTag(p,t) \
|
||||
{ \
|
||||
if (( (memblock_t *)( (byte *)(p) - sizeof(memblock_t)))->id!=0x1d4a11) \
|
||||
I_Error("Z_CT at "__FILE__":%i",__LINE__); \
|
||||
Z_ChangeTag2(p,t); \
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// $Log:$
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
Reference in New Issue
Block a user