add isl_calloc_type
[platform/upstream/isl.git] / include / isl_constraint.h
1 #ifndef ISL_CONSTRAINT_H
2 #define ISL_CONSTRAINT_H
3
4 #include "isl_div.h"
5 #include "isl_set.h"
6
7 #if defined(__cplusplus)
8 extern "C" {
9 #endif
10
11 struct isl_constraint {
12         int ref;
13         struct isl_ctx *ctx;
14
15         struct isl_basic_map    *bmap;
16         isl_int                 **line;
17 };
18
19 struct isl_constraint *isl_equality_alloc(struct isl_dim *dim);
20 struct isl_constraint *isl_inequality_alloc(struct isl_dim *dim);
21 struct isl_constraint *isl_basic_set_constraint(struct isl_basic_set *bset,
22         isl_int **line);
23
24 struct isl_constraint *isl_constraint_cow(struct isl_constraint *c);
25 struct isl_constraint *isl_constraint_copy(struct isl_constraint *c);
26 struct isl_constraint *isl_constraint_free(struct isl_constraint *c);
27
28 struct isl_constraint *isl_basic_set_first_constraint(
29         struct isl_basic_set *bset);
30 struct isl_constraint *isl_constraint_next(struct isl_constraint *c);
31 int isl_constraint_is_equal(struct isl_constraint *constraint1,
32                             struct isl_constraint *constraint2);
33
34 struct isl_basic_map *isl_basic_map_add_constraint(
35         struct isl_basic_map *bmap, struct isl_constraint *constraint);
36 struct isl_basic_set *isl_basic_set_add_constraint(
37         struct isl_basic_set *bset, struct isl_constraint *constraint);
38
39 int isl_basic_set_has_defining_equality(
40         struct isl_basic_set *bset, enum isl_dim_type type, int pos,
41         struct isl_constraint **constraint);
42 int isl_basic_set_has_defining_inequalities(
43         struct isl_basic_set *bset, enum isl_dim_type type, int pos,
44         struct isl_constraint **lower,
45         struct isl_constraint **upper);
46
47 int isl_constraint_dim(struct isl_constraint *constraint,
48         enum isl_dim_type type);
49
50 void isl_constraint_get_constant(struct isl_constraint *constraint, isl_int *v);
51 void isl_constraint_get_coefficient(struct isl_constraint *constraint,
52         enum isl_dim_type type, int pos, isl_int *v);
53 void isl_constraint_set_constant(struct isl_constraint *constraint, isl_int v);
54 void isl_constraint_set_coefficient(struct isl_constraint *constraint,
55         enum isl_dim_type type, int pos, isl_int v);
56
57 struct isl_div *isl_constraint_div(struct isl_constraint *constraint, int pos);
58 struct isl_constraint *isl_constraint_add_div(struct isl_constraint *constraint,
59         struct isl_div *div, int *pos);
60
61 void isl_constraint_clear(struct isl_constraint *constraint);
62 struct isl_constraint *isl_constraint_negate(struct isl_constraint *constraint);
63
64 int isl_constraint_is_equality(struct isl_constraint *constraint);
65
66 struct isl_basic_set *isl_basic_set_from_constraint(
67         struct isl_constraint *constraint);
68
69 #if defined(__cplusplus)
70 }
71 #endif
72
73 #endif