export isl_qpolynomial_involves_dims
[isl.git] / include / isl_obj.h
blob6d1af2371dccbc50fcdc3f67e7a7a6000ac4fc27
1 #ifndef ISL_OBJ_H
2 #define ISL_OBJ_H
4 #include <isl_set.h>
5 #include <isl_map.h>
6 #include <isl_polynomial.h>
7 #include <isl_printer.h>
9 #if defined(__cplusplus)
10 extern "C" {
11 #endif
13 struct isl_obj_vtable {
14 void *(*copy)(void *v1);
15 void *(*add)(void *v1, void *v2);
16 __isl_give isl_printer *(*print)(__isl_take isl_printer *p, void *v);
17 void (*free)(void *v);
19 typedef struct isl_obj_vtable *isl_obj_type;
20 extern isl_obj_type isl_obj_none;
21 extern struct isl_obj_vtable isl_obj_set_vtable;
22 #define isl_obj_set (&isl_obj_set_vtable)
23 extern struct isl_obj_vtable isl_obj_map_vtable;
24 #define isl_obj_map (&isl_obj_map_vtable)
25 extern struct isl_obj_vtable isl_obj_pw_qpolynomial_vtable;
26 #define isl_obj_pw_qpolynomial (&isl_obj_pw_qpolynomial_vtable)
27 extern struct isl_obj_vtable isl_obj_pw_qpolynomial_fold_vtable;
28 #define isl_obj_pw_qpolynomial_fold (&isl_obj_pw_qpolynomial_fold_vtable)
29 struct isl_obj {
30 isl_obj_type type;
31 void *v;
34 #if defined(__cplusplus)
36 #endif
38 #endif