Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-10 08:48:12

0001 /*
0002  * Copyright 2008-2009 Katholieke Universiteit Leuven
0003  *
0004  * Use of this software is governed by the MIT license
0005  *
0006  * Written by Sven Verdoolaege, K.U.Leuven, Departement
0007  * Computerwetenschappen, Celestijnenlaan 200A, B-3001 Leuven, Belgium
0008  */
0009 
0010 #ifndef ISL_CONSTRAINT_H
0011 #define ISL_CONSTRAINT_H
0012 
0013 #include <isl/local_space.h>
0014 #include <isl/space_type.h>
0015 #include <isl/aff_type.h>
0016 #include <isl/set_type.h>
0017 #include <isl/list.h>
0018 #include <isl/val_type.h>
0019 #include <isl/printer.h>
0020 
0021 #if defined(__cplusplus)
0022 extern "C" {
0023 #endif
0024 
0025 struct isl_constraint;
0026 typedef struct isl_constraint isl_constraint;
0027 
0028 ISL_DECLARE_LIST(constraint)
0029 
0030 isl_ctx *isl_constraint_get_ctx(__isl_keep isl_constraint *c);
0031 
0032 __isl_give isl_constraint *isl_constraint_alloc_equality(
0033     __isl_take isl_local_space *ls);
0034 __isl_give isl_constraint *isl_constraint_alloc_inequality(
0035     __isl_take isl_local_space *ls);
0036 __isl_give isl_constraint *isl_equality_alloc(__isl_take isl_local_space *ls);
0037 __isl_give isl_constraint *isl_inequality_alloc(__isl_take isl_local_space *ls);
0038 
0039 __isl_give isl_constraint *isl_constraint_copy(__isl_keep isl_constraint *c);
0040 __isl_null isl_constraint *isl_constraint_free(__isl_take isl_constraint *c);
0041 
0042 isl_size isl_basic_map_n_constraint(__isl_keep isl_basic_map *bmap);
0043 isl_size isl_basic_set_n_constraint(__isl_keep isl_basic_set *bset);
0044 isl_stat isl_basic_map_foreach_constraint(__isl_keep isl_basic_map *bmap,
0045     isl_stat (*fn)(__isl_take isl_constraint *c, void *user), void *user);
0046 isl_stat isl_basic_set_foreach_constraint(__isl_keep isl_basic_set *bset,
0047     isl_stat (*fn)(__isl_take isl_constraint *c, void *user), void *user);
0048 __isl_give isl_constraint_list *isl_basic_map_get_constraint_list(
0049     __isl_keep isl_basic_map *bmap);
0050 __isl_give isl_constraint_list *isl_basic_set_get_constraint_list(
0051     __isl_keep isl_basic_set *bset);
0052 int isl_constraint_is_equal(__isl_keep isl_constraint *constraint1,
0053                 __isl_keep isl_constraint *constraint2);
0054 
0055 isl_stat isl_basic_set_foreach_bound_pair(__isl_keep isl_basic_set *bset,
0056     enum isl_dim_type type, unsigned pos,
0057     isl_stat (*fn)(__isl_take isl_constraint *lower,
0058           __isl_take isl_constraint *upper,
0059           __isl_take isl_basic_set *bset, void *user), void *user);
0060 
0061 __isl_give isl_basic_map *isl_basic_map_add_constraint(
0062     __isl_take isl_basic_map *bmap, __isl_take isl_constraint *constraint);
0063 __isl_give isl_basic_set *isl_basic_set_add_constraint(
0064     __isl_take isl_basic_set *bset, __isl_take isl_constraint *constraint);
0065 __isl_give isl_map *isl_map_add_constraint(__isl_take isl_map *map,
0066     __isl_take isl_constraint *constraint);
0067 __isl_give isl_set *isl_set_add_constraint(__isl_take isl_set *set,
0068     __isl_take isl_constraint *constraint);
0069 
0070 isl_bool isl_basic_map_has_defining_equality(
0071     __isl_keep isl_basic_map *bmap, enum isl_dim_type type, int pos,
0072     __isl_give isl_constraint **c);
0073 isl_bool isl_basic_set_has_defining_equality(
0074     struct isl_basic_set *bset, enum isl_dim_type type, int pos,
0075     struct isl_constraint **constraint);
0076 isl_bool isl_basic_set_has_defining_inequalities(
0077     struct isl_basic_set *bset, enum isl_dim_type type, int pos,
0078     struct isl_constraint **lower,
0079     struct isl_constraint **upper);
0080 
0081 __isl_give isl_space *isl_constraint_get_space(
0082     __isl_keep isl_constraint *constraint);
0083 __isl_give isl_local_space *isl_constraint_get_local_space(
0084     __isl_keep isl_constraint *constraint);
0085 isl_size isl_constraint_dim(__isl_keep isl_constraint *constraint,
0086     enum isl_dim_type type);
0087 
0088 isl_bool isl_constraint_involves_dims(__isl_keep isl_constraint *constraint,
0089     enum isl_dim_type type, unsigned first, unsigned n);
0090 
0091 const char *isl_constraint_get_dim_name(__isl_keep isl_constraint *constraint,
0092     enum isl_dim_type type, unsigned pos);
0093 __isl_give isl_val *isl_constraint_get_constant_val(
0094     __isl_keep isl_constraint *constraint);
0095 __isl_give isl_val *isl_constraint_get_coefficient_val(
0096     __isl_keep isl_constraint *constraint, enum isl_dim_type type, int pos);
0097 __isl_give isl_constraint *isl_constraint_set_constant_si(
0098     __isl_take isl_constraint *constraint, int v);
0099 __isl_give isl_constraint *isl_constraint_set_constant_val(
0100     __isl_take isl_constraint *constraint, __isl_take isl_val *v);
0101 __isl_give isl_constraint *isl_constraint_set_coefficient_si(
0102     __isl_take isl_constraint *constraint,
0103     enum isl_dim_type type, int pos, int v);
0104 __isl_give isl_constraint *isl_constraint_set_coefficient_val(
0105     __isl_take isl_constraint *constraint,
0106     enum isl_dim_type type, int pos, __isl_take isl_val *v);
0107 
0108 __isl_give isl_aff *isl_constraint_get_div(__isl_keep isl_constraint *constraint,
0109     int pos);
0110 
0111 __isl_give isl_constraint *isl_constraint_negate(
0112     __isl_take isl_constraint *constraint);
0113 
0114 isl_bool isl_constraint_is_equality(__isl_keep isl_constraint *constraint);
0115 isl_bool isl_constraint_is_div_constraint(
0116     __isl_keep isl_constraint *constraint);
0117 
0118 isl_bool isl_constraint_is_lower_bound(__isl_keep isl_constraint *constraint,
0119     enum isl_dim_type type, unsigned pos);
0120 isl_bool isl_constraint_is_upper_bound(__isl_keep isl_constraint *constraint,
0121     enum isl_dim_type type, unsigned pos);
0122 
0123 __isl_give isl_basic_map *isl_basic_map_from_constraint(
0124     __isl_take isl_constraint *constraint);
0125 __isl_give isl_basic_set *isl_basic_set_from_constraint(
0126     __isl_take isl_constraint *constraint);
0127 
0128 __isl_give isl_aff *isl_constraint_get_bound(
0129     __isl_keep isl_constraint *constraint, enum isl_dim_type type, int pos);
0130 __isl_give isl_aff *isl_constraint_get_aff(
0131     __isl_keep isl_constraint *constraint);
0132 __isl_give isl_constraint *isl_equality_from_aff(__isl_take isl_aff *aff);
0133 __isl_give isl_constraint *isl_inequality_from_aff(__isl_take isl_aff *aff);
0134 
0135 int isl_constraint_plain_cmp(__isl_keep isl_constraint *c1,
0136     __isl_keep isl_constraint *c2);
0137 int isl_constraint_cmp_last_non_zero(__isl_keep isl_constraint *c1,
0138     __isl_keep isl_constraint *c2);
0139 
0140 __isl_give isl_printer *isl_printer_print_constraint(__isl_take isl_printer *p,
0141     __isl_keep isl_constraint *c);
0142 void isl_constraint_dump(__isl_keep isl_constraint *c);
0143 
0144 #if defined(__cplusplus)
0145 }
0146 #endif
0147 
0148 #endif