Annotation of doom/z_zone.h, revision 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.