/************************************************************************** * Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, * * Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe. * * * * Merc Diku Mud improvements copyright (C) 1992, 1993 by Michael * * Chastain, Michael Quan, and Mitchell Tse. * * * * 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. * * * * Much time and thought has gone into this software and you are * * benefiting. We hope that you share your changes too. What goes * * around, comes around. * *************************************************************************** * ROM 2.4 is copyright 1993-1998 Russ Taylor * * ROM has been brought to you by the ROM consortium * * Russ Taylor (rtaylor@hypercube.org) * * Gabrielle Taylor (gtaylor@hypercube.org) * * Brian Moore (zump@rom.org) * * By using this code, you have agreed to follow the terms of the * * ROM license, in the file Rom24/doc/rom.license * *************************************************************************** * 1stMUD ROM Derivative (c) 2001-2002 by Ryan Jennings * * http://1stmud.dlmud.com/ <r-jenn@shaw.ca> * ***************************************************************************/ #if !defined(RECYCLE_H) #define RECYCLE_H /* externs */ extern char str_empty[1]; extern int mobile_count; int get_size(int val); #define GET_FREE(point, type, pnext, freelist) \ do { \ if ( freelist != NULL ) \ { \ point = freelist; \ freelist = freelist->pnext; \ } \ else \ { \ point = (type *)alloc_perm(sizeof(*point)); \ }\ memset(point, 0, sizeof(*point)); \ } while(0) #define PUT_FREE(point, next, freelist) \ do { \ LINK_SINGLE(point, next, freelist); \ } while(0) /* stuff for providing a crash-proof buffer */ #define MAX_BUF 16384 #define MAX_BUF_LIST 10 #define BASE_BUF 1024 /* valid states */ #define BUFFER_SAFE 0 #define BUFFER_OVERFLOW 1 #define BUFFER_FREED 2 /* ban data recycling */ #define BD BAN_DATA BD *new_ban args((void)); void free_ban args((BAN_DATA * ban)); #undef BD /* descriptor recycling */ #define DD DESCRIPTOR_DATA DD *new_descriptor args((void)); void free_descriptor args((DESCRIPTOR_DATA * d)); #undef DD /* char gen data recycling */ #define GD GEN_DATA GD *new_gen_data args((void)); void free_gen_data args((GEN_DATA * gen)); #undef GD /* extra descr recycling */ #define ED EXTRA_DESCR_DATA ED *new_extra_descr args((void)); void free_extra_descr args((EXTRA_DESCR_DATA * ed)); #undef ED /* affect recycling */ #define AD AFFECT_DATA AD *new_affect args((void)); void free_affect args((AFFECT_DATA * af)); #undef AD /* object recycling */ #define OD OBJ_DATA OD *new_obj args((void)); void free_obj args((OBJ_DATA * obj)); #undef OD /* character recyling */ #define CD CHAR_DATA #define PD PC_DATA CD *new_char args((void)); void free_char args((CHAR_DATA * ch)); PD *new_pcdata args((void)); void free_pcdata args((PC_DATA * pcdata)); #undef PD #undef CD /* mob id and memory procedures */ #define MD MEM_DATA long get_pc_id args((void)); long get_mob_id args((void)); MD *new_mem_data args((void)); void free_mem_data args((MEM_DATA * memory)); MD *find_memory args((MEM_DATA * memory, long id)); #undef MD /* buffer procedures */ BUFFER *new_buf args((void)); BUFFER *new_buf_size args((int size)); void free_buf args((BUFFER * buffer)); bool add_buf args((BUFFER * buffer, const char *string)); void clear_buf args((BUFFER * buffer)); char *buf_string args((BUFFER * buffer)); HELP_DATA *new_help args((void)); void free_help args((HELP_DATA *)); /* statlist data recycling */ STAT_DATA *new_stat_data args((void)); void free_stat_data args((STAT_DATA * stat)); CORPSE_DATA *new_corpse args((void)); void free_corpse args((CORPSE_DATA * corpse)); AUCTION_DATA *new_auction args((void)); void free_auction args((AUCTION_DATA * auction)); void free_pwd args((WPWD_DATA * pwd)); WPWD_DATA *new_pwd args((void)); MBR_DATA *new_mbr args((void)); void free_mbr args((MBR_DATA * mbr)); RACE_DATA *new_race args((void)); void free_race args((RACE_DATA * race)); SOCIAL_DATA *new_social args((void)); void free_social args((SOCIAL_DATA * soc)); DEITY_DATA *new_deity args((void)); void free_deity args((DEITY_DATA * deity)); CLAN_DATA *new_clan args((void)); void free_clan args((CLAN_DATA * clan)); CMD_DATA *new_command args((void)); void free_command args((CMD_DATA * cmd)); #endif