summaryrefslogtreecommitdiff
path: root/test/raytracer/arrays.c
diff options
context:
space:
mode:
authorGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2008-08-09 08:06:33 +0000
committerGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2008-08-09 08:06:33 +0000
commit285f5bec5bb03d4e825e5d866e94008088dd6155 (patch)
tree9df69ded9ed4f4049e0b3887fdd99fcdf3b1746f /test/raytracer/arrays.c
parenta83f0c1710cc5143dd885e84c94e14f7d3216f93 (diff)
Ajout nouveaux tests
git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@708 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'test/raytracer/arrays.c')
-rw-r--r--test/raytracer/arrays.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/test/raytracer/arrays.c b/test/raytracer/arrays.c
new file mode 100644
index 0000000..43508ee
--- /dev/null
+++ b/test/raytracer/arrays.c
@@ -0,0 +1,30 @@
+#include "config.h"
+#include "arrays.h"
+
+struct array * alloc_array(int eltsize, int initialsize)
+{
+ struct array * a = arena_alloc(sizeof(struct array));
+ a->size = 0;
+ a->capacity = initialsize;
+ a->data = arena_alloc(eltsize * initialsize);
+ return a;
+}
+
+void grow_array(int eltsize, struct array * arr)
+{
+ void * newdata = arena_alloc(arr->capacity * 2 * eltsize);
+ memcpy(newdata, arr->data, arr->size * eltsize);
+ arr->data = newdata;
+ arr->capacity *= 2;
+}
+
+struct array * copy_array(int eltsize, struct array * arr, int extrasize)
+{
+ struct array * a = arena_alloc(sizeof(struct array));
+ a->size = arr->size;
+ a->capacity = arr->size + extrasize;
+ a->data = arena_alloc(eltsize * a->capacity);
+ memcpy(a->data, arr->data, eltsize * a->size);
+ return a;
+}
+