add functions for manipulating the domain of a pet_context
[pet.git] / context.h
blob3f86a468a2ea1a4c4e65dbbf633b92998950477c
1 #ifndef PET_CONTEXT_H
2 #define PET_CONTEXT_H
4 #include <isl/space.h>
5 #include <isl/set.h>
6 #include <isl/id_to_pw_aff.h>
8 #include <pet.h>
10 #if defined(__cplusplus)
11 extern "C" {
12 #endif
14 struct pet_context;
15 typedef struct pet_context pet_context;
17 isl_ctx *pet_context_get_ctx(__isl_keep pet_context *pc);
19 __isl_give pet_context *pet_context_alloc(__isl_take isl_set *domain);
20 __isl_give pet_context *pet_context_copy(__isl_keep pet_context *pc);
21 __isl_null pet_context *pet_context_free(__isl_take pet_context *pc);
23 __isl_give isl_set *pet_context_get_domain(__isl_keep pet_context *pc);
24 __isl_give isl_space *pet_context_get_space(__isl_keep pet_context *pc);
25 unsigned pet_context_dim(__isl_keep pet_context *pc);
26 __isl_give isl_id_to_pw_aff *pet_context_get_assignments(
27 __isl_keep pet_context *pc);
28 int pet_context_is_assigned(__isl_keep pet_context *pc, __isl_keep isl_id *id);
29 __isl_give pet_context *pet_context_set_value(__isl_take pet_context *pc,
30 __isl_take isl_id *id, isl_pw_aff *value);
31 __isl_give isl_pw_aff *pet_context_get_value(__isl_keep pet_context *pc,
32 __isl_take isl_id *id);
33 __isl_give pet_context *pet_context_mark_unknown(__isl_take pet_context *pc,
34 __isl_take isl_id *id);
35 __isl_give pet_context *pet_context_clear_value(__isl_keep pet_context *pc,
36 __isl_take isl_id *id);
37 __isl_give pet_context *pet_context_set_allow_nested(__isl_take pet_context *pc,
38 int allow_nested);
39 int pet_context_allow_nesting(__isl_keep pet_context *pc);
41 __isl_give pet_context *pet_context_clear_writes_in_expr(
42 __isl_take pet_context *pc, __isl_keep pet_expr *expr);
43 __isl_give pet_context *pet_context_clear_writes_in_tree(
44 __isl_take pet_context *pc, __isl_keep pet_tree *tree);
46 __isl_give pet_expr *pet_context_evaluate_expr(__isl_keep pet_context *pc,
47 __isl_take pet_expr *expr);
49 __isl_give pet_context *pet_context_add_inner_iterator(
50 __isl_take pet_context *pc, __isl_take isl_id *id);
51 __isl_give pet_context *pet_context_add_infinite_loop(
52 __isl_take pet_context *pc);
53 __isl_give pet_context *pet_context_preimage_domain(__isl_take pet_context *pc,
54 __isl_keep isl_multi_aff *ma);
56 __isl_give pet_context *pet_context_intersect_domain(__isl_take pet_context *pc,
57 __isl_take isl_set *set);
59 void pet_context_dump(__isl_keep pet_context *pc);
61 #if defined(__cplusplus)
63 #endif
65 #endif