dawn/notes/
dawn/src/
dawn/src/docs/
/**************************************************************************/
// recycle.h - 
/***************************************************************************
 * The Dawn of Time v1.69r (c)1997-2004 Michael Garratt                    *
 * >> A number of people have contributed to the Dawn codebase, with the   *
 *    majority of code written by Michael Garratt - www.dawnoftime.org     *
 * >> To use this source code, you must fully comply with all the licenses *
 *    in licenses.txt... In particular, you may not remove this copyright  *
 *    notice.                                                              *
 ***************************************************************************
 * >> Original Diku Mud copyright (c)1990, 1991 by Sebastian Hammer,       *
 *    Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, & Katja Nyboe.   *
 * >> Merc Diku Mud improvements copyright (C) 1992, 1993 by Michael       *
 *    Chastain, Michael Quan, and Mitchell Tse.                            *
 * >> ROM 2.4 is copyright 1993-1995 Russ Taylor and has been brought to   *
 *    you by the ROM consortium: Russ Taylor(rtaylor@pacinfo.com),         *
 *    Gabrielle Taylor(gtaylor@pacinfo.com) & Brian Moore(rom@rom.efn.org) *
 * >> Oblivion 1.2 is copyright 1996 Wes Wagner                            *
 **************************************************************************/
#ifndef RECYCLE_H
#define RECYCLE_H

#include "ban.h"

// externs 
extern char str_empty[1];
extern int mobile_count;

// stuff for providing a crash-proof buffer 
#define MAX_BUF		65536
#define MAX_BUF_LIST 	12
#define BASE_BUF 	1024

// valid states 
#define BUFFER_SAFE	0
#define BUFFER_OVERFLOW	1
#define BUFFER_FREED 	2

// note recycling 
#define ND NOTE_DATA
ND	*new_note args( (void) );
void	free_note args( (NOTE_DATA *note) );
#undef ND

// 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 connection_data
DD  *connection_allocate args( (void) );
void	connection_deallocate args( (connection_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) );
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) );
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) );


room_echo_data *new_room_echo( void );
void			free_room_echo( room_echo_data *);

// Area Echoes
area_echo_data *new_area_echo( void );
void			free_area_echo( area_echo_data *);

#endif // RECYCLE_H