0cb833cb11739e9c67dc43350047afafa0228359
[platform/upstream/isl.git] / isl_blk.c
1 #include "isl_blk.h"
2
3 struct isl_blk isl_blk_empty()
4 {
5         struct isl_blk block;
6         block.size = -1;
7         block.data = NULL;
8         return block;
9 }
10
11 struct isl_blk isl_blk_alloc(struct isl_ctx *ctx, size_t n)
12 {
13         struct isl_blk block;
14
15         block.data = isl_alloc_array(ctx, isl_int, n);
16         if (!block.data)
17                 block.size = -1;
18         else {
19                 int i;
20                 block.size = n;
21                 for (i = 0; i < n; ++i)
22                         isl_int_init(block.data[i]);
23         }
24
25         return block;
26 }
27
28 struct isl_blk isl_blk_extend(struct isl_ctx *ctx, struct isl_blk block,
29                                 size_t new_n)
30 {
31         if (block.size >= new_n)
32                 return block;
33         block.data = isl_realloc_array(ctx, block.data, isl_int, new_n);
34         if (!block.data)
35                 block.size = -1;
36         else {
37                 int i;
38                 for (i = block.size; i < new_n; ++i)
39                         isl_int_init(block.data[i]);
40                 block.size = new_n;
41         }
42
43         return block;
44 }
45
46 void isl_blk_free(struct isl_ctx *ctx, struct isl_blk block)
47 {
48         int i;
49
50         for (i = 0; i < block.size; ++i)
51                 isl_int_clear(block.data[i]);
52         free(block.data);
53 }