PennMUSH Community

root/1.8.3/trunk/hdrs/bufferq.h

Revision 1278, 1.1 kB (checked in by shawnw, 2 months ago)

Prep for 1.8.3p7

Line 
1 /**
2  * \file bufferq.h
3  *
4  * \brief Headers for managing queues of buffers, a handy data structure.
5  *
6  *
7  */
8
9
10
11 typedef struct bufferq BUFFERQ;
12
13 struct bufferq {
14   char *buffer;         /**< Pointer to start of buffer */
15   char *buffer_end;     /**< Pointer to insertion point in buffer */
16   int buffer_size;      /**< Size allocated to buffer, in bytes */
17   int num_buffered;     /**< Number of strings in the buffer */
18   char last_string[BUFFER_LEN]; /**< Cache of last string inserted */
19   char last_type;       /**< Cache of type of last string inserted */
20 };
21
22 #define BufferQSize(b) ((b)->buffer_size)
23 #define BufferQNum(b) ((b)->num_buffered)
24 #define BufferQLast(b) ((b)->last_string)
25 #define BufferQLastType(b) ((b)->last_type)
26
27 BUFFERQ *allocate_bufferq(int lines);
28 BUFFERQ *reallocate_bufferq(BUFFERQ *bq, int lines);
29 void free_bufferq(BUFFERQ *bq);
30 void add_to_bufferq(BUFFERQ *bq, int type, dbref player, const char *msg);
31 char *iter_bufferq(BUFFERQ *bq, char **p, dbref *player, int *type,
32                    time_t * timestamp);
33 int bufferq_lines(BUFFERQ *bq);
34 int bufferq_blocks(BUFFERQ *bq);
35 bool isempty_bufferq(BUFFERQ *bq);
Note: See TracBrowser for help on using the browser.