add isl_pw_qpolynomial_foreach_lifted_piece
[isl.git] / include / isl_obj.h
blob18044b8b7bef08ea172e29605ce7636e28bb7ca0
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>
8 #if defined(__cplusplus)
9 extern "C" {
10 #endif
12 struct isl_obj_vtable {
13 void *(*copy)(void *v1);
14 void *(*add)(void *v1, void *v2);
15 void (*print)(void *v, FILE *out);
16 void (*free)(void *v);
18 typedef struct isl_obj_vtable *isl_obj_type;
19 extern isl_obj_type isl_obj_none;
20 extern struct isl_obj_vtable isl_obj_set_vtable;
21 #define isl_obj_set (&isl_obj_set_vtable)
22 extern struct isl_obj_vtable isl_obj_map_vtable;
23 #define isl_obj_map (&isl_obj_map_vtable)
24 extern struct isl_obj_vtable isl_obj_pw_qpolynomial_vtable;
25 #define isl_obj_pw_qpolynomial (&isl_obj_pw_qpolynomial_vtable)
26 struct isl_obj {
27 isl_obj_type type;
28 void *v;
31 #if defined(__cplusplus)
33 #endif
35 #endif