| /** |
| * @file op_growable_buffer.h |
| * a growable buffer interface |
| * |
| * @remark Copyright 2007 OProfile authors |
| * @remark Read the file COPYING |
| * |
| * @author Philippe Elie |
| */ |
| |
| #ifndef OP_GROWABLE_BUFFER_H |
| #define OP_GROWABLE_BUFFER_H |
| |
| #include <stddef.h> |
| |
| struct growable_buffer { |
| void * p; |
| size_t size; |
| size_t max_size; |
| }; |
| |
| /** |
| * init_buffer - initialize an empty buffer |
| * @param buffer the buffer to initialize |
| * |
| * init_buffer do not do any allocation, the first allocation will occur |
| * when add_data() with a non zero len param will be called. |
| */ |
| void init_buffer(struct growable_buffer * buffer); |
| |
| /** |
| * free_buffer - free the memory allocated for this buffer |
| * @param buffer the buffer to free |
| */ |
| void free_buffer(struct growable_buffer * buffer); |
| |
| /** |
| * add_data - add data to this buffer |
| * @param b the buffer where to add data |
| * @param data a pointer to the data to add |
| * @param len number of byte to add to the buffer |
| */ |
| void add_data(struct growable_buffer * b, void const * data, size_t len); |
| |
| #endif /* !OP_GROWABLE_BUFFER_H */ |