add isl_aff_scale_down_val
[platform/upstream/isl.git] / include / isl / multi.h
1 #ifndef ISL_MULTI_H
2 #define ISL_MULTI_H
3
4 #include <isl/space.h>
5 #include <isl/list.h>
6
7 #if defined(__cplusplus)
8 extern "C" {
9 #endif
10
11 #define ISL_DECLARE_MULTI(BASE)                                         \
12 unsigned isl_multi_##BASE##_dim(__isl_keep isl_multi_##BASE *multi,     \
13         enum isl_dim_type type);                                        \
14 isl_ctx *isl_multi_##BASE##_get_ctx(                                    \
15         __isl_keep isl_multi_##BASE *multi);                            \
16 __isl_give isl_space *isl_multi_##BASE##_get_space(                     \
17         __isl_keep isl_multi_##BASE *multi);                            \
18 __isl_give isl_space *isl_multi_##BASE##_get_domain_space(              \
19         __isl_keep isl_multi_##BASE *multi);                            \
20 __isl_give isl_multi_##BASE *isl_multi_##BASE##_from_##BASE##_list(     \
21         __isl_take isl_space *space, __isl_take isl_##BASE##_list *list); \
22 __isl_give isl_multi_##BASE *isl_multi_##BASE##_zero(                   \
23         __isl_take isl_space *space);                                   \
24 __isl_give isl_multi_##BASE *isl_multi_##BASE##_copy(                   \
25         __isl_keep isl_multi_##BASE *multi);                            \
26 void *isl_multi_##BASE##_free(__isl_take isl_multi_##BASE *multi);      \
27 __isl_give isl_multi_##BASE *isl_multi_##BASE##_set_dim_name(           \
28         __isl_take isl_multi_##BASE *multi,                             \
29         enum isl_dim_type type, unsigned pos, const char *s);           \
30 const char *isl_multi_##BASE##_get_tuple_name(                          \
31         __isl_keep isl_multi_##BASE *multi, enum isl_dim_type type);    \
32 __isl_give isl_multi_##BASE *isl_multi_##BASE##_set_tuple_name(         \
33         __isl_take isl_multi_##BASE *multi,                             \
34         enum isl_dim_type type, const char *s);                         \
35 __isl_give isl_multi_##BASE *isl_multi_##BASE##_set_tuple_id(           \
36         __isl_take isl_multi_##BASE *multi,                             \
37         enum isl_dim_type type, __isl_take isl_id *id);                 \
38 __isl_give isl_multi_##BASE *isl_multi_##BASE##_insert_dims(            \
39         __isl_take isl_multi_##BASE *multi, enum isl_dim_type type,     \
40         unsigned first, unsigned n);                                    \
41 __isl_give isl_multi_##BASE *isl_multi_##BASE##_add_dims(               \
42         __isl_take isl_multi_##BASE *multi, enum isl_dim_type type,     \
43         unsigned n);                                                    \
44 __isl_give isl_multi_##BASE *isl_multi_##BASE##_drop_dims(              \
45         __isl_take isl_multi_##BASE *multi, enum isl_dim_type type,     \
46         unsigned first, unsigned n);                                    \
47 __isl_give isl_##BASE *isl_multi_##BASE##_get_##BASE(                   \
48         __isl_keep isl_multi_##BASE *multi, int pos);                   \
49 __isl_give isl_multi_##BASE *isl_multi_##BASE##_set_##BASE(             \
50         __isl_take isl_multi_##BASE *multi, int pos,                    \
51         __isl_take isl_##BASE *el);                                     \
52 __isl_give isl_multi_##BASE *isl_multi_##BASE##_range_splice(           \
53         __isl_take isl_multi_##BASE *multi1, unsigned pos,              \
54         __isl_take isl_multi_##BASE *multi2);                           \
55 __isl_give isl_multi_##BASE *isl_multi_##BASE##_splice(                 \
56         __isl_take isl_multi_##BASE *multi1, unsigned in_pos,           \
57         unsigned out_pos, __isl_take isl_multi_##BASE *multi2);         \
58 __isl_give isl_multi_##BASE *isl_multi_##BASE##_flat_range_product(     \
59         __isl_take isl_multi_##BASE *multi1,                            \
60         __isl_take isl_multi_##BASE *multi2);                           \
61 __isl_give isl_multi_##BASE *isl_multi_##BASE##_range_product(          \
62         __isl_take isl_multi_##BASE *multi1,                            \
63         __isl_take isl_multi_##BASE *multi2);
64
65 #if defined(__cplusplus)
66 }
67 #endif
68
69 #endif