1*5971e316Smrg /*
2*5971e316Smrg * Copyright 2010 INRIA Saclay
3*5971e316Smrg * Copyright 2014 Ecole Normale Superieure
4*5971e316Smrg * Copyright 2014 INRIA Rocquencourt
5*5971e316Smrg *
6*5971e316Smrg * Use of this software is governed by the MIT license
7*5971e316Smrg *
8*5971e316Smrg * Written by Sven Verdoolaege, INRIA Saclay - Ile-de-France,
9*5971e316Smrg * Parc Club Orsay Universite, ZAC des vignes, 4 rue Jacques Monod,
10*5971e316Smrg * 91893 Orsay, France
11*5971e316Smrg * and Ecole Normale Superieure, 45 rue d'Ulm, 75230 Paris, France
12*5971e316Smrg * and Inria Paris - Rocquencourt, Domaine de Voluceau - Rocquencourt,
13*5971e316Smrg * B.P. 105 - 78153 Le Chesnay, France
14*5971e316Smrg */
15*5971e316Smrg
16*5971e316Smrg #include <isl/val.h>
17*5971e316Smrg #include <isl/aff.h>
18*5971e316Smrg #include <isl/set.h>
19*5971e316Smrg #include <isl/map.h>
20*5971e316Smrg #include <isl/union_set.h>
21*5971e316Smrg #include <isl/union_map.h>
22*5971e316Smrg #include <isl/polynomial.h>
23*5971e316Smrg #include <isl/schedule.h>
24*5971e316Smrg #include <isl/obj.h>
25*5971e316Smrg
isl_obj_val_copy(void * v)26*5971e316Smrg static void *isl_obj_val_copy(void *v)
27*5971e316Smrg {
28*5971e316Smrg return isl_val_copy((isl_val *)v);
29*5971e316Smrg }
30*5971e316Smrg
isl_obj_val_free(void * v)31*5971e316Smrg static void isl_obj_val_free(void *v)
32*5971e316Smrg {
33*5971e316Smrg isl_val_free((isl_val *)v);
34*5971e316Smrg }
35*5971e316Smrg
isl_obj_val_print(__isl_take isl_printer * p,void * v)36*5971e316Smrg static __isl_give isl_printer *isl_obj_val_print(__isl_take isl_printer *p,
37*5971e316Smrg void *v)
38*5971e316Smrg {
39*5971e316Smrg return isl_printer_print_val(p, (isl_val *)v);
40*5971e316Smrg }
41*5971e316Smrg
isl_obj_val_add(void * v1,void * v2)42*5971e316Smrg static void *isl_obj_val_add(void *v1, void *v2)
43*5971e316Smrg {
44*5971e316Smrg return isl_val_add((isl_val *) v1, (isl_val *) v2);
45*5971e316Smrg }
46*5971e316Smrg
47*5971e316Smrg struct isl_obj_vtable isl_obj_val_vtable = {
48*5971e316Smrg isl_obj_val_copy,
49*5971e316Smrg isl_obj_val_add,
50*5971e316Smrg isl_obj_val_print,
51*5971e316Smrg isl_obj_val_free
52*5971e316Smrg };
53*5971e316Smrg
isl_obj_map_copy(void * v)54*5971e316Smrg static void *isl_obj_map_copy(void *v)
55*5971e316Smrg {
56*5971e316Smrg return isl_map_copy((struct isl_map *)v);
57*5971e316Smrg }
58*5971e316Smrg
isl_obj_map_free(void * v)59*5971e316Smrg static void isl_obj_map_free(void *v)
60*5971e316Smrg {
61*5971e316Smrg isl_map_free((struct isl_map *)v);
62*5971e316Smrg }
63*5971e316Smrg
isl_obj_map_print(__isl_take isl_printer * p,void * v)64*5971e316Smrg static __isl_give isl_printer *isl_obj_map_print(__isl_take isl_printer *p,
65*5971e316Smrg void *v)
66*5971e316Smrg {
67*5971e316Smrg return isl_printer_print_map(p, (struct isl_map *)v);
68*5971e316Smrg }
69*5971e316Smrg
isl_obj_map_add(void * v1,void * v2)70*5971e316Smrg static void *isl_obj_map_add(void *v1, void *v2)
71*5971e316Smrg {
72*5971e316Smrg return isl_map_union((struct isl_map *)v1, (struct isl_map *)v2);
73*5971e316Smrg }
74*5971e316Smrg
75*5971e316Smrg struct isl_obj_vtable isl_obj_map_vtable = {
76*5971e316Smrg isl_obj_map_copy,
77*5971e316Smrg isl_obj_map_add,
78*5971e316Smrg isl_obj_map_print,
79*5971e316Smrg isl_obj_map_free
80*5971e316Smrg };
81*5971e316Smrg
isl_obj_union_map_copy(void * v)82*5971e316Smrg static void *isl_obj_union_map_copy(void *v)
83*5971e316Smrg {
84*5971e316Smrg return isl_union_map_copy((isl_union_map *)v);
85*5971e316Smrg }
86*5971e316Smrg
isl_obj_union_map_free(void * v)87*5971e316Smrg static void isl_obj_union_map_free(void *v)
88*5971e316Smrg {
89*5971e316Smrg isl_union_map_free((isl_union_map *)v);
90*5971e316Smrg }
91*5971e316Smrg
isl_obj_union_map_print(__isl_take isl_printer * p,void * v)92*5971e316Smrg static __isl_give isl_printer *isl_obj_union_map_print(__isl_take isl_printer *p,
93*5971e316Smrg void *v)
94*5971e316Smrg {
95*5971e316Smrg return isl_printer_print_union_map(p, (isl_union_map *)v);
96*5971e316Smrg }
97*5971e316Smrg
isl_obj_union_map_add(void * v1,void * v2)98*5971e316Smrg static void *isl_obj_union_map_add(void *v1, void *v2)
99*5971e316Smrg {
100*5971e316Smrg return isl_union_map_union((isl_union_map *)v1, (isl_union_map *)v2);
101*5971e316Smrg }
102*5971e316Smrg
103*5971e316Smrg struct isl_obj_vtable isl_obj_union_map_vtable = {
104*5971e316Smrg isl_obj_union_map_copy,
105*5971e316Smrg isl_obj_union_map_add,
106*5971e316Smrg isl_obj_union_map_print,
107*5971e316Smrg isl_obj_union_map_free
108*5971e316Smrg };
109*5971e316Smrg
isl_obj_set_copy(void * v)110*5971e316Smrg static void *isl_obj_set_copy(void *v)
111*5971e316Smrg {
112*5971e316Smrg return isl_set_copy((struct isl_set *)v);
113*5971e316Smrg }
114*5971e316Smrg
isl_obj_set_free(void * v)115*5971e316Smrg static void isl_obj_set_free(void *v)
116*5971e316Smrg {
117*5971e316Smrg isl_set_free((struct isl_set *)v);
118*5971e316Smrg }
119*5971e316Smrg
isl_obj_set_print(__isl_take isl_printer * p,void * v)120*5971e316Smrg static __isl_give isl_printer *isl_obj_set_print(__isl_take isl_printer *p,
121*5971e316Smrg void *v)
122*5971e316Smrg {
123*5971e316Smrg return isl_printer_print_set(p, (struct isl_set *)v);
124*5971e316Smrg }
125*5971e316Smrg
isl_obj_set_add(void * v1,void * v2)126*5971e316Smrg static void *isl_obj_set_add(void *v1, void *v2)
127*5971e316Smrg {
128*5971e316Smrg return isl_set_union((struct isl_set *)v1, (struct isl_set *)v2);
129*5971e316Smrg }
130*5971e316Smrg
131*5971e316Smrg struct isl_obj_vtable isl_obj_set_vtable = {
132*5971e316Smrg isl_obj_set_copy,
133*5971e316Smrg isl_obj_set_add,
134*5971e316Smrg isl_obj_set_print,
135*5971e316Smrg isl_obj_set_free
136*5971e316Smrg };
137*5971e316Smrg
isl_obj_union_set_copy(void * v)138*5971e316Smrg static void *isl_obj_union_set_copy(void *v)
139*5971e316Smrg {
140*5971e316Smrg return isl_union_set_copy((isl_union_set *)v);
141*5971e316Smrg }
142*5971e316Smrg
isl_obj_union_set_free(void * v)143*5971e316Smrg static void isl_obj_union_set_free(void *v)
144*5971e316Smrg {
145*5971e316Smrg isl_union_set_free((isl_union_set *)v);
146*5971e316Smrg }
147*5971e316Smrg
isl_obj_union_set_print(__isl_take isl_printer * p,void * v)148*5971e316Smrg static __isl_give isl_printer *isl_obj_union_set_print(__isl_take isl_printer *p,
149*5971e316Smrg void *v)
150*5971e316Smrg {
151*5971e316Smrg return isl_printer_print_union_set(p, (isl_union_set *)v);
152*5971e316Smrg }
153*5971e316Smrg
isl_obj_union_set_add(void * v1,void * v2)154*5971e316Smrg static void *isl_obj_union_set_add(void *v1, void *v2)
155*5971e316Smrg {
156*5971e316Smrg return isl_union_set_union((isl_union_set *)v1, (isl_union_set *)v2);
157*5971e316Smrg }
158*5971e316Smrg
159*5971e316Smrg struct isl_obj_vtable isl_obj_union_set_vtable = {
160*5971e316Smrg isl_obj_union_set_copy,
161*5971e316Smrg isl_obj_union_set_add,
162*5971e316Smrg isl_obj_union_set_print,
163*5971e316Smrg isl_obj_union_set_free
164*5971e316Smrg };
165*5971e316Smrg
isl_obj_pw_multi_aff_copy(void * v)166*5971e316Smrg static void *isl_obj_pw_multi_aff_copy(void *v)
167*5971e316Smrg {
168*5971e316Smrg return isl_pw_multi_aff_copy((isl_pw_multi_aff *) v);
169*5971e316Smrg }
170*5971e316Smrg
isl_obj_pw_multi_aff_free(void * v)171*5971e316Smrg static void isl_obj_pw_multi_aff_free(void *v)
172*5971e316Smrg {
173*5971e316Smrg isl_pw_multi_aff_free((isl_pw_multi_aff *) v);
174*5971e316Smrg }
175*5971e316Smrg
isl_obj_pw_multi_aff_print(__isl_take isl_printer * p,void * v)176*5971e316Smrg static __isl_give isl_printer *isl_obj_pw_multi_aff_print(
177*5971e316Smrg __isl_take isl_printer *p, void *v)
178*5971e316Smrg {
179*5971e316Smrg return isl_printer_print_pw_multi_aff(p, (isl_pw_multi_aff *) v);
180*5971e316Smrg }
181*5971e316Smrg
isl_obj_pw_multi_aff_add(void * v1,void * v2)182*5971e316Smrg static void *isl_obj_pw_multi_aff_add(void *v1, void *v2)
183*5971e316Smrg {
184*5971e316Smrg return isl_pw_multi_aff_add((isl_pw_multi_aff *) v1,
185*5971e316Smrg (isl_pw_multi_aff *) v2);
186*5971e316Smrg }
187*5971e316Smrg
188*5971e316Smrg struct isl_obj_vtable isl_obj_pw_multi_aff_vtable = {
189*5971e316Smrg isl_obj_pw_multi_aff_copy,
190*5971e316Smrg isl_obj_pw_multi_aff_add,
191*5971e316Smrg isl_obj_pw_multi_aff_print,
192*5971e316Smrg isl_obj_pw_multi_aff_free
193*5971e316Smrg };
194*5971e316Smrg
isl_obj_none_copy(void * v)195*5971e316Smrg static void *isl_obj_none_copy(void *v)
196*5971e316Smrg {
197*5971e316Smrg return v;
198*5971e316Smrg }
199*5971e316Smrg
isl_obj_none_free(void * v)200*5971e316Smrg static void isl_obj_none_free(void *v)
201*5971e316Smrg {
202*5971e316Smrg }
203*5971e316Smrg
isl_obj_none_print(__isl_take isl_printer * p,void * v)204*5971e316Smrg static __isl_give isl_printer *isl_obj_none_print(__isl_take isl_printer *p,
205*5971e316Smrg void *v)
206*5971e316Smrg {
207*5971e316Smrg return p;
208*5971e316Smrg }
209*5971e316Smrg
isl_obj_none_add(void * v1,void * v2)210*5971e316Smrg static void *isl_obj_none_add(void *v1, void *v2)
211*5971e316Smrg {
212*5971e316Smrg return NULL;
213*5971e316Smrg }
214*5971e316Smrg
215*5971e316Smrg struct isl_obj_vtable isl_obj_none_vtable = {
216*5971e316Smrg isl_obj_none_copy,
217*5971e316Smrg isl_obj_none_add,
218*5971e316Smrg isl_obj_none_print,
219*5971e316Smrg isl_obj_none_free
220*5971e316Smrg };
221*5971e316Smrg
isl_obj_pw_qp_copy(void * v)222*5971e316Smrg static void *isl_obj_pw_qp_copy(void *v)
223*5971e316Smrg {
224*5971e316Smrg return isl_pw_qpolynomial_copy((struct isl_pw_qpolynomial *)v);
225*5971e316Smrg }
226*5971e316Smrg
isl_obj_pw_qp_free(void * v)227*5971e316Smrg static void isl_obj_pw_qp_free(void *v)
228*5971e316Smrg {
229*5971e316Smrg isl_pw_qpolynomial_free((struct isl_pw_qpolynomial *)v);
230*5971e316Smrg }
231*5971e316Smrg
isl_obj_pw_qp_print(__isl_take isl_printer * p,void * v)232*5971e316Smrg static __isl_give isl_printer *isl_obj_pw_qp_print(__isl_take isl_printer *p,
233*5971e316Smrg void *v)
234*5971e316Smrg {
235*5971e316Smrg return isl_printer_print_pw_qpolynomial(p,
236*5971e316Smrg (struct isl_pw_qpolynomial *)v);
237*5971e316Smrg }
238*5971e316Smrg
isl_obj_pw_qp_add(void * v1,void * v2)239*5971e316Smrg static void *isl_obj_pw_qp_add(void *v1, void *v2)
240*5971e316Smrg {
241*5971e316Smrg return isl_pw_qpolynomial_add((struct isl_pw_qpolynomial *)v1,
242*5971e316Smrg (struct isl_pw_qpolynomial *)v2);
243*5971e316Smrg }
244*5971e316Smrg
245*5971e316Smrg struct isl_obj_vtable isl_obj_pw_qpolynomial_vtable = {
246*5971e316Smrg isl_obj_pw_qp_copy,
247*5971e316Smrg isl_obj_pw_qp_add,
248*5971e316Smrg isl_obj_pw_qp_print,
249*5971e316Smrg isl_obj_pw_qp_free
250*5971e316Smrg };
251*5971e316Smrg
isl_obj_union_pw_qp_copy(void * v)252*5971e316Smrg static void *isl_obj_union_pw_qp_copy(void *v)
253*5971e316Smrg {
254*5971e316Smrg return isl_union_pw_qpolynomial_copy((struct isl_union_pw_qpolynomial *)v);
255*5971e316Smrg }
256*5971e316Smrg
isl_obj_union_pw_qp_free(void * v)257*5971e316Smrg static void isl_obj_union_pw_qp_free(void *v)
258*5971e316Smrg {
259*5971e316Smrg isl_union_pw_qpolynomial_free((struct isl_union_pw_qpolynomial *)v);
260*5971e316Smrg }
261*5971e316Smrg
isl_obj_union_pw_qp_print(__isl_take isl_printer * p,void * v)262*5971e316Smrg static __isl_give isl_printer *isl_obj_union_pw_qp_print(
263*5971e316Smrg __isl_take isl_printer *p, void *v)
264*5971e316Smrg {
265*5971e316Smrg return isl_printer_print_union_pw_qpolynomial(p,
266*5971e316Smrg (struct isl_union_pw_qpolynomial *)v);
267*5971e316Smrg }
268*5971e316Smrg
isl_obj_union_pw_qp_add(void * v1,void * v2)269*5971e316Smrg static void *isl_obj_union_pw_qp_add(void *v1, void *v2)
270*5971e316Smrg {
271*5971e316Smrg return isl_union_pw_qpolynomial_add(
272*5971e316Smrg (struct isl_union_pw_qpolynomial *)v1,
273*5971e316Smrg (struct isl_union_pw_qpolynomial *)v2);
274*5971e316Smrg }
275*5971e316Smrg
276*5971e316Smrg struct isl_obj_vtable isl_obj_union_pw_qpolynomial_vtable = {
277*5971e316Smrg isl_obj_union_pw_qp_copy,
278*5971e316Smrg isl_obj_union_pw_qp_add,
279*5971e316Smrg isl_obj_union_pw_qp_print,
280*5971e316Smrg isl_obj_union_pw_qp_free
281*5971e316Smrg };
282*5971e316Smrg
isl_obj_pw_qpf_copy(void * v)283*5971e316Smrg static void *isl_obj_pw_qpf_copy(void *v)
284*5971e316Smrg {
285*5971e316Smrg return isl_pw_qpolynomial_fold_copy((struct isl_pw_qpolynomial_fold *)v);
286*5971e316Smrg }
287*5971e316Smrg
isl_obj_pw_qpf_free(void * v)288*5971e316Smrg static void isl_obj_pw_qpf_free(void *v)
289*5971e316Smrg {
290*5971e316Smrg isl_pw_qpolynomial_fold_free((struct isl_pw_qpolynomial_fold *)v);
291*5971e316Smrg }
292*5971e316Smrg
isl_obj_pw_qpf_print(__isl_take isl_printer * p,void * v)293*5971e316Smrg static __isl_give isl_printer *isl_obj_pw_qpf_print(__isl_take isl_printer *p,
294*5971e316Smrg void *v)
295*5971e316Smrg {
296*5971e316Smrg return isl_printer_print_pw_qpolynomial_fold(p,
297*5971e316Smrg (struct isl_pw_qpolynomial_fold *)v);
298*5971e316Smrg }
299*5971e316Smrg
isl_obj_pw_qpf_add(void * v1,void * v2)300*5971e316Smrg static void *isl_obj_pw_qpf_add(void *v1, void *v2)
301*5971e316Smrg {
302*5971e316Smrg return isl_pw_qpolynomial_fold_fold((struct isl_pw_qpolynomial_fold *)v1,
303*5971e316Smrg (struct isl_pw_qpolynomial_fold *)v2);
304*5971e316Smrg }
305*5971e316Smrg
306*5971e316Smrg struct isl_obj_vtable isl_obj_pw_qpolynomial_fold_vtable = {
307*5971e316Smrg isl_obj_pw_qpf_copy,
308*5971e316Smrg isl_obj_pw_qpf_add,
309*5971e316Smrg isl_obj_pw_qpf_print,
310*5971e316Smrg isl_obj_pw_qpf_free
311*5971e316Smrg };
312*5971e316Smrg
isl_obj_union_pw_qpf_copy(void * v)313*5971e316Smrg static void *isl_obj_union_pw_qpf_copy(void *v)
314*5971e316Smrg {
315*5971e316Smrg return isl_union_pw_qpolynomial_fold_copy((struct isl_union_pw_qpolynomial_fold *)v);
316*5971e316Smrg }
317*5971e316Smrg
isl_obj_union_pw_qpf_free(void * v)318*5971e316Smrg static void isl_obj_union_pw_qpf_free(void *v)
319*5971e316Smrg {
320*5971e316Smrg isl_union_pw_qpolynomial_fold_free((struct isl_union_pw_qpolynomial_fold *)v);
321*5971e316Smrg }
322*5971e316Smrg
isl_obj_union_pw_qpf_print(__isl_take isl_printer * p,void * v)323*5971e316Smrg static __isl_give isl_printer *isl_obj_union_pw_qpf_print(
324*5971e316Smrg __isl_take isl_printer *p, void *v)
325*5971e316Smrg {
326*5971e316Smrg return isl_printer_print_union_pw_qpolynomial_fold(p,
327*5971e316Smrg (struct isl_union_pw_qpolynomial_fold *)v);
328*5971e316Smrg }
329*5971e316Smrg
isl_obj_union_pw_qpf_add(void * v1,void * v2)330*5971e316Smrg static void *isl_obj_union_pw_qpf_add(void *v1, void *v2)
331*5971e316Smrg {
332*5971e316Smrg return isl_union_pw_qpolynomial_fold_fold(
333*5971e316Smrg (struct isl_union_pw_qpolynomial_fold *)v1,
334*5971e316Smrg (struct isl_union_pw_qpolynomial_fold *)v2);
335*5971e316Smrg }
336*5971e316Smrg
337*5971e316Smrg struct isl_obj_vtable isl_obj_union_pw_qpolynomial_fold_vtable = {
338*5971e316Smrg isl_obj_union_pw_qpf_copy,
339*5971e316Smrg isl_obj_union_pw_qpf_add,
340*5971e316Smrg isl_obj_union_pw_qpf_print,
341*5971e316Smrg isl_obj_union_pw_qpf_free
342*5971e316Smrg };
343*5971e316Smrg
isl_obj_schedule_copy(void * v)344*5971e316Smrg static void *isl_obj_schedule_copy(void *v)
345*5971e316Smrg {
346*5971e316Smrg return isl_schedule_copy((isl_schedule *) v);
347*5971e316Smrg }
348*5971e316Smrg
isl_obj_schedule_free(void * v)349*5971e316Smrg static void isl_obj_schedule_free(void *v)
350*5971e316Smrg {
351*5971e316Smrg isl_schedule_free((isl_schedule *) v);
352*5971e316Smrg }
353*5971e316Smrg
isl_obj_schedule_print(__isl_take isl_printer * p,void * v)354*5971e316Smrg static __isl_give isl_printer *isl_obj_schedule_print(
355*5971e316Smrg __isl_take isl_printer *p, void *v)
356*5971e316Smrg {
357*5971e316Smrg return isl_printer_print_schedule(p, (isl_schedule *) v);
358*5971e316Smrg }
359*5971e316Smrg
360*5971e316Smrg struct isl_obj_vtable isl_obj_schedule_vtable = {
361*5971e316Smrg isl_obj_schedule_copy,
362*5971e316Smrg NULL,
363*5971e316Smrg isl_obj_schedule_print,
364*5971e316Smrg isl_obj_schedule_free
365*5971e316Smrg };
366