| 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 |
