| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 
 | /*
 * Copyright 2011      Sven Verdoolaege
 * Copyright 2012-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 <isl/space.h>
#include <isl_multi_macro.h>
const char *FN(MULTI(BASE),get_tuple_name)(__isl_keep MULTI(BASE) *multi,
	enum isl_dim_type type)
{
	return multi ? isl_space_get_tuple_name(multi->space, type) : NULL;
}
/* Does the specified tuple have an id?
 */
isl_bool FN(MULTI(BASE),has_tuple_id)(__isl_keep MULTI(BASE) *multi,
	enum isl_dim_type type)
{
	if (!multi)
		return isl_bool_error;
	return isl_space_has_tuple_id(multi->space, type);
}
/* Does the (range) tuple of "multi" have an identifier?
 *
 * Technically, the implementation should use isl_dim_set if "multi"
 * lives in a set space and isl_dim_out if it lives in a map space.
 * Internally, however, it can be assumed that isl_dim_set is equal
 * to isl_dim_out.
 */
isl_bool FN(MULTI(BASE),has_range_tuple_id)(__isl_keep MULTI(BASE) *multi)
{
	return FN(MULTI(BASE),has_tuple_id)(multi, isl_dim_out);
}
/* Return the id of the specified tuple.
 */
__isl_give isl_id *FN(MULTI(BASE),get_tuple_id)(__isl_keep MULTI(BASE) *multi,
	enum isl_dim_type type)
{
	return multi ? isl_space_get_tuple_id(multi->space, type) : NULL;
}
/* Return the identifier of the (range) tuple of "multi", assuming it has one.
 *
 * Technically, the implementation should use isl_dim_set if "multi"
 * lives in a set space and isl_dim_out if it lives in a map space.
 * Internally, however, it can be assumed that isl_dim_set is equal
 * to isl_dim_out.
 */
__isl_give isl_id *FN(MULTI(BASE),get_range_tuple_id)(
	__isl_keep MULTI(BASE) *multi)
{
	return FN(MULTI(BASE),get_tuple_id)(multi, isl_dim_out);
}
__isl_give MULTI(BASE) *FN(MULTI(BASE),set_tuple_name)(
	__isl_keep MULTI(BASE) *multi, enum isl_dim_type type,
	const char *s)
{
	isl_space *space;
	multi = FN(MULTI(BASE),cow)(multi);
	if (!multi)
		return NULL;
	space = FN(MULTI(BASE),get_space)(multi);
	space = isl_space_set_tuple_name(space, type, s);
	return FN(MULTI(BASE),reset_space)(multi, space);
}
__isl_give MULTI(BASE) *FN(MULTI(BASE),set_tuple_id)(
	__isl_take MULTI(BASE) *multi, enum isl_dim_type type,
	__isl_take isl_id *id)
{
	isl_space *space;
	multi = FN(MULTI(BASE),cow)(multi);
	if (!multi)
		goto error;
	space = FN(MULTI(BASE),get_space)(multi);
	space = isl_space_set_tuple_id(space, type, id);
	return FN(MULTI(BASE),reset_space)(multi, space);
error:
	isl_id_free(id);
	return NULL;
}
/* Replace the identifier of the (range) tuple of "multi" by "id".
 *
 * Technically, the implementation should use isl_dim_set if "multi"
 * lives in a set space and isl_dim_out if it lives in a map space.
 * Internally, however, it can be assumed that isl_dim_set is equal
 * to isl_dim_out.
 */
__isl_give MULTI(BASE) *FN(MULTI(BASE),set_range_tuple_id)(
	__isl_take MULTI(BASE) *multi, __isl_take isl_id *id)
{
	return FN(MULTI(BASE),set_tuple_id)(multi, isl_dim_out, id);
}
/* Drop the id on the specified tuple.
 */
__isl_give MULTI(BASE) *FN(MULTI(BASE),reset_tuple_id)(
	__isl_take MULTI(BASE) *multi, enum isl_dim_type type)
{
	isl_space *space;
	if (!multi)
		return NULL;
	if (!FN(MULTI(BASE),has_tuple_id)(multi, type))
		return multi;
	multi = FN(MULTI(BASE),cow)(multi);
	if (!multi)
		return NULL;
	space = FN(MULTI(BASE),get_space)(multi);
	space = isl_space_reset_tuple_id(space, type);
	return FN(MULTI(BASE),reset_space)(multi, space);
}
/* Drop the identifier of the (range) tuple of "multi".
 *
 * Technically, the implementation should use isl_dim_set if "multi"
 * lives in a set space and isl_dim_out if it lives in a map space.
 * Internally, however, it can be assumed that isl_dim_set is equal
 * to isl_dim_out.
 */
__isl_give MULTI(BASE) *FN(MULTI(BASE),reset_range_tuple_id)(
	__isl_take MULTI(BASE) *multi)
{
	return FN(MULTI(BASE),reset_tuple_id)(multi, isl_dim_out);
}
 |