/** * @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 */