blob: d7358a08f3d6c21b871764de0de5d9d0d93cab51 [file] [log] [blame]
#include <stdlib.h>
#include <cloog/cloog.h>
#define ALLOC(type) (type*)malloc(sizeof(type))
CloogStride *cloog_stride_malloc()
{
CloogStride *s;
s = ALLOC(CloogStride);
if (!s)
cloog_die("memory overflow.\n");
s->references = 1;
cloog_int_init(s->stride);
cloog_int_init(s->offset);
cloog_int_init(s->factor);
s->constraint = cloog_constraint_invalid();
return s;
}
CloogStride *cloog_stride_alloc(cloog_int_t stride, cloog_int_t offset)
{
CloogStride *s = cloog_stride_malloc();
cloog_int_set(s->stride, stride);
cloog_int_set(s->offset, offset);
cloog_int_set_si(s->factor, 0);
return s;
}
CloogStride *cloog_stride_alloc_from_constraint(cloog_int_t stride,
CloogConstraint *constraint, cloog_int_t factor)
{
CloogStride *s = cloog_stride_malloc();
cloog_int_set(s->stride, stride);
cloog_int_set(s->factor, factor);
cloog_int_set_si(s->offset, -1);
s->constraint = constraint;
return s;
}
CloogStride *cloog_stride_copy(CloogStride *stride)
{
if (!stride)
return stride;
stride->references++;
return stride;
}
void cloog_stride_free(CloogStride *stride)
{
if (!stride)
return;
stride->references--;
if (stride->references > 0)
return;
cloog_int_clear(stride->stride);
cloog_int_clear(stride->offset);
cloog_int_clear(stride->factor);
cloog_constraint_release(stride->constraint);
free(stride);
}