]>
Commit | Line | Data |
---|---|---|
8efc0c15 | 1 | /* |
35484284 | 2 | * |
5260325f | 3 | * buffer.h |
35484284 | 4 | * |
5260325f | 5 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
35484284 | 6 | * |
5260325f | 7 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland |
8 | * All rights reserved | |
35484284 | 9 | * |
5260325f | 10 | * Created: Sat Mar 18 04:12:25 1995 ylo |
35484284 | 11 | * |
5260325f | 12 | * Code for manipulating FIFO buffers. |
35484284 | 13 | * |
5260325f | 14 | */ |
8efc0c15 | 15 | |
16 | /* RCSID("$Id$"); */ | |
17 | ||
18 | #ifndef BUFFER_H | |
19 | #define BUFFER_H | |
20 | ||
5260325f | 21 | typedef struct { |
22 | char *buf; /* Buffer for data. */ | |
23 | unsigned int alloc; /* Number of bytes allocated for data. */ | |
24 | unsigned int offset; /* Offset of first byte containing data. */ | |
25 | unsigned int end; /* Offset of last byte containing data. */ | |
26 | } Buffer; | |
8efc0c15 | 27 | /* Initializes the buffer structure. */ |
5260325f | 28 | void buffer_init(Buffer * buffer); |
8efc0c15 | 29 | |
30 | /* Frees any memory used for the buffer. */ | |
5260325f | 31 | void buffer_free(Buffer * buffer); |
8efc0c15 | 32 | |
33 | /* Clears any data from the buffer, making it empty. This does not actually | |
34 | zero the memory. */ | |
5260325f | 35 | void buffer_clear(Buffer * buffer); |
8efc0c15 | 36 | |
37 | /* Appends data to the buffer, expanding it if necessary. */ | |
5260325f | 38 | void buffer_append(Buffer * buffer, const char *data, unsigned int len); |
8efc0c15 | 39 | |
aa3378df | 40 | /* |
41 | * Appends space to the buffer, expanding the buffer if necessary. This does | |
42 | * not actually copy the data into the buffer, but instead returns a pointer | |
43 | * to the allocated region. | |
44 | */ | |
5260325f | 45 | void buffer_append_space(Buffer * buffer, char **datap, unsigned int len); |
8efc0c15 | 46 | |
47 | /* Returns the number of bytes of data in the buffer. */ | |
5260325f | 48 | unsigned int buffer_len(Buffer * buffer); |
8efc0c15 | 49 | |
50 | /* Gets data from the beginning of the buffer. */ | |
5260325f | 51 | void buffer_get(Buffer * buffer, char *buf, unsigned int len); |
8efc0c15 | 52 | |
53 | /* Consumes the given number of bytes from the beginning of the buffer. */ | |
5260325f | 54 | void buffer_consume(Buffer * buffer, unsigned int bytes); |
8efc0c15 | 55 | |
56 | /* Consumes the given number of bytes from the end of the buffer. */ | |
5260325f | 57 | void buffer_consume_end(Buffer * buffer, unsigned int bytes); |
8efc0c15 | 58 | |
59 | /* Returns a pointer to the first used byte in the buffer. */ | |
5260325f | 60 | char *buffer_ptr(Buffer * buffer); |
8efc0c15 | 61 | |
aa3378df | 62 | /* |
63 | * Dumps the contents of the buffer to stderr in hex. This intended for | |
64 | * debugging purposes only. | |
65 | */ | |
5260325f | 66 | void buffer_dump(Buffer * buffer); |
8efc0c15 | 67 | |
5260325f | 68 | #endif /* BUFFER_H */ |