2 * Copyright 2010-2011 INRIA Saclay
4 * Use of this software is governed by the MIT license
6 * Written by Sven Verdoolaege, INRIA Saclay - Ile-de-France,
7 * Parc Club Orsay Universite, ZAC des vignes, 4 rue Jacques Monod,
17 #include <isl/constraint.h>
21 /* Add parameters with identifiers "ids" to "set".
23 static __isl_give isl_set
*add_params(__isl_take isl_set
*set
,
24 __isl_keep isl_id_list
*ids
)
29 n
= isl_id_list_n_id(ids
);
31 nparam
= isl_set_dim(set
, isl_dim_param
);
32 set
= isl_set_add_dims(set
, isl_dim_param
, n
);
34 for (i
= 0; i
< n
; ++i
) {
37 id
= isl_id_list_get_id(ids
, i
);
38 set
= isl_set_set_dim_id(set
, isl_dim_param
, nparam
+ i
, id
);
44 /* Equate the dimensions of "set" starting at "first" to
45 * freshly created parameters with identifiers "ids".
46 * The number of equated dimensions is equal to the number of elements in "ids".
48 static __isl_give isl_set
*parametrize(__isl_take isl_set
*set
,
49 int first
, __isl_keep isl_id_list
*ids
)
54 nparam
= isl_set_dim(set
, isl_dim_param
);
56 set
= add_params(set
, ids
);
58 n
= isl_id_list_n_id(ids
);
59 for (i
= 0; i
< n
; ++i
)
60 set
= isl_set_equate(set
, isl_dim_param
, nparam
+ i
,
61 isl_dim_set
, first
+ i
);
66 /* Given a parameter space "space", create a set of dimension "len"
67 * of which the dimensions starting at "first" are equated to
68 * freshly created parameters with identifiers "ids".
70 __isl_give isl_set
*parametrization(__isl_take isl_space
*space
,
71 int len
, int first
, __isl_keep isl_id_list
*ids
)
75 space
= isl_space_set_from_params(space
);
76 space
= isl_space_add_dims(space
, isl_dim_set
, len
);
77 set
= isl_set_universe(space
);
79 return parametrize(set
, first
, ids
);