1 1.1 mrg /* 2 1.1 mrg * Copyright 2011 Sven Verdoolaege 3 1.1 mrg * 4 1.1 mrg * Use of this software is governed by the MIT license 5 1.1 mrg * 6 1.1 mrg * Written by Sven Verdoolaege 7 1.1 mrg */ 8 1.1 mrg 9 1.1 mrg #define xFN(TYPE,NAME) TYPE ## _ ## NAME 10 1.1 mrg #define FN(TYPE,NAME) xFN(TYPE,NAME) 11 1.1 mrg 12 1.1 mrg /* Align the parameters of the two arguments of type ARG1 and ARG2 13 1.1 mrg * (if needed). 14 1.1 mrg */ 15 1.1 mrg isl_stat FN(FN(ARG1,align_params),SUFFIX)(__isl_keep ARG1 **obj1, 16 1.1 mrg __isl_keep ARG2 **obj2) 17 1.1 mrg { 18 1.1 mrg isl_space *space1, *space2; 19 1.1 mrg isl_bool equal_params; 20 1.1 mrg 21 1.1 mrg space1 = FN(ARG1,peek_space)(*obj1); 22 1.1 mrg space2 = FN(ARG2,peek_space)(*obj2); 23 1.1 mrg equal_params = isl_space_has_equal_params(space1, space2); 24 1.1 mrg if (equal_params < 0) 25 1.1 mrg goto error; 26 1.1 mrg if (equal_params) 27 1.1 mrg return isl_stat_ok; 28 1.1 mrg if (FN(ARG1,check_named_params)(*obj1) < 0 || 29 1.1 mrg FN(ARG2,check_named_params)(*obj2) < 0) 30 1.1 mrg goto error; 31 1.1 mrg *obj1 = FN(ARG1,align_params)(*obj1, FN(ARG2,get_space)(*obj2)); 32 1.1 mrg *obj2 = FN(ARG2,align_params)(*obj2, FN(ARG1,get_space)(*obj1)); 33 1.1 mrg if (!*obj1 || !*obj2) 34 1.1 mrg goto error; 35 1.1 mrg return isl_stat_ok; 36 1.1 mrg error: 37 1.1 mrg *obj1 = FN(ARG1,free)(*obj1); 38 1.1 mrg *obj2 = FN(ARG2,free)(*obj2); 39 1.1 mrg return isl_stat_error; 40 1.1 mrg } 41