1#include <stdlib.h> 2#include <cloog/cloog.h> 3 4#define ALLOC(type) (type*)malloc(sizeof(type)) 5 6CloogStride *cloog_stride_malloc() 7{ 8 CloogStride *s; 9 10 s = ALLOC(CloogStride); 11 if (!s) 12 cloog_die("memory overflow.\n"); 13 14 s->references = 1; 15 cloog_int_init(s->stride); 16 cloog_int_init(s->offset); 17 cloog_int_init(s->factor); 18 s->constraint = cloog_constraint_invalid(); 19 20 return s; 21} 22 23CloogStride *cloog_stride_alloc(cloog_int_t stride, cloog_int_t offset) 24{ 25 CloogStride *s = cloog_stride_malloc(); 26 27 cloog_int_set(s->stride, stride); 28 cloog_int_set(s->offset, offset); 29 cloog_int_set_si(s->factor, 0); 30 31 return s; 32} 33 34CloogStride *cloog_stride_alloc_from_constraint(cloog_int_t stride, 35 CloogConstraint *constraint, cloog_int_t factor) 36{ 37 CloogStride *s = cloog_stride_malloc(); 38 39 cloog_int_set(s->stride, stride); 40 cloog_int_set(s->factor, factor); 41 cloog_int_set_si(s->offset, -1); 42 s->constraint = constraint; 43 44 return s; 45} 46 47CloogStride *cloog_stride_copy(CloogStride *stride) 48{ 49 if (!stride) 50 return stride; 51 52 stride->references++; 53 return stride; 54} 55 56void cloog_stride_free(CloogStride *stride) 57{ 58 if (!stride) 59 return; 60 61 stride->references--; 62 if (stride->references > 0) 63 return; 64 65 cloog_int_clear(stride->stride); 66 cloog_int_clear(stride->offset); 67 cloog_int_clear(stride->factor); 68 cloog_constraint_release(stride->constraint); 69 free(stride); 70} 71