add exported isl_multi_*_set_at as alternative name for isl_multi_*_set_*
[isl.git] / include / isl / multi.h
blob5f262d3ece85766a0dabc5d4e1527b9590b80411
1 #ifndef ISL_MULTI_H
2 #define ISL_MULTI_H
4 #include <isl/val_type.h>
5 #include <isl/space_type.h>
6 #include <isl/list.h>
7 #include <isl/set_type.h>
9 #if defined(__cplusplus)
10 extern "C" {
11 #endif
13 #define ISL_DECLARE_MULTI(BASE) \
14 isl_ctx *isl_multi_##BASE##_get_ctx( \
15 __isl_keep isl_multi_##BASE *multi); \
16 __isl_export \
17 __isl_give isl_space *isl_multi_##BASE##_get_space( \
18 __isl_keep isl_multi_##BASE *multi); \
19 __isl_give isl_space *isl_multi_##BASE##_get_domain_space( \
20 __isl_keep isl_multi_##BASE *multi); \
21 __isl_constructor \
22 __isl_give isl_multi_##BASE *isl_multi_##BASE##_from_##BASE##_list( \
23 __isl_take isl_space *space, __isl_take isl_##BASE##_list *list); \
24 __isl_give isl_multi_##BASE *isl_multi_##BASE##_copy( \
25 __isl_keep isl_multi_##BASE *multi); \
26 __isl_null isl_multi_##BASE *isl_multi_##BASE##_free( \
27 __isl_take isl_multi_##BASE *multi); \
28 __isl_export \
29 isl_bool isl_multi_##BASE##_plain_is_equal( \
30 __isl_keep isl_multi_##BASE *multi1, \
31 __isl_keep isl_multi_##BASE *multi2); \
32 __isl_give isl_multi_##BASE *isl_multi_##BASE##_reset_user( \
33 __isl_take isl_multi_##BASE *multi); \
34 __isl_export \
35 isl_size isl_multi_##BASE##_size(__isl_keep isl_multi_##BASE *multi); \
36 __isl_export \
37 __isl_give isl_##BASE *isl_multi_##BASE##_get_at( \
38 __isl_keep isl_multi_##BASE *multi, int pos); \
39 __isl_give isl_##BASE *isl_multi_##BASE##_get_##BASE( \
40 __isl_keep isl_multi_##BASE *multi, int pos); \
41 __isl_export \
42 __isl_give isl_multi_##BASE *isl_multi_##BASE##_set_at( \
43 __isl_take isl_multi_##BASE *multi, int pos, \
44 __isl_take isl_##BASE *el); \
45 __isl_give isl_multi_##BASE *isl_multi_##BASE##_set_##BASE( \
46 __isl_take isl_multi_##BASE *multi, int pos, \
47 __isl_take isl_##BASE *el); \
48 __isl_give isl_multi_##BASE *isl_multi_##BASE##_range_splice( \
49 __isl_take isl_multi_##BASE *multi1, unsigned pos, \
50 __isl_take isl_multi_##BASE *multi2); \
51 __isl_give isl_multi_##BASE *isl_multi_##BASE##_flatten_range( \
52 __isl_take isl_multi_##BASE *multi); \
53 __isl_export \
54 __isl_give isl_multi_##BASE *isl_multi_##BASE##_flat_range_product( \
55 __isl_take isl_multi_##BASE *multi1, \
56 __isl_take isl_multi_##BASE *multi2); \
57 __isl_export \
58 __isl_give isl_multi_##BASE *isl_multi_##BASE##_range_product( \
59 __isl_take isl_multi_##BASE *multi1, \
60 __isl_take isl_multi_##BASE *multi2); \
61 __isl_give isl_multi_##BASE *isl_multi_##BASE##_factor_range( \
62 __isl_take isl_multi_##BASE *multi); \
63 isl_bool isl_multi_##BASE##_range_is_wrapping( \
64 __isl_keep isl_multi_##BASE *multi); \
65 __isl_give isl_multi_##BASE *isl_multi_##BASE##_range_factor_domain( \
66 __isl_take isl_multi_##BASE *multi); \
67 __isl_give isl_multi_##BASE *isl_multi_##BASE##_range_factor_range( \
68 __isl_take isl_multi_##BASE *multi); \
69 __isl_give isl_multi_##BASE *isl_multi_##BASE##_align_params( \
70 __isl_take isl_multi_##BASE *multi, \
71 __isl_take isl_space *model); \
72 __isl_give isl_multi_##BASE *isl_multi_##BASE##_from_range( \
73 __isl_take isl_multi_##BASE *multi);
75 #define ISL_DECLARE_MULTI_CMP(BASE) \
76 int isl_multi_##BASE##_plain_cmp(__isl_keep isl_multi_##BASE *multi1, \
77 __isl_keep isl_multi_##BASE *multi2);
79 #define ISL_DECLARE_MULTI_ARITH(BASE) \
80 __isl_give isl_multi_##BASE *isl_multi_##BASE##_scale_val( \
81 __isl_take isl_multi_##BASE *multi, __isl_take isl_val *v); \
82 __isl_give isl_multi_##BASE *isl_multi_##BASE##_scale_down_val( \
83 __isl_take isl_multi_##BASE *multi, __isl_take isl_val *v); \
84 __isl_give isl_multi_##BASE *isl_multi_##BASE##_scale_multi_val( \
85 __isl_take isl_multi_##BASE *multi, \
86 __isl_take isl_multi_val *mv); \
87 __isl_give isl_multi_##BASE *isl_multi_##BASE##_scale_down_multi_val( \
88 __isl_take isl_multi_##BASE *multi, \
89 __isl_take isl_multi_val *mv); \
90 __isl_give isl_multi_##BASE *isl_multi_##BASE##_mod_multi_val( \
91 __isl_take isl_multi_##BASE *multi, \
92 __isl_take isl_multi_val *mv); \
93 __isl_export \
94 __isl_give isl_multi_##BASE *isl_multi_##BASE##_add( \
95 __isl_take isl_multi_##BASE *multi1, \
96 __isl_take isl_multi_##BASE *multi2); \
97 __isl_export \
98 __isl_give isl_multi_##BASE *isl_multi_##BASE##_sub( \
99 __isl_take isl_multi_##BASE *multi1, \
100 __isl_take isl_multi_##BASE *multi2); \
101 __isl_export \
102 __isl_give isl_multi_##BASE *isl_multi_##BASE##_neg( \
103 __isl_take isl_multi_##BASE *multi);
105 #define ISL_DECLARE_MULTI_ZERO(BASE) \
106 __isl_export \
107 __isl_give isl_multi_##BASE *isl_multi_##BASE##_zero( \
108 __isl_take isl_space *space);
110 #define ISL_DECLARE_MULTI_NAN(BASE) \
111 isl_bool isl_multi_##BASE##_involves_nan( \
112 __isl_keep isl_multi_##BASE *multi);
114 #define ISL_DECLARE_MULTI_DROP_DIMS(BASE) \
115 isl_size isl_multi_##BASE##_dim(__isl_keep isl_multi_##BASE *multi, \
116 enum isl_dim_type type); \
117 __isl_give isl_multi_##BASE *isl_multi_##BASE##_drop_dims( \
118 __isl_take isl_multi_##BASE *multi, enum isl_dim_type type, \
119 unsigned first, unsigned n);
120 #define ISL_DECLARE_MULTI_DIMS(BASE) \
121 ISL_DECLARE_MULTI_DROP_DIMS(BASE) \
122 isl_bool isl_multi_##BASE##_involves_dims( \
123 __isl_keep isl_multi_##BASE *multi, enum isl_dim_type type, \
124 unsigned first, unsigned n); \
125 __isl_give isl_multi_##BASE *isl_multi_##BASE##_insert_dims( \
126 __isl_take isl_multi_##BASE *multi, enum isl_dim_type type, \
127 unsigned first, unsigned n); \
128 __isl_give isl_multi_##BASE *isl_multi_##BASE##_add_dims( \
129 __isl_take isl_multi_##BASE *multi, enum isl_dim_type type, \
130 unsigned n); \
131 __isl_give isl_multi_##BASE * \
132 isl_multi_##BASE##_project_domain_on_params( \
133 __isl_take isl_multi_##BASE *multi);
135 #define ISL_DECLARE_MULTI_DIM_ID(BASE) \
136 int isl_multi_##BASE##_find_dim_by_name( \
137 __isl_keep isl_multi_##BASE *multi, \
138 enum isl_dim_type type, const char *name); \
139 int isl_multi_##BASE##_find_dim_by_id( \
140 __isl_keep isl_multi_##BASE *multi, enum isl_dim_type type, \
141 __isl_keep isl_id *id); \
142 __isl_give isl_id *isl_multi_##BASE##_get_dim_id( \
143 __isl_keep isl_multi_##BASE *multi, \
144 enum isl_dim_type type, unsigned pos); \
145 __isl_give isl_multi_##BASE *isl_multi_##BASE##_set_dim_name( \
146 __isl_take isl_multi_##BASE *multi, \
147 enum isl_dim_type type, unsigned pos, const char *s); \
148 __isl_give isl_multi_##BASE *isl_multi_##BASE##_set_dim_id( \
149 __isl_take isl_multi_##BASE *multi, \
150 enum isl_dim_type type, unsigned pos, __isl_take isl_id *id);
152 #define ISL_DECLARE_MULTI_TUPLE_ID(BASE) \
153 const char *isl_multi_##BASE##_get_tuple_name( \
154 __isl_keep isl_multi_##BASE *multi, enum isl_dim_type type); \
155 isl_bool isl_multi_##BASE##_has_tuple_id( \
156 __isl_keep isl_multi_##BASE *multi, enum isl_dim_type type); \
157 __isl_give isl_id *isl_multi_##BASE##_get_tuple_id( \
158 __isl_keep isl_multi_##BASE *multi, enum isl_dim_type type); \
159 __isl_give isl_multi_##BASE *isl_multi_##BASE##_set_tuple_name( \
160 __isl_take isl_multi_##BASE *multi, \
161 enum isl_dim_type type, const char *s); \
162 __isl_give isl_multi_##BASE *isl_multi_##BASE##_set_tuple_id( \
163 __isl_take isl_multi_##BASE *multi, \
164 enum isl_dim_type type, __isl_take isl_id *id); \
165 __isl_give isl_multi_##BASE *isl_multi_##BASE##_reset_tuple_id( \
166 __isl_take isl_multi_##BASE *multi, enum isl_dim_type type);
168 #define ISL_DECLARE_MULTI_WITH_DOMAIN(BASE) \
169 __isl_export \
170 __isl_give isl_multi_##BASE *isl_multi_##BASE##_product( \
171 __isl_take isl_multi_##BASE *multi1, \
172 __isl_take isl_multi_##BASE *multi2); \
173 __isl_give isl_multi_##BASE *isl_multi_##BASE##_splice( \
174 __isl_take isl_multi_##BASE *multi1, unsigned in_pos, \
175 unsigned out_pos, __isl_take isl_multi_##BASE *multi2);
177 #define ISL_DECLARE_MULTI_PARAM(BASE) \
178 __isl_overload \
179 isl_bool isl_multi_##BASE##_involves_param_id( \
180 __isl_keep isl_multi_##BASE *multi, __isl_keep isl_id *id); \
181 __isl_overload \
182 isl_bool isl_multi_##BASE##_involves_param_id_list( \
183 __isl_keep isl_multi_##BASE *multi, \
184 __isl_keep isl_id_list *list);
186 #if defined(__cplusplus)
188 #endif
190 #endif