/*************************************************************************** * Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, * * Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe. * * * * Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael * * Chastain, Michael Quan, and Mitchell Tse. * * * * Ack 2.2 improvements copyright (C) 1994 by Stephen Dooley * * * * In order to use any part of this Merc Diku Mud, you must comply with * * both the original Diku license in 'license.doc' as well the Merc * * license in 'license.txt'. In particular, you may not remove either of * * these copyright notices. * * * * _/ _/_/_/ _/ _/ _/ ACK! MUD is modified * * _/_/ _/ _/ _/ _/ Merc2.0/2.1/2.2 code * * _/ _/ _/ _/_/ _/ (c)Stephen Zepp 1998 * * _/_/_/_/ _/ _/ _/ Version #: 4.3 * * _/ _/ _/_/_/ _/ _/ _/ * * * * http://ackmud.nuc.net/ * * zenithar@ackmud.nuc.net * * Much time and thought has gone into this software and you are * * benefitting. We hope that you share your changes too. What goes * * around, comes around. * ***************************************************************************/ /*************************************************************************** * _/_/_/_/ _/ _/ _/_/_/_/ _/_/_/_/ AckFUSS is modified ACK!MUD 4.3.1 * * _/ _/ _/ _/ _/ copyright Matt Goff (Kline) 2008 * * _/_/ _/ _/ _/_/_/_/ _/_/_/_/ * * _/ _/ _/ _/ _/ Support for this code is provided * * _/ _/_/_/_/ _/_/_/_/ _/_/_/_/ at www.ackmud.net -- check it out!* ***************************************************************************/ #include <list> #define DEC_LISTS_H /* * All of the global linked lists, in one clump. Declarations here, * actual variables in lists.c * -- Altrag */ extern list<AFFECT_DATA *> affect_list; extern list<CHAR_DATA *> aggro_list; extern list<AREA_DATA *> area_list; extern list<BAN_DATA *> ban_list; extern list<BOARD_DATA *> board_list; extern list<BUILD_DATA_LIST *> build_dat_list; extern list<CHAR_DATA *> cast_list; extern list<CHAR_DATA *> char_list; extern list<OBJ_DATA *> corpse_list; extern list<DISABLED_DATA *> disabled_list; extern list<EXTRA_DESCR_DATA *> exdesc_list; extern list<EXIT_DATA *> exit_list; extern list<CHAR_DATA *> fight_list; extern list<FILE *> file_list; extern list<LUA_DATA *> lua_list; extern list<MOB_INDEX_DATA *> mob_index_list; extern list<NOTE_DATA *> note_list; extern list<OBJ_DATA *> obj_list; extern list<OBJ_INDEX_DATA *> obj_index_list; extern list<RESET_DATA *> reset_list; extern list<ROOM_INDEX_DATA *> room_index_list; extern list<RULER_DATA *> ruler_list; extern list<SHOP_DATA *> shop_list; extern DESCRIPTOR_DATA *first_desc; extern DESCRIPTOR_DATA *last_desc; extern BUILD_DATA_LIST *first_build; extern BUILD_DATA_LIST *last_build; extern DL_LIST *first_brand; extern DL_LIST *last_brand; extern BUF_DATA_STRUCT *first_buf; extern BUF_DATA_STRUCT *last_buf; extern NPC_GROUP_DATA *first_npc_group; extern NPC_GROUP_DATA *last_npc_group; extern MEMBER_DATA *member_free; extern DL_LIST *dl_list_free; extern void ( *member_free_destructor ) ( MEMBER_DATA * mdat ); extern void ( *dl_list_free_destructor ) ( DL_LIST * dldat ); extern int free_get; extern int free_put; #define GET_FREE(item, freelist) \ do { \ if ( !(freelist) ) \ (item) = (typeof(item))getmem(sizeof(*(item))); \ else { \ if ( !(freelist)->is_free ) { \ bug("GET_FREE: freelist head is NOT FREE! Hanging...", 0); \ for (;;); \ } \ (item) = (freelist); \ (freelist) = (item)->next; \ memset((item), 0, sizeof(*(item))); /* This clears is_free flag */ \ free_get++; \ } \ } while(0) #define PUT_FREE(item, freelist) \ do { \ if ( (item)->is_free ) { \ bug("PUT_FREE: item is ALREADY FREE! Aborting...", 0); \ abort(); \ } \ (item)->next = (freelist); \ (item)->is_free = TRUE; /* This sets is_free flag */ \ (freelist) = (item); \ if( freelist##_destructor != NULL ) freelist##_destructor(item); \ free_put++; \ } while(0)