isl_test_cpp17-generic.cc: work around std::optional::value issue in older macOS
[isl.git] / isl_copy_tuple_id_templ.c
blob5f32f1478f01028893405c7a2e391b739784fb0b
1 /*
2 * Copyright 2019 Cerebras Systems
4 * Use of this software is governed by the MIT license
6 * Written by Sven Verdoolaege,
7 * Cerebras Systems, 175 S San Antonio Rd, Los Altos, CA, USA
8 */
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)
17 /* Copy the identifier of tuple "src_type" in "src"
18 * to that of "dst_type" in "dst", if there is any such identifier.
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)
24 isl_bool has_id;
25 isl_id *id;
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;
33 id = isl_space_get_tuple_id(src, src_type);
34 dst = FN(TYPE,set_tuple_id)(dst, dst_type, id);
36 return dst;