1 /** 2 * @file op_growable_buffer.h 3 * a growable buffer interface 4 * 5 * @remark Copyright 2007 OProfile authors 6 * @remark Read the file COPYING 7 * 8 * @author Philippe Elie 9 */ 10 11 #ifndef OP_GROWABLE_BUFFER_H 12 #define OP_GROWABLE_BUFFER_H 13 14 #include <stddef.h> 15 16 struct growable_buffer { 17 void * p; 18 size_t size; 19 size_t max_size; 20 }; 21 22 /** 23 * init_buffer - initialize an empty buffer 24 * @param buffer the buffer to initialize 25 * 26 * init_buffer do not do any allocation, the first allocation will occur 27 * when add_data() with a non zero len param will be called. 28 */ 29 void init_buffer(struct growable_buffer * buffer); 30 31 /** 32 * free_buffer - free the memory allocated for this buffer 33 * @param buffer the buffer to free 34 */ 35 void free_buffer(struct growable_buffer * buffer); 36 37 /** 38 * add_data - add data to this buffer 39 * @param b the buffer where to add data 40 * @param data a pointer to the data to add 41 * @param len number of byte to add to the buffer 42 */ 43 void add_data(struct growable_buffer * b, void const * data, size_t len); 44 45 #endif /* !OP_GROWABLE_BUFFER_H */ 46