Annotation of doom/z_zone.h, revision 1.1.1.1

1.1       root        1: // Emacs style mode select   -*- C++ -*- 
                      2: //-----------------------------------------------------------------------------
                      3: //
                      4: // $Id:$
                      5: //
                      6: // Copyright (C) 1993-1996 by id Software, Inc.
                      7: //
                      8: // This source is available for distribution and/or modification
                      9: // only under the terms of the DOOM Source Code License as
                     10: // published by id Software. All rights reserved.
                     11: //
                     12: // The source is distributed in the hope that it will be useful,
                     13: // but WITHOUT ANY WARRANTY; without even the implied warranty of
                     14: // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License
                     15: // for more details.
                     16: //
                     17: // DESCRIPTION:
                     18: //      Zone Memory Allocation, perhaps NeXT ObjectiveC inspired.
                     19: //     Remark: this was the only stuff that, according
                     20: //      to John Carmack, might have been useful for
                     21: //      Quake.
                     22: //
                     23: //---------------------------------------------------------------------
                     24: 
                     25: 
                     26: 
                     27: #ifndef __Z_ZONE__
                     28: #define __Z_ZONE__
                     29: 
                     30: #include <stdio.h>
                     31: 
                     32: //
                     33: // ZONE MEMORY
                     34: // PU - purge tags.
                     35: // Tags < 100 are not overwritten until freed.
                     36: #define PU_STATIC              1       // static entire execution time
                     37: #define PU_SOUND               2       // static while playing
                     38: #define PU_MUSIC               3       // static while playing
                     39: #define PU_DAVE                4       // anything else Dave wants static
                     40: #define PU_LEVEL               50      // static until level exited
                     41: #define PU_LEVSPEC             51      // a special thinker in a level
                     42: // Tags >= 100 are purgable whenever needed.
                     43: #define PU_PURGELEVEL  100
                     44: #define PU_CACHE               101
                     45: 
                     46: 
                     47: void   Z_Init (void);
                     48: void*  Z_Malloc (int size, int tag, void *ptr);
                     49: void    Z_Free (void *ptr);
                     50: void    Z_FreeTags (int lowtag, int hightag);
                     51: void    Z_DumpHeap (int lowtag, int hightag);
                     52: void    Z_FileDumpHeap (FILE *f);
                     53: void    Z_CheckHeap (void);
                     54: void    Z_ChangeTag2 (void *ptr, int tag);
                     55: int     Z_FreeMemory (void);
                     56: 
                     57: 
                     58: typedef struct memblock_s
                     59: {
                     60:     int                        size;   // including the header and possibly tiny fragments
                     61:     void**             user;   // NULL if a free block
                     62:     int                        tag;    // purgelevel
                     63:     int                        id;     // should be ZONEID
                     64:     struct memblock_s* next;
                     65:     struct memblock_s* prev;
                     66: } memblock_t;
                     67: 
                     68: //
                     69: // This is used to get the local FILE:LINE info from CPP
                     70: // prior to really call the function in question.
                     71: //
                     72: #define Z_ChangeTag(p,t) \
                     73: { \
                     74:       if (( (memblock_t *)( (byte *)(p) - sizeof(memblock_t)))->id!=0x1d4a11) \
                     75:          I_Error("Z_CT at "__FILE__":%i",__LINE__); \
                     76:          Z_ChangeTag2(p,t); \
                     77: };
                     78: 
                     79: 
                     80: 
                     81: #endif
                     82: //-----------------------------------------------------------------------------
                     83: //
                     84: // $Log:$
                     85: //
                     86: //-----------------------------------------------------------------------------

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.