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