1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
/*
* Copyright 2011 Sven Verdoolaege
* Copyright 2012-2013 Ecole Normale Superieure
*
* Use of this software is governed by the MIT license
*
* Written by Sven Verdoolaege,
* Ecole Normale Superieure, 45 rue d’Ulm, 75230 Paris, France
*/
#include <isl_multi_macro.h>
/* Compute the gist of the parameter domain "dom1" with respect to "dom2".
*
* Since "dom2" may not be a parameter domain, explicitly convert it
* to a parameter domain first.
*/
static __isl_give DOM *FN(MULTI(BASE),domain_gist_params)(DOM *dom1,
__isl_take DOM *dom2)
{
isl_set *params;
params = FN(DOM,params)(dom2);
dom1 = FN(DOM,gist_params)(dom1, params);
return dom1;
}
/* Compute the gist of "multi" with respect to the domain constraints
* of "context".
*/
__isl_give MULTI(BASE) *FN(MULTI(BASE),gist)(__isl_take MULTI(BASE) *multi,
__isl_take DOM *context)
{
if (FN(MULTI(BASE),check_compatible_domain)(multi, context) < 0)
context = FN(DOM,free)(context);
return FN(FN(MULTI(BASE),apply),DOMBASE)(multi, context, &FN(EL,gist),
&FN(DOM,gist),
&FN(MULTI(BASE),domain_gist_params));
}
/* Compute the gist of "multi" with respect to the parameter constraints
* of "context".
*/
__isl_give MULTI(BASE) *FN(MULTI(BASE),gist_params)(
__isl_take MULTI(BASE) *multi, __isl_take isl_set *context)
{
return FN(MULTI(BASE),apply_set)(multi, context, &FN(EL,gist_params),
&FN(DOM,gist_params), &FN(DOM,gist_params));
}
|