idris-0.12.3: test/ffi009/ffi009.c
#include "ffi009.h"
Vect* foo(int length)
{
return new_empty_vect(length);
}
Vect* bar(int length)
{
return new_empty_vect(length * 2);
}
Vect* new_empty_vect(int l)
{
unsigned char* vect;
vect = malloc(sizeof(unsigned char) * l);
if (vect == NULL){
free(vect);
return NULL;
}
Vect* v = malloc(sizeof(Vect));
if (v==NULL){
free(vect);
free(v);
return NULL;
}
v->value = vect;
v->length = l;
return v;
}
int get_allocation_size(Vect* v)
{
return sizeof(Vect) + v->length;
}