extract out isl/ast_type.h
[isl.git] / isl_obj.c
blob976d4998576d0d4cfa57d6bee537e12078e231b1
1 /*
2 * Copyright 2010 INRIA Saclay
4 * Use of this software is governed by the MIT license
6 * Written by Sven Verdoolaege, INRIA Saclay - Ile-de-France,
7 * Parc Club Orsay Universite, ZAC des vignes, 4 rue Jacques Monod,
8 * 91893 Orsay, France
9 */
11 #include <isl/set.h>
12 #include <isl/map.h>
13 #include <isl/polynomial.h>
14 #include <isl/obj.h>
16 static void *isl_obj_val_copy(void *v)
18 return isl_val_copy((isl_val *)v);
21 static void isl_obj_val_free(void *v)
23 isl_val_free((isl_val *)v);
26 static __isl_give isl_printer *isl_obj_val_print(__isl_take isl_printer *p,
27 void *v)
29 return isl_printer_print_val(p, (isl_val *)v);
32 static void *isl_obj_val_add(void *v1, void *v2)
34 return isl_val_add((isl_val *) v1, (isl_val *) v2);
37 struct isl_obj_vtable isl_obj_val_vtable = {
38 isl_obj_val_copy,
39 isl_obj_val_add,
40 isl_obj_val_print,
41 isl_obj_val_free
44 static void *isl_obj_map_copy(void *v)
46 return isl_map_copy((struct isl_map *)v);
49 static void isl_obj_map_free(void *v)
51 isl_map_free((struct isl_map *)v);
54 static __isl_give isl_printer *isl_obj_map_print(__isl_take isl_printer *p,
55 void *v)
57 return isl_printer_print_map(p, (struct isl_map *)v);
60 static void *isl_obj_map_add(void *v1, void *v2)
62 return isl_map_union((struct isl_map *)v1, (struct isl_map *)v2);
65 struct isl_obj_vtable isl_obj_map_vtable = {
66 isl_obj_map_copy,
67 isl_obj_map_add,
68 isl_obj_map_print,
69 isl_obj_map_free
72 static void *isl_obj_union_map_copy(void *v)
74 return isl_union_map_copy((isl_union_map *)v);
77 static void isl_obj_union_map_free(void *v)
79 isl_union_map_free((isl_union_map *)v);
82 static __isl_give isl_printer *isl_obj_union_map_print(__isl_take isl_printer *p,
83 void *v)
85 return isl_printer_print_union_map(p, (isl_union_map *)v);
88 static void *isl_obj_union_map_add(void *v1, void *v2)
90 return isl_union_map_union((isl_union_map *)v1, (isl_union_map *)v2);
93 struct isl_obj_vtable isl_obj_union_map_vtable = {
94 isl_obj_union_map_copy,
95 isl_obj_union_map_add,
96 isl_obj_union_map_print,
97 isl_obj_union_map_free
100 static void *isl_obj_set_copy(void *v)
102 return isl_set_copy((struct isl_set *)v);
105 static void isl_obj_set_free(void *v)
107 isl_set_free((struct isl_set *)v);
110 static __isl_give isl_printer *isl_obj_set_print(__isl_take isl_printer *p,
111 void *v)
113 return isl_printer_print_set(p, (struct isl_set *)v);
116 static void *isl_obj_set_add(void *v1, void *v2)
118 return isl_set_union((struct isl_set *)v1, (struct isl_set *)v2);
121 struct isl_obj_vtable isl_obj_set_vtable = {
122 isl_obj_set_copy,
123 isl_obj_set_add,
124 isl_obj_set_print,
125 isl_obj_set_free
128 static void *isl_obj_union_set_copy(void *v)
130 return isl_union_set_copy((isl_union_set *)v);
133 static void isl_obj_union_set_free(void *v)
135 isl_union_set_free((isl_union_set *)v);
138 static __isl_give isl_printer *isl_obj_union_set_print(__isl_take isl_printer *p,
139 void *v)
141 return isl_printer_print_union_set(p, (isl_union_set *)v);
144 static void *isl_obj_union_set_add(void *v1, void *v2)
146 return isl_union_set_union((isl_union_set *)v1, (isl_union_set *)v2);
149 struct isl_obj_vtable isl_obj_union_set_vtable = {
150 isl_obj_union_set_copy,
151 isl_obj_union_set_add,
152 isl_obj_union_set_print,
153 isl_obj_union_set_free
156 static void *isl_obj_none_copy(void *v)
158 return v;
161 static void isl_obj_none_free(void *v)
165 static __isl_give isl_printer *isl_obj_none_print(__isl_take isl_printer *p,
166 void *v)
168 return p;
171 static void *isl_obj_none_add(void *v1, void *v2)
173 return NULL;
176 struct isl_obj_vtable isl_obj_none_vtable = {
177 isl_obj_none_copy,
178 isl_obj_none_add,
179 isl_obj_none_print,
180 isl_obj_none_free
183 static void *isl_obj_pw_qp_copy(void *v)
185 return isl_pw_qpolynomial_copy((struct isl_pw_qpolynomial *)v);
188 static void isl_obj_pw_qp_free(void *v)
190 isl_pw_qpolynomial_free((struct isl_pw_qpolynomial *)v);
193 static __isl_give isl_printer *isl_obj_pw_qp_print(__isl_take isl_printer *p,
194 void *v)
196 return isl_printer_print_pw_qpolynomial(p,
197 (struct isl_pw_qpolynomial *)v);
200 static void *isl_obj_pw_qp_add(void *v1, void *v2)
202 return isl_pw_qpolynomial_add((struct isl_pw_qpolynomial *)v1,
203 (struct isl_pw_qpolynomial *)v2);
206 struct isl_obj_vtable isl_obj_pw_qpolynomial_vtable = {
207 isl_obj_pw_qp_copy,
208 isl_obj_pw_qp_add,
209 isl_obj_pw_qp_print,
210 isl_obj_pw_qp_free
213 static void *isl_obj_union_pw_qp_copy(void *v)
215 return isl_union_pw_qpolynomial_copy((struct isl_union_pw_qpolynomial *)v);
218 static void isl_obj_union_pw_qp_free(void *v)
220 isl_union_pw_qpolynomial_free((struct isl_union_pw_qpolynomial *)v);
223 static __isl_give isl_printer *isl_obj_union_pw_qp_print(
224 __isl_take isl_printer *p, void *v)
226 return isl_printer_print_union_pw_qpolynomial(p,
227 (struct isl_union_pw_qpolynomial *)v);
230 static void *isl_obj_union_pw_qp_add(void *v1, void *v2)
232 return isl_union_pw_qpolynomial_add(
233 (struct isl_union_pw_qpolynomial *)v1,
234 (struct isl_union_pw_qpolynomial *)v2);
237 struct isl_obj_vtable isl_obj_union_pw_qpolynomial_vtable = {
238 isl_obj_union_pw_qp_copy,
239 isl_obj_union_pw_qp_add,
240 isl_obj_union_pw_qp_print,
241 isl_obj_union_pw_qp_free
244 static void *isl_obj_pw_qpf_copy(void *v)
246 return isl_pw_qpolynomial_fold_copy((struct isl_pw_qpolynomial_fold *)v);
249 static void isl_obj_pw_qpf_free(void *v)
251 isl_pw_qpolynomial_fold_free((struct isl_pw_qpolynomial_fold *)v);
254 static __isl_give isl_printer *isl_obj_pw_qpf_print(__isl_take isl_printer *p,
255 void *v)
257 return isl_printer_print_pw_qpolynomial_fold(p,
258 (struct isl_pw_qpolynomial_fold *)v);
261 static void *isl_obj_pw_qpf_add(void *v1, void *v2)
263 return isl_pw_qpolynomial_fold_fold((struct isl_pw_qpolynomial_fold *)v1,
264 (struct isl_pw_qpolynomial_fold *)v2);
267 struct isl_obj_vtable isl_obj_pw_qpolynomial_fold_vtable = {
268 isl_obj_pw_qpf_copy,
269 isl_obj_pw_qpf_add,
270 isl_obj_pw_qpf_print,
271 isl_obj_pw_qpf_free
274 static void *isl_obj_union_pw_qpf_copy(void *v)
276 return isl_union_pw_qpolynomial_fold_copy((struct isl_union_pw_qpolynomial_fold *)v);
279 static void isl_obj_union_pw_qpf_free(void *v)
281 isl_union_pw_qpolynomial_fold_free((struct isl_union_pw_qpolynomial_fold *)v);
284 static __isl_give isl_printer *isl_obj_union_pw_qpf_print(
285 __isl_take isl_printer *p, void *v)
287 return isl_printer_print_union_pw_qpolynomial_fold(p,
288 (struct isl_union_pw_qpolynomial_fold *)v);
291 static void *isl_obj_union_pw_qpf_add(void *v1, void *v2)
293 return isl_union_pw_qpolynomial_fold_fold(
294 (struct isl_union_pw_qpolynomial_fold *)v1,
295 (struct isl_union_pw_qpolynomial_fold *)v2);
298 struct isl_obj_vtable isl_obj_union_pw_qpolynomial_fold_vtable = {
299 isl_obj_union_pw_qpf_copy,
300 isl_obj_union_pw_qpf_add,
301 isl_obj_union_pw_qpf_print,
302 isl_obj_union_pw_qpf_free