return 0;
continue;
}
- v = cell->vertices->c[cell->id].vertices[n - 1 - i];
+ v = cell->ids[n - 1 - i];
return vertex_is_integral(cell->vertices->v[v].vertex);
}
isl_set *dom;
nvar = isl_qpolynomial_dim(poly, isl_dim_set) - 1;
- n_vertices = cell->vertices->c[cell->id].n_vertices;
+ n_vertices = cell->n_vertices;
subs = isl_alloc_array(data->poly->dim->ctx, isl_qpolynomial *,
1 + nvar);
c = isl_qpolynomial_var(isl_dim_copy(dim_dst), isl_dim_set,
1 + nvar + i);
for (j = 0; j < nvar; ++j) {
- int k = cell->vertices->c[cell->id].vertices[i];
+ int k = cell->ids[i];
isl_qpolynomial *v;
v = vertex_coordinate(cell->vertices->v[k].vertex, j,
isl_dim_copy(dim_param));
__isl_give isl_basic_set *isl_cell_get_domain(__isl_keep isl_cell *cell)
{
- struct isl_chamber *c;
-
- if (!cell)
- return NULL;
-
- c = &cell->vertices->c[cell->id];
-
- return isl_basic_set_copy(c->dom);
+ return cell ? isl_basic_set_copy(cell->dom) : NULL;
}
static __isl_give isl_cell *isl_cell_alloc(__isl_take isl_vertices *vertices,
__isl_take isl_basic_set *dom, int id)
{
- isl_cell *cell;
+ int i;
+ isl_cell *cell = NULL;
if (!vertices || !dom)
goto error;
- cell = isl_alloc_type(dom->ctx, isl_cell);
+ cell = isl_calloc_type(dom->ctx, isl_cell);
if (!cell)
goto error;
+ cell->n_vertices = vertices->c[id].n_vertices;
+ cell->ids = isl_alloc_array(dom->ctx, int, cell->n_vertices);
+ if (!cell->ids)
+ goto error;
+ for (i = 0; i < cell->n_vertices; ++i)
+ cell->ids[i] = vertices->c[id].vertices[i];
cell->vertices = vertices;
cell->dom = dom;
- cell->id = id;
return cell;
error:
+ isl_cell_free(cell);
isl_vertices_free(vertices);
isl_basic_set_free(dom);
return NULL;
return;
isl_vertices_free(cell->vertices);
+ free(cell->ids);
isl_basic_set_free(cell->dom);
free(cell);
}
{
int i;
isl_vertex *vertex;
- struct isl_chamber *c;
if (!cell)
return -1;
- c = &cell->vertices->c[cell->id];
-
- if (c->n_vertices == 0)
+ if (cell->n_vertices == 0)
return 0;
- for (i = 0; i < c->n_vertices; ++i) {
+ for (i = 0; i < cell->n_vertices; ++i) {
int r;
vertex = isl_vertex_alloc(isl_vertices_copy(cell->vertices),
- c->vertices[i]);
+ cell->ids[i]);
if (!vertex)
return -1;