/* * Copyright 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 #include #include #include /* The functions in this file are meant for base object types * that do not have any associated space. They are only meant to be used * in the generic isl_multi_* functions which have to deal with base objects * that do have an associated space. */ /* Drop the "n" first dimensions of type "type" at position "first". * * For a base expression without an associated space, this function * does not do anything. */ static __isl_give EL *FN(EL,drop_dims)(__isl_take EL *el, enum isl_dim_type type, unsigned first, unsigned n) { return el; } /* Return the space of "el". * * For a base expression without an associated space, * the conditions surrounding the call to this function make sure * that this function will never actually get called. We return a valid * space anyway, just in case. */ static __isl_give isl_space *FN(EL,get_space)(__isl_keep EL *el) { if (!el) return NULL; return isl_space_params_alloc(FN(EL,get_ctx)(el), 0); } /* Reset the domain space of "el" to "space". * * For a base expression without an associated space, this function * does not do anything, apart from error handling and cleaning up memory. */ static __isl_give EL *FN(EL,reset_domain_space)(__isl_take EL *el, __isl_take isl_space *space) { if (!space) return FN(EL,free)(el); isl_space_free(space); return el; } /* Align the parameters of "el" to those of "space". * * For a base expression without an associated space, this function * does not do anything, apart from error handling and cleaning up memory. * Note that the conditions surrounding the call to this function make sure * that this function will never actually get called. */ static __isl_give EL *FN(EL,align_params)(__isl_take EL *el, __isl_take isl_space *space) { if (!space) return FN(EL,free)(el); isl_space_free(space); return el; } /* Reorder the dimensions of the domain of "el" according * to the given reordering. * * For a base expression without an associated space, this function * does not do anything, apart from error handling and cleaning up memory. */ static __isl_give EL *FN(EL,realign_domain)(__isl_take EL *el, __isl_take isl_reordering *r) { if (!r) return FN(EL,free)(el); isl_reordering_free(r); return el; } /* Do the parameters of "el" match those of "space"? * * For a base expression without an associated space, this function * simply returns true, except if "el" or "space" are NULL. */ static isl_bool FN(EL,matching_params)(__isl_keep EL *el, __isl_keep isl_space *space) { if (!el || !space) return isl_bool_error; return isl_bool_true; } /* Check that the domain space of "el" matches "space". * * For a base expression without an associated space, this function * simply returns isl_stat_ok, except if "el" or "space" are NULL. */ static isl_stat FN(EL,check_match_domain_space)(__isl_keep EL *el, __isl_keep isl_space *space) { if (!el || !space) return isl_stat_error; return isl_stat_ok; }