1 | #ifndef ISL_FACTORIZATION_H |
---|---|
2 | #define ISL_FACTORIZATION_H |
3 | |
4 | #include <isl/set.h> |
5 | #include <isl_morph.h> |
6 | |
7 | #if defined(__cplusplus) |
8 | extern "C"{ |
9 | #endif |
10 | |
11 | /* Data for factorizing the basic set "bset". |
12 | * After applying "morph" to the basic set, there are "n_group" |
13 | * groups of consecutive set variables, each of length "len[i]", |
14 | * with 0 <= i < n_group. |
15 | * If no factorization is possible, then "n_group" is set to 0. |
16 | */ |
17 | struct isl_factorizer { |
18 | isl_basic_set *bset; |
19 | isl_morph *morph; |
20 | int n_group; |
21 | int *len; |
22 | }; |
23 | typedef struct isl_factorizer isl_factorizer; |
24 | |
25 | __isl_give isl_factorizer *isl_basic_set_factorizer( |
26 | __isl_keep isl_basic_set *bset); |
27 | |
28 | isl_ctx *isl_factorizer_get_ctx(__isl_keep isl_factorizer *f); |
29 | |
30 | __isl_null isl_factorizer *isl_factorizer_free(__isl_take isl_factorizer *f); |
31 | void isl_factorizer_dump(__isl_take isl_factorizer *f); |
32 | |
33 | __isl_give isl_bool isl_factorizer_every_factor_basic_set( |
34 | __isl_keep isl_factorizer *f, |
35 | isl_bool (*test)(__isl_keep isl_basic_set *bset, void *user), |
36 | void *user); |
37 | |
38 | #if defined(__cplusplus) |
39 | } |
40 | #endif |
41 | |
42 | #endif |
43 |