/**
* \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);