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