/************************************************************************** * 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-2003 by Ryan Jennings * * http://1stmud.dlmud.com/ <r-jenn@shaw.ca> * ***************************************************************************/ #if !defined(RECYCLE_H) #define RECYCLE_H /* EXTERNs */ EXTERN char str_empty[1]; PROTOTYPE(int get_size, (int)); #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 PROTOTYPE(BD * new_ban, (void)); PROTOTYPE(void free_ban, (BAN_DATA *)); #undef BD /* descriptor recycling */ #define DD DESCRIPTOR_DATA PROTOTYPE(DD * new_descriptor, (void)); PROTOTYPE(void free_descriptor, (DESCRIPTOR_DATA *)); #undef DD /* char gen data recycling */ #define GD GEN_DATA PROTOTYPE(GD * new_gen_data, (void)); PROTOTYPE(void free_gen_data, (GEN_DATA *)); #undef GD /* extra descr recycling */ #define ED EXTRA_DESCR_DATA PROTOTYPE(ED * new_extra_descr, (void)); PROTOTYPE(void free_extra_descr, (EXTRA_DESCR_DATA *)); #undef ED /* affect recycling */ #define AD AFFECT_DATA PROTOTYPE(AD * new_affect, (void)); PROTOTYPE(void free_affect, (AFFECT_DATA *)); #undef AD /* object recycling */ #define OD OBJ_DATA PROTOTYPE(OD * new_obj, (void)); PROTOTYPE(void free_obj, (OBJ_DATA *)); #undef OD /* character recyling */ #define CD CHAR_DATA #define PD PC_DATA PROTOTYPE(CD * new_char, (void)); PROTOTYPE(void free_char, (CHAR_DATA *)); PROTOTYPE(PD * new_pcdata, (void)); PROTOTYPE(void free_pcdata, (PC_DATA *)); #undef PD #undef CD /* buffer procedures */ PROTOTYPE(BUFFER * new_buf, (void)); PROTOTYPE(BUFFER * new_buf_size, (int size)); PROTOTYPE(void free_buf, (BUFFER * buffer)); PROTOTYPE(bool bprint, (BUFFER * buffer, const char *string)); PROTOTYPEF(void bprintf, (BUFFER * buffer, const char *messg, ...), 2, 3); PROTOTYPEF(void bprintlnf, (BUFFER * buffer, const char *messg, ...), 2, 3); PROTOTYPE(void bprintln, (BUFFER * buffer, const char *messg)); PROTOTYPE(void clear_buf, (BUFFER * buffer)); PROTOTYPE(char *buf_string, (BUFFER * buffer)); PROTOTYPE(long get_mob_id, (void)); PROTOTYPE(long get_pc_id, (void)); PROTOTYPE(HELP_DATA * new_help, (void)); PROTOTYPE(void free_help, (HELP_DATA *)); /* statlist data recycling */ PROTOTYPE(STAT_DATA * new_stat_data, (void)); PROTOTYPE(void free_stat_data, (STAT_DATA *)); PROTOTYPE(CORPSE_DATA * new_corpse, (void)); PROTOTYPE(void free_corpse, (CORPSE_DATA *)); PROTOTYPE(AUCTION_DATA * new_auction, (void)); PROTOTYPE(void free_auction, (AUCTION_DATA *)); PROTOTYPE(void free_pwd, (WPWD_DATA *)); PROTOTYPE(WPWD_DATA * new_pwd, (void)); PROTOTYPE(MBR_DATA * new_mbr, (void)); PROTOTYPE(void free_mbr, (MBR_DATA *)); PROTOTYPE(RACE_DATA * new_race, (void)); PROTOTYPE(void free_race, (RACE_DATA *)); PROTOTYPE(SOCIAL_DATA * new_social, (void)); PROTOTYPE(void free_social, (SOCIAL_DATA *)); PROTOTYPE(DEITY_DATA * new_deity, (void)); PROTOTYPE(void free_deity, (DEITY_DATA *)); PROTOTYPE(CLAN_DATA * new_clan, (void)); PROTOTYPE(void free_clan, (CLAN_DATA *)); PROTOTYPE(CMD_DATA * new_command, (void)); PROTOTYPE(void free_command, (CMD_DATA *)); #endif