2 * Copyright 2010 INRIA Saclay
3 * Copyright 2014 Ecole Normale Superieure
4 * Copyright 2014 INRIA Rocquencourt
6 * Use of this software is governed by the MIT license
8 * Written by Sven Verdoolaege, INRIA Saclay - Ile-de-France,
9 * Parc Club Orsay Universite, ZAC des vignes, 4 rue Jacques Monod,
11 * and Ecole Normale Superieure, 45 rue d'Ulm, 75230 Paris, France
12 * and Inria Paris - Rocquencourt, Domaine de Voluceau - Rocquencourt,
13 * B.P. 105 - 78153 Le Chesnay, France
19 #include <isl/polynomial.h>
20 #include <isl/schedule.h>
23 static void *isl_obj_val_copy(void *v
)
25 return isl_val_copy((isl_val
*)v
);
28 static void isl_obj_val_free(void *v
)
30 isl_val_free((isl_val
*)v
);
33 static __isl_give isl_printer
*isl_obj_val_print(__isl_take isl_printer
*p
,
36 return isl_printer_print_val(p
, (isl_val
*)v
);
39 static void *isl_obj_val_add(void *v1
, void *v2
)
41 return isl_val_add((isl_val
*) v1
, (isl_val
*) v2
);
44 struct isl_obj_vtable isl_obj_val_vtable
= {
51 static void *isl_obj_map_copy(void *v
)
53 return isl_map_copy((struct isl_map
*)v
);
56 static void isl_obj_map_free(void *v
)
58 isl_map_free((struct isl_map
*)v
);
61 static __isl_give isl_printer
*isl_obj_map_print(__isl_take isl_printer
*p
,
64 return isl_printer_print_map(p
, (struct isl_map
*)v
);
67 static void *isl_obj_map_add(void *v1
, void *v2
)
69 return isl_map_union((struct isl_map
*)v1
, (struct isl_map
*)v2
);
72 struct isl_obj_vtable isl_obj_map_vtable
= {
79 static void *isl_obj_union_map_copy(void *v
)
81 return isl_union_map_copy((isl_union_map
*)v
);
84 static void isl_obj_union_map_free(void *v
)
86 isl_union_map_free((isl_union_map
*)v
);
89 static __isl_give isl_printer
*isl_obj_union_map_print(__isl_take isl_printer
*p
,
92 return isl_printer_print_union_map(p
, (isl_union_map
*)v
);
95 static void *isl_obj_union_map_add(void *v1
, void *v2
)
97 return isl_union_map_union((isl_union_map
*)v1
, (isl_union_map
*)v2
);
100 struct isl_obj_vtable isl_obj_union_map_vtable
= {
101 isl_obj_union_map_copy
,
102 isl_obj_union_map_add
,
103 isl_obj_union_map_print
,
104 isl_obj_union_map_free
107 static void *isl_obj_set_copy(void *v
)
109 return isl_set_copy((struct isl_set
*)v
);
112 static void isl_obj_set_free(void *v
)
114 isl_set_free((struct isl_set
*)v
);
117 static __isl_give isl_printer
*isl_obj_set_print(__isl_take isl_printer
*p
,
120 return isl_printer_print_set(p
, (struct isl_set
*)v
);
123 static void *isl_obj_set_add(void *v1
, void *v2
)
125 return isl_set_union((struct isl_set
*)v1
, (struct isl_set
*)v2
);
128 struct isl_obj_vtable isl_obj_set_vtable
= {
135 static void *isl_obj_union_set_copy(void *v
)
137 return isl_union_set_copy((isl_union_set
*)v
);
140 static void isl_obj_union_set_free(void *v
)
142 isl_union_set_free((isl_union_set
*)v
);
145 static __isl_give isl_printer
*isl_obj_union_set_print(__isl_take isl_printer
*p
,
148 return isl_printer_print_union_set(p
, (isl_union_set
*)v
);
151 static void *isl_obj_union_set_add(void *v1
, void *v2
)
153 return isl_union_set_union((isl_union_set
*)v1
, (isl_union_set
*)v2
);
156 struct isl_obj_vtable isl_obj_union_set_vtable
= {
157 isl_obj_union_set_copy
,
158 isl_obj_union_set_add
,
159 isl_obj_union_set_print
,
160 isl_obj_union_set_free
163 static void *isl_obj_pw_multi_aff_copy(void *v
)
165 return isl_pw_multi_aff_copy((isl_pw_multi_aff
*) v
);
168 static void isl_obj_pw_multi_aff_free(void *v
)
170 isl_pw_multi_aff_free((isl_pw_multi_aff
*) v
);
173 static __isl_give isl_printer
*isl_obj_pw_multi_aff_print(
174 __isl_take isl_printer
*p
, void *v
)
176 return isl_printer_print_pw_multi_aff(p
, (isl_pw_multi_aff
*) v
);
179 static void *isl_obj_pw_multi_aff_add(void *v1
, void *v2
)
181 return isl_pw_multi_aff_add((isl_pw_multi_aff
*) v1
,
182 (isl_pw_multi_aff
*) v2
);
185 struct isl_obj_vtable isl_obj_pw_multi_aff_vtable
= {
186 isl_obj_pw_multi_aff_copy
,
187 isl_obj_pw_multi_aff_add
,
188 isl_obj_pw_multi_aff_print
,
189 isl_obj_pw_multi_aff_free
192 static void *isl_obj_none_copy(void *v
)
197 static void isl_obj_none_free(void *v
)
201 static __isl_give isl_printer
*isl_obj_none_print(__isl_take isl_printer
*p
,
207 static void *isl_obj_none_add(void *v1
, void *v2
)
212 struct isl_obj_vtable isl_obj_none_vtable
= {
219 static void *isl_obj_pw_qp_copy(void *v
)
221 return isl_pw_qpolynomial_copy((struct isl_pw_qpolynomial
*)v
);
224 static void isl_obj_pw_qp_free(void *v
)
226 isl_pw_qpolynomial_free((struct isl_pw_qpolynomial
*)v
);
229 static __isl_give isl_printer
*isl_obj_pw_qp_print(__isl_take isl_printer
*p
,
232 return isl_printer_print_pw_qpolynomial(p
,
233 (struct isl_pw_qpolynomial
*)v
);
236 static void *isl_obj_pw_qp_add(void *v1
, void *v2
)
238 return isl_pw_qpolynomial_add((struct isl_pw_qpolynomial
*)v1
,
239 (struct isl_pw_qpolynomial
*)v2
);
242 struct isl_obj_vtable isl_obj_pw_qpolynomial_vtable
= {
249 static void *isl_obj_union_pw_qp_copy(void *v
)
251 return isl_union_pw_qpolynomial_copy((struct isl_union_pw_qpolynomial
*)v
);
254 static void isl_obj_union_pw_qp_free(void *v
)
256 isl_union_pw_qpolynomial_free((struct isl_union_pw_qpolynomial
*)v
);
259 static __isl_give isl_printer
*isl_obj_union_pw_qp_print(
260 __isl_take isl_printer
*p
, void *v
)
262 return isl_printer_print_union_pw_qpolynomial(p
,
263 (struct isl_union_pw_qpolynomial
*)v
);
266 static void *isl_obj_union_pw_qp_add(void *v1
, void *v2
)
268 return isl_union_pw_qpolynomial_add(
269 (struct isl_union_pw_qpolynomial
*)v1
,
270 (struct isl_union_pw_qpolynomial
*)v2
);
273 struct isl_obj_vtable isl_obj_union_pw_qpolynomial_vtable
= {
274 isl_obj_union_pw_qp_copy
,
275 isl_obj_union_pw_qp_add
,
276 isl_obj_union_pw_qp_print
,
277 isl_obj_union_pw_qp_free
280 static void *isl_obj_pw_qpf_copy(void *v
)
282 return isl_pw_qpolynomial_fold_copy((struct isl_pw_qpolynomial_fold
*)v
);
285 static void isl_obj_pw_qpf_free(void *v
)
287 isl_pw_qpolynomial_fold_free((struct isl_pw_qpolynomial_fold
*)v
);
290 static __isl_give isl_printer
*isl_obj_pw_qpf_print(__isl_take isl_printer
*p
,
293 return isl_printer_print_pw_qpolynomial_fold(p
,
294 (struct isl_pw_qpolynomial_fold
*)v
);
297 static void *isl_obj_pw_qpf_add(void *v1
, void *v2
)
299 return isl_pw_qpolynomial_fold_fold((struct isl_pw_qpolynomial_fold
*)v1
,
300 (struct isl_pw_qpolynomial_fold
*)v2
);
303 struct isl_obj_vtable isl_obj_pw_qpolynomial_fold_vtable
= {
306 isl_obj_pw_qpf_print
,
310 static void *isl_obj_union_pw_qpf_copy(void *v
)
312 return isl_union_pw_qpolynomial_fold_copy((struct isl_union_pw_qpolynomial_fold
*)v
);
315 static void isl_obj_union_pw_qpf_free(void *v
)
317 isl_union_pw_qpolynomial_fold_free((struct isl_union_pw_qpolynomial_fold
*)v
);
320 static __isl_give isl_printer
*isl_obj_union_pw_qpf_print(
321 __isl_take isl_printer
*p
, void *v
)
323 return isl_printer_print_union_pw_qpolynomial_fold(p
,
324 (struct isl_union_pw_qpolynomial_fold
*)v
);
327 static void *isl_obj_union_pw_qpf_add(void *v1
, void *v2
)
329 return isl_union_pw_qpolynomial_fold_fold(
330 (struct isl_union_pw_qpolynomial_fold
*)v1
,
331 (struct isl_union_pw_qpolynomial_fold
*)v2
);
334 struct isl_obj_vtable isl_obj_union_pw_qpolynomial_fold_vtable
= {
335 isl_obj_union_pw_qpf_copy
,
336 isl_obj_union_pw_qpf_add
,
337 isl_obj_union_pw_qpf_print
,
338 isl_obj_union_pw_qpf_free
341 static void *isl_obj_schedule_copy(void *v
)
343 return isl_schedule_copy((isl_schedule
*) v
);
346 static void isl_obj_schedule_free(void *v
)
348 isl_schedule_free((isl_schedule
*) v
);
351 static __isl_give isl_printer
*isl_obj_schedule_print(
352 __isl_take isl_printer
*p
, void *v
)
354 return isl_printer_print_schedule(p
, (isl_schedule
*) v
);
357 struct isl_obj_vtable isl_obj_schedule_vtable
= {
358 isl_obj_schedule_copy
,
360 isl_obj_schedule_print
,
361 isl_obj_schedule_free