2 * Copyright 2010 INRIA Saclay
3 * Copyright 2014 Ecole Normale Superieure
5 * Use of this software is governed by the MIT license
7 * Written by Sven Verdoolaege, INRIA Saclay - Ile-de-France,
8 * Parc Club Orsay Universite, ZAC des vignes, 4 rue Jacques Monod,
10 * and Ecole Normale Superieure, 45 rue d'Ulm, 75230 Paris, France
16 #include <isl/polynomial.h>
19 static void *isl_obj_val_copy(void *v
)
21 return isl_val_copy((isl_val
*)v
);
24 static void isl_obj_val_free(void *v
)
26 isl_val_free((isl_val
*)v
);
29 static __isl_give isl_printer
*isl_obj_val_print(__isl_take isl_printer
*p
,
32 return isl_printer_print_val(p
, (isl_val
*)v
);
35 static void *isl_obj_val_add(void *v1
, void *v2
)
37 return isl_val_add((isl_val
*) v1
, (isl_val
*) v2
);
40 struct isl_obj_vtable isl_obj_val_vtable
= {
47 static void *isl_obj_map_copy(void *v
)
49 return isl_map_copy((struct isl_map
*)v
);
52 static void isl_obj_map_free(void *v
)
54 isl_map_free((struct isl_map
*)v
);
57 static __isl_give isl_printer
*isl_obj_map_print(__isl_take isl_printer
*p
,
60 return isl_printer_print_map(p
, (struct isl_map
*)v
);
63 static void *isl_obj_map_add(void *v1
, void *v2
)
65 return isl_map_union((struct isl_map
*)v1
, (struct isl_map
*)v2
);
68 struct isl_obj_vtable isl_obj_map_vtable
= {
75 static void *isl_obj_union_map_copy(void *v
)
77 return isl_union_map_copy((isl_union_map
*)v
);
80 static void isl_obj_union_map_free(void *v
)
82 isl_union_map_free((isl_union_map
*)v
);
85 static __isl_give isl_printer
*isl_obj_union_map_print(__isl_take isl_printer
*p
,
88 return isl_printer_print_union_map(p
, (isl_union_map
*)v
);
91 static void *isl_obj_union_map_add(void *v1
, void *v2
)
93 return isl_union_map_union((isl_union_map
*)v1
, (isl_union_map
*)v2
);
96 struct isl_obj_vtable isl_obj_union_map_vtable
= {
97 isl_obj_union_map_copy
,
98 isl_obj_union_map_add
,
99 isl_obj_union_map_print
,
100 isl_obj_union_map_free
103 static void *isl_obj_set_copy(void *v
)
105 return isl_set_copy((struct isl_set
*)v
);
108 static void isl_obj_set_free(void *v
)
110 isl_set_free((struct isl_set
*)v
);
113 static __isl_give isl_printer
*isl_obj_set_print(__isl_take isl_printer
*p
,
116 return isl_printer_print_set(p
, (struct isl_set
*)v
);
119 static void *isl_obj_set_add(void *v1
, void *v2
)
121 return isl_set_union((struct isl_set
*)v1
, (struct isl_set
*)v2
);
124 struct isl_obj_vtable isl_obj_set_vtable
= {
131 static void *isl_obj_union_set_copy(void *v
)
133 return isl_union_set_copy((isl_union_set
*)v
);
136 static void isl_obj_union_set_free(void *v
)
138 isl_union_set_free((isl_union_set
*)v
);
141 static __isl_give isl_printer
*isl_obj_union_set_print(__isl_take isl_printer
*p
,
144 return isl_printer_print_union_set(p
, (isl_union_set
*)v
);
147 static void *isl_obj_union_set_add(void *v1
, void *v2
)
149 return isl_union_set_union((isl_union_set
*)v1
, (isl_union_set
*)v2
);
152 struct isl_obj_vtable isl_obj_union_set_vtable
= {
153 isl_obj_union_set_copy
,
154 isl_obj_union_set_add
,
155 isl_obj_union_set_print
,
156 isl_obj_union_set_free
159 static void *isl_obj_pw_multi_aff_copy(void *v
)
161 return isl_pw_multi_aff_copy((isl_pw_multi_aff
*) v
);
164 static void isl_obj_pw_multi_aff_free(void *v
)
166 isl_pw_multi_aff_free((isl_pw_multi_aff
*) v
);
169 static __isl_give isl_printer
*isl_obj_pw_multi_aff_print(
170 __isl_take isl_printer
*p
, void *v
)
172 return isl_printer_print_pw_multi_aff(p
, (isl_pw_multi_aff
*) v
);
175 static void *isl_obj_pw_multi_aff_add(void *v1
, void *v2
)
177 return isl_pw_multi_aff_add((isl_pw_multi_aff
*) v1
,
178 (isl_pw_multi_aff
*) v2
);
181 struct isl_obj_vtable isl_obj_pw_multi_aff_vtable
= {
182 isl_obj_pw_multi_aff_copy
,
183 isl_obj_pw_multi_aff_add
,
184 isl_obj_pw_multi_aff_print
,
185 isl_obj_pw_multi_aff_free
188 static void *isl_obj_none_copy(void *v
)
193 static void isl_obj_none_free(void *v
)
197 static __isl_give isl_printer
*isl_obj_none_print(__isl_take isl_printer
*p
,
203 static void *isl_obj_none_add(void *v1
, void *v2
)
208 struct isl_obj_vtable isl_obj_none_vtable
= {
215 static void *isl_obj_pw_qp_copy(void *v
)
217 return isl_pw_qpolynomial_copy((struct isl_pw_qpolynomial
*)v
);
220 static void isl_obj_pw_qp_free(void *v
)
222 isl_pw_qpolynomial_free((struct isl_pw_qpolynomial
*)v
);
225 static __isl_give isl_printer
*isl_obj_pw_qp_print(__isl_take isl_printer
*p
,
228 return isl_printer_print_pw_qpolynomial(p
,
229 (struct isl_pw_qpolynomial
*)v
);
232 static void *isl_obj_pw_qp_add(void *v1
, void *v2
)
234 return isl_pw_qpolynomial_add((struct isl_pw_qpolynomial
*)v1
,
235 (struct isl_pw_qpolynomial
*)v2
);
238 struct isl_obj_vtable isl_obj_pw_qpolynomial_vtable
= {
245 static void *isl_obj_union_pw_qp_copy(void *v
)
247 return isl_union_pw_qpolynomial_copy((struct isl_union_pw_qpolynomial
*)v
);
250 static void isl_obj_union_pw_qp_free(void *v
)
252 isl_union_pw_qpolynomial_free((struct isl_union_pw_qpolynomial
*)v
);
255 static __isl_give isl_printer
*isl_obj_union_pw_qp_print(
256 __isl_take isl_printer
*p
, void *v
)
258 return isl_printer_print_union_pw_qpolynomial(p
,
259 (struct isl_union_pw_qpolynomial
*)v
);
262 static void *isl_obj_union_pw_qp_add(void *v1
, void *v2
)
264 return isl_union_pw_qpolynomial_add(
265 (struct isl_union_pw_qpolynomial
*)v1
,
266 (struct isl_union_pw_qpolynomial
*)v2
);
269 struct isl_obj_vtable isl_obj_union_pw_qpolynomial_vtable
= {
270 isl_obj_union_pw_qp_copy
,
271 isl_obj_union_pw_qp_add
,
272 isl_obj_union_pw_qp_print
,
273 isl_obj_union_pw_qp_free
276 static void *isl_obj_pw_qpf_copy(void *v
)
278 return isl_pw_qpolynomial_fold_copy((struct isl_pw_qpolynomial_fold
*)v
);
281 static void isl_obj_pw_qpf_free(void *v
)
283 isl_pw_qpolynomial_fold_free((struct isl_pw_qpolynomial_fold
*)v
);
286 static __isl_give isl_printer
*isl_obj_pw_qpf_print(__isl_take isl_printer
*p
,
289 return isl_printer_print_pw_qpolynomial_fold(p
,
290 (struct isl_pw_qpolynomial_fold
*)v
);
293 static void *isl_obj_pw_qpf_add(void *v1
, void *v2
)
295 return isl_pw_qpolynomial_fold_fold((struct isl_pw_qpolynomial_fold
*)v1
,
296 (struct isl_pw_qpolynomial_fold
*)v2
);
299 struct isl_obj_vtable isl_obj_pw_qpolynomial_fold_vtable
= {
302 isl_obj_pw_qpf_print
,
306 static void *isl_obj_union_pw_qpf_copy(void *v
)
308 return isl_union_pw_qpolynomial_fold_copy((struct isl_union_pw_qpolynomial_fold
*)v
);
311 static void isl_obj_union_pw_qpf_free(void *v
)
313 isl_union_pw_qpolynomial_fold_free((struct isl_union_pw_qpolynomial_fold
*)v
);
316 static __isl_give isl_printer
*isl_obj_union_pw_qpf_print(
317 __isl_take isl_printer
*p
, void *v
)
319 return isl_printer_print_union_pw_qpolynomial_fold(p
,
320 (struct isl_union_pw_qpolynomial_fold
*)v
);
323 static void *isl_obj_union_pw_qpf_add(void *v1
, void *v2
)
325 return isl_union_pw_qpolynomial_fold_fold(
326 (struct isl_union_pw_qpolynomial_fold
*)v1
,
327 (struct isl_union_pw_qpolynomial_fold
*)v2
);
330 struct isl_obj_vtable isl_obj_union_pw_qpolynomial_fold_vtable
= {
331 isl_obj_union_pw_qpf_copy
,
332 isl_obj_union_pw_qpf_add
,
333 isl_obj_union_pw_qpf_print
,
334 isl_obj_union_pw_qpf_free