#include <stdlib.h>
#include <stdbool.h>
struct aggregator
{
char *name;
char *shortname;
size_t data_size;
bool (*parse_args_func)(void **config_data, char*, int*, char**);
void (*init_func)(void *config_data, void*clump_data);
void (*add_func)(void *config_data, void *clump_data, char *ch_data[], double num_data[]);
void (*dump_func)(void *config_data, void *clump_data);
void (*free_func)(void *config_data, void *clump_data);
};
extern struct aggregator aggregators[];
#define RESIZE_ARRAY_IF_NECESSARY(ptr, size, desired_size) \
if(size < desired_size) \
{ \
while(size < desired_size) size *= 2; \
ptr = realloc(ptr, size*sizeof(*ptr)); \
}