sunder2.1/clan/
sunder2.1/class/
sunder2.1/class/bak/
sunder2.1/doc/ideas/
sunder2.1/gods/
sunder2.1/log/
sunder2.1/msgbase/
sunder2.1/src/o/
sunder2.1/time/
/**********************************************************
 *************** S U N D E R M U D *** 2 . 0 **************
 **********************************************************
 * The unique portions of the SunderMud code as well as   *
 * the integration efforts for code from other sources is *
 * based primarily on the efforts of:                     *
 *                                                        *
 * Lotherius <aelfwyne@operamail.com> (Alvin W. Brinson)  *
 *    and many others, see "help sundermud" in the mud.   *
 **********************************************************/


/*** buffer.h ****/

#ifndef _BUFFER_H
# define _BUFFER_H   1

# define BUFFER_DEBUG

typedef struct buffer_type BUFFER;

struct buffer_type
{
     char *data; /* The data */

     int len;	/* The current len of the buffer */
     int size;	/* The allocated size of data */

     bool overflowed; /* Is the buffer overflowed? */
};

# ifdef BUFFER_DEBUG /* Debugged version */

#  define buffer_new(size)           __buffer_new (size, __FILE__, __LINE__)
#  define buffer_strcat(buffer,text) __buffer_strcat (buffer, text, __FILE__, __LINE__)

BUFFER * __buffer_new (int size, const char *file, unsigned line);
void __buffer_strcat (BUFFER *buffer, const char *text, const char *file, unsigned line);

# else  /* not debugged version */

#  define buffer_new(size)           __buffer_new (size)
#  define buffer_strcat(buffer,text) __buffer_strcat (buffer,text)

BUFFER * __buffer_new (int size);
void __buffer_strcat (BUFFER *buffer, const char *text);

# endif

void buffer_free (BUFFER *buffer);
void buffer_clear (BUFFER *buffer);
int find_mem_size (int min_size);
int bprintf (BUFFER *buffer, char *fmt, ...);

#endif // _BUFFER_H