blob: 4d769d942758b408ea90a6ad5a64ba06fe3542cd [file] [log] [blame]
Tobias Grosser72745c22017-02-17 05:11:16 +00001#ifndef ISL_FACTORIZATION_H
2#define ISL_FACTORIZATION_H
3
Tobias Grosser52a25232015-02-04 20:55:43 +00004#include <isl/set.h>
5#include <isl_morph.h>
6
7#if defined(__cplusplus)
8extern "C" {
9#endif
10
11/* Data for factorizing a particular basic set.
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 */
17struct isl_factorizer {
18 isl_morph *morph;
19 int n_group;
20 int *len;
21};
22typedef struct isl_factorizer isl_factorizer;
23
24__isl_give isl_factorizer *isl_basic_set_factorizer(
25 __isl_keep isl_basic_set *bset);
26
27void isl_factorizer_free(__isl_take isl_factorizer *f);
28void isl_factorizer_dump(__isl_take isl_factorizer *f);
29
30#if defined(__cplusplus)
31}
32#endif
Tobias Grosser72745c22017-02-17 05:11:16 +000033
34#endif