16 #ifndef __APXX_TEXPR1_HH 17 #define __APXX_TEXPR1_HH 19 #include "ap_texpr1.h" 52 void init_from(ap_environment_t* e, ap_texpr0_t* x);
99 template<
class T>
texpr1(
const T& x);
258 ap_texpr_op_t
get_op()
const;
324 size_t depth()
const;
360 void print(FILE* stream=stdout)
const;
394 iterator(ap_texpr0_t* t, ap_environment_t* e);
411 iterator(
const iterator& i);
456 void set_var(
const var& v)
const;
470 ap_texpr_op_t&
get_op()
const;
576 void init_from(ap_environment_t* e, ap_texpr0_t* x);
663 builder(ap_texpr_op_t op,
const builder& argA, ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir);
666 builder(ap_texpr_op_t op,
const builder& argA,
const builder& argB, ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir);
732 ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir);
750 ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir);
754 ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir);
758 ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir);
762 ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir);
766 ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir);
770 ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir);
774 ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir);
778 ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir);
794 ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir);
834 void print(FILE* stream=stdout)
const;
876 size_t depth()
const;
const_iterator left() const
Constructs a const_iterator to the only of left sub-expression of an operator node.
Definition: apxx_texpr1.hh:391
texpr1(const texpr1 &x, const var &src, const texpr1 &dst)
Makes a (deep) copy of x and substitutes every occurrence of the src variable name with a fresh copy ...
Definition: apxx_texpr1.hh:93
texpr0::const_iterator get_texpr0() const
Returns a constant iterator at the root of the underlying texpr0.
Definition: apxx_texpr1.hh:328
const_iterator root() const
Returns a new iterator at the root of a constant expression tree.
Definition: apxx_texpr1.hh:296
Iterators to traverse and mutate an expression tree.
Definition: apxx_texpr0.hh:413
const_iterator right() const
Constructs a const_iterator to the right sub-expression argument of a binary operator node...
Definition: apxx_texpr1.hh:398
bool equal(const texpr1 &x) const
Whether two expressions are syntactically, structurally equal.
Definition: apxx_texpr1.hh:427
ap_texpr_rdir_t get_rdir() const
Returns the rounding direction of an operator node.
Definition: apxx_texpr1.hh:368
texpr0::builder pow(const texpr0::builder &a, const texpr0::builder &b, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition: apxx_texpr0.hh:807
texpr0::builder ceil(const texpr0::builder &a)
Definition: apxx_texpr0.hh:832
Definition: apxx_abstract0.hh:27
ap_texpr1_t l
Structure managed by APRON.
Definition: apxx_texpr1.hh:46
bool is_interval_polynomial() const
Whether the expression is polynomial and there is no rounding.
Definition: apxx_texpr1.hh:464
Variable name (ap_var_t wrapper).
Definition: apxx_var.hh:39
texpr0::builder cast(const texpr0::builder &a, ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition: apxx_texpr0.hh:821
texpr1(ap_texpr1_t *x)
Internal use only. Shallow copy.
Definition: apxx_texpr1.hh:31
texpr0::builder sub(const texpr0::builder &a, const texpr0::builder &b, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition: apxx_texpr0.hh:779
texpr0::builder add(const texpr0::builder &a, const texpr0::builder &b, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition: apxx_texpr0.hh:772
ap_texpr_rtype_t get_rtype() const
Returns the destination type of an operator node.
Definition: apxx_texpr1.hh:362
texpr0::builder neg(const texpr0::builder &a, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition: apxx_texpr0.hh:814
texpr0::builder operator%(const texpr0::builder &a, const texpr0::builder &b)
Definition: apxx_texpr0.hh:879
const_iterator & operator=(const const_iterator &i)
Resets the const_iterator at position i.
Definition: apxx_texpr1.hh:378
size_t size() const
Returns the number of operator nodes in the expression tree.
Definition: apxx_texpr1.hh:443
texpr0::builder operator-(const texpr0::builder &a)
Definition: apxx_texpr0.hh:854
bool is_scalar() const
Whether all occurring constants are scalar.
Definition: apxx_texpr1.hh:474
friend std::ostream & operator<<(std::ostream &os, const const_iterator &s)
Printing.
Definition: apxx_texpr1.hh:411
texpr0::builder operator^(const texpr0::builder &a, const texpr0::builder &b)
Definition: apxx_texpr0.hh:884
Temporary expression nodes used when constructing a texpr1.
Definition: apxx_texpr1.hh:561
texpr0::builder trunc(const texpr0::builder &a)
Definition: apxx_texpr0.hh:837
ap_texpr_op_t get_op() const
Returns the operator kind of an operator node.
Definition: apxx_texpr1.hh:356
texpr0::builder binary(ap_texpr_op_t op, const texpr0::builder &a, const texpr0::builder &b, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition: apxx_texpr0.hh:764
texpr0::builder div(const texpr0::builder &a, const texpr0::builder &b, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition: apxx_texpr0.hh:793
void extend_environment(const environment &e)
Extends the environment of the expression.
Definition: apxx_texpr1.hh:175
Iterators to traverse a constant expression tree.
Definition: apxx_texpr0.hh:211
texpr0::builder mod(const texpr0::builder &a, const texpr0::builder &b, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition: apxx_texpr0.hh:800
Level 1 environment (ap_environment_t wrapper).
Definition: apxx_environment.hh:51
texpr0::builder mul(const texpr0::builder &a, const texpr0::builder &b, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition: apxx_texpr0.hh:786
ap_texpr1_t l
Definition: apxx_texpr1.hh:187
const_iterator(ap_texpr1_t *l)
Internal use only.
Definition: apxx_texpr1.hh:307
texpr0::builder floor(const texpr0::builder &a)
Definition: apxx_texpr0.hh:827
const coeff & get_coeff() const
Returns a reference to the coefficient of a constant node.
Definition: apxx_texpr1.hh:338
dimperm operator*(const dimperm &x, const dimperm &y)
Definition: apxx_dimension.hh:393
bool has_var(const var &v) const
Whether the given variable name occurs in the expression.
Definition: apxx_texpr1.hh:448
Level 1 linear expression (ap_linexpr1_t wrapper).
Definition: apxx_linexpr1.hh:39
bool is_interval_polyfrac() const
Whether the expression is a polynomial fraction and there is no rounding.
Definition: apxx_texpr1.hh:469
Level 0 arbitrary expression tree (ap_texpr0_t wrapper).
Definition: apxx_texpr0.hh:92
Coefficient (ap_coeff_t wrapper).
Definition: apxx_coeff.hh:36
ap_texpr1_t * get_ap_texpr1_t()
Returns a pointer to the internal APRON object stored in *this.
Definition: apxx_texpr1.hh:483
void print(FILE *stream=stdout) const
Prints to a C stream.
Definition: apxx_texpr1.hh:418
Full interval (]-oo,+oo[) or domain, to simplify initialisations and assignments. ...
Definition: apxx_interval.hh:27
bool is_interval_linear() const
Whether the expression is linear and there is no rounding.
Definition: apxx_texpr1.hh:459
texpr0::builder sqrt(const texpr0::builder &a, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition: apxx_texpr0.hh:842
bool is_interval_cst() const
Whether the expression is constant (i.e., has no dimension leaves).
Definition: apxx_texpr1.hh:454
Interval (ap_interval_t wrapper).
Definition: apxx_interval.hh:47
Inherited by most wrappers to map new and delete to malloc and free.
Definition: apxx_scalar.hh:69
void substitute(const var &src, const texpr1 &dst)
Substitutes each occurrence of src with (a fresh copy of) dst.
Definition: apxx_texpr1.hh:257
const var & get_var() const
Returns a (unmodifiable) reference to the variable name of a dimension node.
Definition: apxx_texpr1.hh:344
void init_from(ap_environment_t *e, ap_texpr0_t *x)
Internal use only. Shallow copy.
Definition: apxx_texpr1.hh:19
const_iterator child() const
Constructs a const_iterator to the only or left sub-expression of an operator node.
Definition: apxx_texpr1.hh:384
A fraction with native int coefficients, to simplify initialisations and assignments.
Definition: apxx_scalar.hh:41
texpr1 & operator=(const texpr1 &x)
Makes a (deep) copy of the expression.
Definition: apxx_texpr1.hh:118
size_t depth() const
Returns the depth of the expression tree (counting only operator nodes).
Definition: apxx_texpr1.hh:433
~texpr1()
Frees the memory occupied by the expression and decrements the reference count of the environment...
Definition: apxx_texpr1.hh:108
Iterators to traverse and mutate an expression tree.
Definition: apxx_texpr1.hh:386
Iterators to traverse a constant expression tree.
Definition: apxx_texpr1.hh:183
texpr0::builder operator+(const texpr0::builder &a)
Definition: apxx_texpr0.hh:849
Level 1 arbitrary expression tree (ap_texpr1_t wrapper).
Definition: apxx_texpr1.hh:42
ap_texpr_discr_t get_discr() const
Returns the node kind.
Definition: apxx_texpr1.hh:333
texpr0::builder operator/(const texpr0::builder &a, const texpr0::builder &b)
Definition: apxx_texpr0.hh:874
ap_dim_t get_dim() const
Returns the dimension of a dimension node.
Definition: apxx_texpr1.hh:350
Level 1 arbitrary constraint (ap_tcons1_t wrapper).
Definition: apxx_tcons1.hh:39
bool is_zero() const
Whether the expression is a single coefficient node with 0 value.
Definition: apxx_texpr1.hh:438
Temporary expression nodes used when constructing a texpr0.
Definition: apxx_texpr0.hh:581
texpr0::builder unary(ap_texpr_op_t op, const texpr0::builder &a, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition: apxx_texpr0.hh:757
ap_texpr1_t l
Definition: apxx_texpr1.hh:567
environment get_environment() const
Returns (a copy of) the environment associated with the expression.
Definition: apxx_texpr1.hh:323
texpr1 & operator=(const const_iterator &x)
Makes a (deep) copy of the expression.
Definition: apxx_texpr1.hh:136
Scalar (ap_scalar_t wrapper).
Definition: apxx_scalar.hh:89