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