isl 0.15
[isl.git] / isl_schedule_private.h
blobfd5c979a226cabdab4ebb0d88bb59b25d1f2628e
1 #ifndef ISL_SCHEDLUE_PRIVATE_H
2 #define ISL_SCHEDLUE_PRIVATE_H
4 #include <isl/aff.h>
5 #include <isl/schedule.h>
6 #include <isl_schedule_tree.h>
8 /* A complete schedule tree.
10 * band_forest points to a band forest representation of the schedule
11 * and may be NULL if the forest hasn't been created yet.
13 * "root" is the root of the schedule tree and may be NULL if we
14 * have created a band forest corresponding to the schedule.
16 * A pointer to "leaf" may be used to represent a leaf of the schedule.
17 * It should not appear as a child to any other isl_schedule_tree objects,
18 * but an isl_schedule_node may point to "leaf" if it refers to
19 * a leaf of this schedule tree.
21 struct isl_schedule {
22 int ref;
24 isl_band_list *band_forest;
25 isl_schedule_tree *root;
27 struct isl_schedule_tree leaf;
30 __isl_give isl_schedule *isl_schedule_from_schedule_tree(isl_ctx *ctx,
31 __isl_take isl_schedule_tree *tree);
32 __isl_give isl_schedule *isl_schedule_set_root(
33 __isl_take isl_schedule *schedule, __isl_take isl_schedule_tree *tree);
34 __isl_give isl_space *isl_schedule_get_space(
35 __isl_keep isl_schedule *schedule);
36 __isl_give isl_union_set *isl_schedule_get_domain(
37 __isl_keep isl_schedule *schedule);
38 __isl_keep isl_schedule_tree *isl_schedule_peek_leaf(
39 __isl_keep isl_schedule *schedule);
41 #endif