privately export isl_basic_map_fast_cmp and isl_basic_map_fast_is_equal
[platform/upstream/isl.git] / include / isl_obj.h
1 #ifndef ISL_OBJ_H
2 #define ISL_OBJ_H
3
4 #include <isl_set.h>
5 #include <isl_map.h>
6 #include <isl_polynomial.h>
7 #include <isl_printer.h>
8
9 #if defined(__cplusplus)
10 extern "C" {
11 #endif
12
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);
18 };
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;
32 };
33
34 #if defined(__cplusplus)
35 }
36 #endif
37
38 #endif