| /* |
| |
| buffer.h |
| |
| Author: Tatu Ylonen <ylo@cs.hut.fi> |
| |
| Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland |
| All rights reserved |
| |
| Created: Sat Mar 18 04:12:25 1995 ylo |
| |
| Code for manipulating FIFO buffers. |
| |
| */ |
| |
| /* RCSID("$Id: buffer.h,v 1.1 1999/10/27 03:42:43 damien Exp $"); */ |
| |
| #ifndef BUFFER_H |
| #define BUFFER_H |
| |
| typedef struct |
| { |
| char *buf; /* Buffer for data. */ |
| unsigned int alloc; /* Number of bytes allocated for data. */ |
| unsigned int offset; /* Offset of first byte containing data. */ |
| unsigned int end; /* Offset of last byte containing data. */ |
| } Buffer; |
| |
| /* Initializes the buffer structure. */ |
| void buffer_init(Buffer *buffer); |
| |
| /* Frees any memory used for the buffer. */ |
| void buffer_free(Buffer *buffer); |
| |
| /* Clears any data from the buffer, making it empty. This does not actually |
| zero the memory. */ |
| void buffer_clear(Buffer *buffer); |
| |
| /* Appends data to the buffer, expanding it if necessary. */ |
| void buffer_append(Buffer *buffer, const char *data, unsigned int len); |
| |
| /* Appends space to the buffer, expanding the buffer if necessary. |
| This does not actually copy the data into the buffer, but instead |
| returns a pointer to the allocated region. */ |
| void buffer_append_space(Buffer *buffer, char **datap, unsigned int len); |
| |
| /* Returns the number of bytes of data in the buffer. */ |
| unsigned int buffer_len(Buffer *buffer); |
| |
| /* Gets data from the beginning of the buffer. */ |
| void buffer_get(Buffer *buffer, char *buf, unsigned int len); |
| |
| /* Consumes the given number of bytes from the beginning of the buffer. */ |
| void buffer_consume(Buffer *buffer, unsigned int bytes); |
| |
| /* Consumes the given number of bytes from the end of the buffer. */ |
| void buffer_consume_end(Buffer *buffer, unsigned int bytes); |
| |
| /* Returns a pointer to the first used byte in the buffer. */ |
| char *buffer_ptr(Buffer *buffer); |
| |
| /* Dumps the contents of the buffer to stderr in hex. This intended for |
| debugging purposes only. */ |
| void buffer_dump(Buffer *buffer); |
| |
| #endif /* BUFFER_H */ |