2 * Copyright 2017 Sven Verdoolaege
4 * Use of this software is governed by the MIT license
6 * Written by Sven Verdoolaege.
9 /* Transform the explicit domain of "multi" by applying "fn_domain" or
10 * "fn_params" to it with extra argument "domain".
11 * In particular, if the explicit domain is a parameter set,
12 * then apply "fn_params". Otherwise, apply "fn_domain".
14 * The parameters of "multi" and "domain" are assumed to have been aligned.
16 static __isl_give
MULTI(BASE
) *FN(FN(MULTI(BASE
),apply_domain
),APPLY_DOMBASE
)(
17 __isl_take
MULTI(BASE
) *multi
, __isl_take APPLY_DOM
*domain
,
18 __isl_give DOM
*(*fn_domain
)(DOM
*domain
, __isl_take APPLY_DOM
*set
),
19 __isl_give DOM
*(*fn_params
)(DOM
*domain
, __isl_take APPLY_DOM
*set
))
24 multi_dom
= FN(MULTI(BASE
),get_explicit_domain
)(multi
);
25 is_params
= FN(DOM
,is_params
)(multi_dom
);
27 FN(APPLY_DOM
,free
)(domain
);
28 multi_dom
= FN(DOM
,free
)(multi_dom
);
29 } else if (!is_params
) {
30 multi_dom
= fn_domain(multi_dom
, domain
);
32 multi_dom
= fn_params(multi_dom
, domain
);
34 multi
= FN(MULTI(BASE
),set_explicit_domain
)(multi
, multi_dom
);
38 #include <isl_multi_apply_templ.c>