pennmush/game/data/
pennmush/game/log/
pennmush/game/save/
pennmush/game/txt/evt/
pennmush/game/txt/nws/
pennmush/os2/
pennmush/po/
pennmush/win32/msvc.net/
pennmush/win32/msvc6/
/**
 * \file bufferq.h
 *
 * \brief Headers for managing queues of buffers, a handy data structure.
 *
 *
 */



typedef struct bufferq BUFFERQ;

struct bufferq {
  char *buffer;		/**< Pointer to start of buffer */
  char *buffer_end;	/**< Pointer to insertion point in buffer */
  int buffer_size;	/**< Size allocated to buffer, in bytes */
  int num_buffered;	/**< Number of strings in the buffer */
  char last_string[BUFFER_LEN];	/**< Cache of last string inserted */
  char last_type;	/**< Cache of type of last string inserted */
};

#define BufferQSize(b) ((b)->buffer_size)
#define BufferQNum(b) ((b)->num_buffered)
#define BufferQLast(b) ((b)->last_string)
#define BufferQLastType(b) ((b)->last_type)

extern BUFFERQ *allocate_bufferq(int lines);
extern BUFFERQ *reallocate_bufferq(BUFFERQ * bq, int lines);
extern void free_bufferq(BUFFERQ * bq);
extern void add_to_bufferq(BUFFERQ * bq, int type, dbref player,
			   const char *msg);
extern char *iter_bufferq(BUFFERQ * bq, char **p, dbref *player, int *type,
			  time_t * timestamp);
extern int bufferq_lines(BUFFERQ * bq);
extern int isempty_bufferq(BUFFERQ * bq);