add isl_aff_set_tuple_id
[isl.git] / include / isl / multi.h
blob813f02e7be2bed58ece32997815483fdc9ddea10
1 #ifndef ISL_MULTI_H
2 #define ISL_MULTI_H
4 #include <isl/space.h>
5 #include <isl/list.h>
6 #include <isl/set_type.h>
8 #if defined(__cplusplus)
9 extern "C" {
10 #endif
12 #define ISL_DECLARE_MULTI(BASE) \
13 unsigned isl_multi_##BASE##_dim(__isl_keep isl_multi_##BASE *multi, \
14 enum isl_dim_type type); \
15 isl_ctx *isl_multi_##BASE##_get_ctx( \
16 __isl_keep isl_multi_##BASE *multi); \
17 __isl_give isl_space *isl_multi_##BASE##_get_space( \
18 __isl_keep isl_multi_##BASE *multi); \
19 __isl_give isl_space *isl_multi_##BASE##_get_domain_space( \
20 __isl_keep isl_multi_##BASE *multi); \
21 __isl_give isl_multi_##BASE *isl_multi_##BASE##_from_##BASE##_list( \
22 __isl_take isl_space *space, __isl_take isl_##BASE##_list *list); \
23 __isl_give isl_multi_##BASE *isl_multi_##BASE##_zero( \
24 __isl_take isl_space *space); \
25 __isl_give isl_multi_##BASE *isl_multi_##BASE##_copy( \
26 __isl_keep isl_multi_##BASE *multi); \
27 void *isl_multi_##BASE##_free(__isl_take isl_multi_##BASE *multi); \
28 int isl_multi_##BASE##_plain_is_equal( \
29 __isl_keep isl_multi_##BASE *multi1, \
30 __isl_keep isl_multi_##BASE *multi2); \
31 int isl_multi_##BASE##_find_dim_by_id( \
32 __isl_keep isl_multi_##BASE *multi, enum isl_dim_type type, \
33 __isl_keep isl_id *id); \
34 __isl_give isl_id *isl_multi_##BASE##_get_dim_id( \
35 __isl_take isl_multi_##BASE *multi, \
36 enum isl_dim_type type, unsigned pos); \
37 __isl_give isl_multi_##BASE *isl_multi_##BASE##_set_dim_name( \
38 __isl_take isl_multi_##BASE *multi, \
39 enum isl_dim_type type, unsigned pos, const char *s); \
40 __isl_give isl_multi_##BASE *isl_multi_##BASE##_set_dim_id( \
41 __isl_take isl_multi_##BASE *multi, \
42 enum isl_dim_type type, unsigned pos, __isl_take isl_id *id); \
43 const char *isl_multi_##BASE##_get_tuple_name( \
44 __isl_keep isl_multi_##BASE *multi, enum isl_dim_type type); \
45 int isl_multi_##BASE##_has_tuple_id(__isl_keep isl_multi_##BASE *multi, \
46 enum isl_dim_type type); \
47 __isl_give isl_id *isl_multi_##BASE##_get_tuple_id( \
48 __isl_keep isl_multi_##BASE *multi, enum isl_dim_type type); \
49 __isl_give isl_multi_##BASE *isl_multi_##BASE##_set_tuple_name( \
50 __isl_take isl_multi_##BASE *multi, \
51 enum isl_dim_type type, const char *s); \
52 __isl_give isl_multi_##BASE *isl_multi_##BASE##_set_tuple_id( \
53 __isl_take isl_multi_##BASE *multi, \
54 enum isl_dim_type type, __isl_take isl_id *id); \
55 __isl_give isl_multi_##BASE *isl_multi_##BASE##_reset_tuple_id( \
56 __isl_take isl_multi_##BASE *multi, enum isl_dim_type type); \
57 __isl_give isl_multi_##BASE *isl_multi_##BASE##_reset_user( \
58 __isl_take isl_multi_##BASE *multi); \
59 __isl_give isl_multi_##BASE *isl_multi_##BASE##_insert_dims( \
60 __isl_take isl_multi_##BASE *multi, enum isl_dim_type type, \
61 unsigned first, unsigned n); \
62 __isl_give isl_multi_##BASE *isl_multi_##BASE##_add_dims( \
63 __isl_take isl_multi_##BASE *multi, enum isl_dim_type type, \
64 unsigned n); \
65 __isl_give isl_multi_##BASE *isl_multi_##BASE##_drop_dims( \
66 __isl_take isl_multi_##BASE *multi, enum isl_dim_type type, \
67 unsigned first, unsigned n); \
68 __isl_give isl_##BASE *isl_multi_##BASE##_get_##BASE( \
69 __isl_keep isl_multi_##BASE *multi, int pos); \
70 __isl_give isl_multi_##BASE *isl_multi_##BASE##_set_##BASE( \
71 __isl_take isl_multi_##BASE *multi, int pos, \
72 __isl_take isl_##BASE *el); \
73 __isl_give isl_multi_##BASE *isl_multi_##BASE##_range_splice( \
74 __isl_take isl_multi_##BASE *multi1, unsigned pos, \
75 __isl_take isl_multi_##BASE *multi2); \
76 __isl_give isl_multi_##BASE *isl_multi_##BASE##_splice( \
77 __isl_take isl_multi_##BASE *multi1, unsigned in_pos, \
78 unsigned out_pos, __isl_take isl_multi_##BASE *multi2); \
79 __isl_give isl_multi_##BASE *isl_multi_##BASE##_flat_range_product( \
80 __isl_take isl_multi_##BASE *multi1, \
81 __isl_take isl_multi_##BASE *multi2); \
82 __isl_give isl_multi_##BASE *isl_multi_##BASE##_range_product( \
83 __isl_take isl_multi_##BASE *multi1, \
84 __isl_take isl_multi_##BASE *multi2); \
85 __isl_give isl_multi_##BASE *isl_multi_##BASE##_product( \
86 __isl_take isl_multi_##BASE *multi1, \
87 __isl_take isl_multi_##BASE *multi2); \
88 int isl_multi_##BASE##_range_is_wrapping( \
89 __isl_keep isl_multi_##BASE *multi); \
90 __isl_give isl_multi_##BASE *isl_multi_##BASE##_range_factor_domain( \
91 __isl_take isl_multi_##BASE *multi); \
92 __isl_give isl_multi_##BASE *isl_multi_##BASE##_range_factor_range( \
93 __isl_take isl_multi_##BASE *multi); \
94 __isl_give isl_multi_##BASE *isl_multi_##BASE##_scale_val( \
95 __isl_take isl_multi_##BASE *multi, __isl_take isl_val *v); \
96 __isl_give isl_multi_##BASE *isl_multi_##BASE##_scale_multi_val( \
97 __isl_take isl_multi_##BASE *multi, \
98 __isl_take isl_multi_val *mv); \
99 __isl_give isl_multi_##BASE *isl_multi_##BASE##_scale_down_multi_val( \
100 __isl_take isl_multi_##BASE *multi, \
101 __isl_take isl_multi_val *mv); \
102 __isl_give isl_multi_##BASE *isl_multi_##BASE##_align_params( \
103 __isl_take isl_multi_##BASE *multi, \
104 __isl_take isl_space *model); \
105 __isl_give isl_multi_##BASE *isl_multi_##BASE##_from_range( \
106 __isl_take isl_multi_##BASE *multi);
108 #if defined(__cplusplus)
110 #endif
112 #endif