From 285f5bec5bb03d4e825e5d866e94008088dd6155 Mon Sep 17 00:00:00 2001 From: xleroy Date: Sat, 9 Aug 2008 08:06:33 +0000 Subject: Ajout nouveaux tests git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@708 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e --- test/raytracer/arrays.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 test/raytracer/arrays.h (limited to 'test/raytracer/arrays.h') diff --git a/test/raytracer/arrays.h b/test/raytracer/arrays.h new file mode 100644 index 00000000..47634f62 --- /dev/null +++ b/test/raytracer/arrays.h @@ -0,0 +1,31 @@ +/* Resizable arrays */ + +struct array { + int size; /* Number of elements in the array */ + int capacity; /* Max number of elements before resizing */ + void * data; /* Actual data -- variable sized */ +}; + +struct array * alloc_array(int eltsize, int initialsize); + +void grow_array(int eltsize, struct array * arr); + +struct array * copy_array(int eltsize, struct array * arr, int extrasize); + +#define new_array(ty,sz) alloc_array(sizeof(ty), sz) + +#define data_array(ty,arr) ((ty *) (arr)->data) + +#define get_array(ty,arr,idx) (data_array(ty,arr)[idx]) + +#define get_array_large(dst,ty,arr,idx) \ + ASSIGN(dst, data_array(ty,arr)[idx]) + +#define set_array(ty,arr,idx,newval) (data_array(ty,arr)[idx] = (newval)) + +#define set_array_large(ty,arr,idx,newval) \ + ASSIGN(data_array(ty,arr)[idx], newval) + +#define extend_array(ty,arr) \ + if ((arr)->size >= (arr)->capacity) grow_array(sizeof(ty), (arr)); \ + (arr)->size++ -- cgit