Home | History | Annotate | Line # | Download | only in dist
      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