1/* 2 * Copyright 2019 Cerebras Systems 3 * 4 * Use of this software is governed by the MIT license 5 * 6 * Written by Sven Verdoolaege, 7 * Cerebras Systems, 175 S San Antonio Rd, Los Altos, CA, USA 8 */ 9 10#define xCAT(A,B) A ## B 11#define CAT(A,B) xCAT(A,B) 12#undef TYPE 13#define TYPE CAT(isl_,BASE) 14#define xBFN(BASE,NAME) isl_ ## BASE ## _ ## NAME 15#define BFN(BASE,NAME) xBFN(BASE,NAME) 16 17/* Copy the identifier of tuple "src_type" in "src" 18 * to that of "dst_type" in "dst", if there is any such identifier. 19 */ 20__isl_give TYPE *BFN(BASE,copy_tuple_id)(__isl_take TYPE *dst, 21 enum isl_dim_type dst_type, __isl_keep isl_space *src, 22 enum isl_dim_type src_type) 23{ 24 isl_bool has_id; 25 isl_id *id; 26 27 has_id = isl_space_has_tuple_id(src, src_type); 28 if (has_id < 0) 29 return FN(TYPE,free)(dst); 30 if (!has_id) 31 return dst; 32 33 id = isl_space_get_tuple_id(src, src_type); 34 dst = FN(TYPE,set_tuple_id)(dst, dst_type, id); 35 36 return dst; 37} 38