16 #ifndef __APXX_LINEXPR0_HH 17 #define __APXX_LINEXPR0_HH 19 #include "ap_linexpr0.h" 20 #include "ap_linearize.h" 70 linexpr0(ap_linexpr_discr_t discr=AP_LINEXPR_SPARSE,
size_t size=0);
95 linexpr0(
const std::vector<coeff>& coeffs,
const coeff& cst, ap_linexpr_discr_t discr=AP_LINEXPR_SPARSE);
207 void print(
char** name_of_dim = NULL, FILE* stream=stdout)
const;
222 bool is_real(
size_t intdim)
const;
244 #if 0 // overloaded to make constraints bool is_quasilinear() const
Whether all coefficients are scalar, except maybe the constant one.
Definition: apxx_linexpr0.hh:283
ap_linexpr0_t l
Structure managed by APRON.
Definition: apxx_linexpr0.hh:48
Dimension permutation object (ap_dimperm_t wrapper).
Definition: apxx_dimension.hh:292
Dimension change object (ap_dimchange_t wrapper).
Definition: apxx_dimension.hh:102
long hash() const
Returns a hash-code.
Definition: apxx_linexpr0.hh:450
const_iterator & operator=(const const_iterator &i)
Assigns the iterator.
Definition: apxx_linexpr0.hh:379
Definition: apxx_abstract0.hh:27
const coeff & get_coeff() const
Returns a reference to the coefficient at the current iterator position.
Definition: apxx_linexpr0.hh:400
coeff & get_cst()
Returns a (modifiable) reference to the constant coefficient.
Definition: apxx_linexpr0.hh:179
void skip_AP_DIM_MAX()
Internal use only. Skips free coefficients in sparse expressions.
Definition: apxx_linexpr0.hh:343
bool valid() const
Whether we are at a valid position (true) or past the last iterator position (false).
Definition: apxx_linexpr0.hh:425
bool is_linear() const
Whether all coefficients are scalar.
Definition: apxx_linexpr0.hh:278
~linexpr0()
Frees all space for the expression and coefficients.
Definition: apxx_linexpr0.hh:121
linexpr0 & operator=(const linexpr0 &x)
Makes a (deep) copy.
Definition: apxx_linexpr0.hh:130
friend int compare(const linexpr0 &x, const linexpr0 &y)
Lexicography ordering, terminating with constant coefficients.
Definition: apxx_linexpr0.hh:288
friend std::ostream & operator<<(std::ostream &os, const linexpr0 &s)
Printing.
Definition: apxx_linexpr0.hh:230
coeff & get_coeff() const
Returns a (modifiable) reference to the coefficient at the current iterator position.
Definition: apxx_linexpr0.hh:407
friend class texpr0_tmp
Definition: apxx_linexpr0.hh:53
coeff & operator[](ap_dim_t dim)
Returns a (modifiable) reference to the coefficient corresponding to the given dimension.
Definition: apxx_linexpr0.hh:189
void resize(size_t size)
Changes the number of coefficients in the expression. (Useful only for dense expressions....
Definition: apxx_linexpr0.hh:144
ap_linexpr0_t * l
Internal use only. Pointer to the underlying APRON structure.
Definition: apxx_linexpr0.hh:294
ap_linexpr_discr_t get_discr() const
Returns the expression type.
Definition: apxx_linexpr0.hh:173
bool operator==(const abstract0 &x, const abstract0 &y)
Definition: apxx_abstract0.hh:410
ap_linexpr_type_t get_type() const
Gets the type of the linear expression.
Definition: apxx_linexpr0.hh:273
iterator & operator=(const iterator &i)
Assigns the iterator.
Definition: apxx_linexpr0.hh:386
bool operator>(const abstract0 &x, const abstract0 &y)
Definition: apxx_abstract0.hh:434
bool is_real(size_t intdim) const
Whether only dimensions strictly smaller than intdim have a non-zero coefficient.
Definition: apxx_linexpr0.hh:268
ap_dim_t pos
Internal use only. Current index.
Definition: apxx_linexpr0.hh:295
Iterator to traverse a constant linexpr0.
Definition: apxx_linexpr0.hh:286
Iterator to traverse and mutate a linear expression.
Definition: apxx_linexpr0.hh:352
ap_dim_t get_dim() const
Returns the dimension of the coefficient at the current iterator position.
Definition: apxx_linexpr0.hh:393
void minimize()
Minimizes all coefficients.
Definition: apxx_linexpr0.hh:445
void permute_dimensions(const dimperm &d)
Applies a permutation on coefficients.
Definition: apxx_linexpr0.hh:154
size_t size() const
Returns the number of coefficients in the expression.
Definition: apxx_linexpr0.hh:165
linexpr0(ap_linexpr0_t *p)
Internal use only. Shallow copy of structure followed by a free to take ownership of expression.
Definition: apxx_linexpr0.hh:61
Level 0 arbitrary expression tree (ap_texpr0_t wrapper).
Definition: apxx_texpr0.hh:92
bool operator>=(const abstract0 &x, const abstract0 &y)
Definition: apxx_abstract0.hh:429
Coefficient (ap_coeff_t wrapper).
Definition: apxx_coeff.hh:36
iterator begin()
Returns a new iterator to traverse and mutate the linear expression.
Definition: apxx_linexpr0.hh:430
linexpr0(const linexpr0 &x)
Makes a (deep) copy.
Definition: apxx_linexpr0.hh:71
void print(char **name_of_dim=NULL, FILE *stream=stdout) const
Prints to a C stream.
Definition: apxx_linexpr0.hh:254
bool operator!=(const abstract0 &x, const abstract0 &y)
Definition: apxx_abstract0.hh:417
Inherited by most wrappers to map new and delete to malloc and free.
Definition: apxx_scalar.hh:69
bool is_integer(size_t intdim) const
Whether only dimensions greater than intdim have a non-zero coefficient.
Definition: apxx_linexpr0.hh:263
void add_dimensions(const dimchange &d)
Adds some dimensions, shifting coefficients if needed.
Definition: apxx_linexpr0.hh:149
friend bool equal(const linexpr0 &x, const linexpr0 &y)
Structural, syntactical equality.
Definition: apxx_linexpr0.hh:294
iterator(ap_linexpr0_t *l)
Internal use only.
Definition: apxx_linexpr0.hh:367
bool operator<=(const abstract0 &x, const abstract0 &y)
Definition: apxx_abstract0.hh:422
Represents a dimension (i.e., variable by index) in an expression tree.
Definition: apxx_texpr0.hh:33
const ap_linexpr0_t * get_ap_linexpr0_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition: apxx_linexpr0.hh:460
Level 0 linear expression (ap_linexpr0_t wrapper).
Definition: apxx_linexpr0.hh:44
void next()
Moves the iterator to the following position.
Definition: apxx_linexpr0.hh:414
bool operator<(const abstract0 &x, const abstract0 &y)
Definition: apxx_abstract0.hh:439
const_iterator(ap_linexpr0_t *l)
Internal use only.
Definition: apxx_linexpr0.hh:349
void operator++()
Moves the iterator to the following position.
Definition: apxx_linexpr0.hh:420