add isl_printer_indent
[platform/upstream/isl.git] / isl_dim_private.h
1 #include <isl/dim.h>
2 #include <isl/hash.h>
3
4 struct isl_name;
5 struct isl_dim {
6         int ref;
7
8         struct isl_ctx *ctx;
9
10         unsigned nparam;
11         unsigned n_in;          /* zero for sets */
12         unsigned n_out;         /* dim for sets */
13
14         struct isl_name *tuple_name[2];
15         struct isl_dim *nested[2];
16
17         unsigned n_name;
18         struct isl_name **names;
19 };
20
21 uint32_t isl_dim_get_hash(__isl_keep isl_dim *dim);
22
23 __isl_give isl_dim *isl_dim_as_set_dim(__isl_take isl_dim *dim);
24
25 unsigned isl_dim_offset(__isl_keep isl_dim *dim, enum isl_dim_type type);
26
27 int isl_dim_may_be_set(__isl_keep isl_dim *dim);
28 int isl_dim_is_named_or_nested(__isl_keep isl_dim *dim, enum isl_dim_type type);
29 int isl_dim_has_named_params(__isl_keep isl_dim *dim);
30 __isl_give isl_dim *isl_dim_reset(__isl_take isl_dim *dim,
31         enum isl_dim_type type);
32 __isl_give isl_dim *isl_dim_flatten(__isl_take isl_dim *dim);
33
34 __isl_give isl_dim *isl_dim_replace(__isl_take isl_dim *dst,
35         enum isl_dim_type type, __isl_keep isl_dim *src);
36
37 __isl_give isl_dim *isl_dim_lift(__isl_take isl_dim *dim, unsigned n_local);