18inline void texpr1::init_from(ap_environment_t* e, ap_texpr0_t* x)
 
   24inline void texpr1::init_from(ap_texpr1_t* x)
 
   30inline texpr1::texpr1(ap_texpr1_t* x)
 
   35inline texpr1::texpr1(
const texpr1& x)
 
   37  init_from(ap_texpr1_copy(
const_cast<ap_texpr1_t*
>(&x.l)));
 
   40inline texpr1::texpr1(
const builder& x)
 
   42  init_from(ap_texpr1_copy(
const_cast<ap_texpr1_t*
>(x.get_ap_texpr1_t())));
 
   45inline texpr1::texpr1(
const const_iterator& x)
 
   47  init_from(ap_texpr1_copy(
const_cast<ap_texpr1_t*
>(x.get_ap_texpr1_t())));
 
   50inline texpr1::texpr1(
const environment& e, 
const var& v)
 
   53    ap_texpr1_var(
const_cast<ap_environment_t*
>(e.get_ap_environment_t()), v.get_ap_var_t());
 
   54  if (!ll) 
throw(std::invalid_argument(
"apron::texpr1::texpr1(const environment&, const var&) variable not in environment"));
 
   58inline texpr1::texpr1(
const environment& e, 
const texpr0& x)
 
   60  init_from(ap_environment_copy(
const_cast<ap_environment_t*
>(e.get_ap_environment_t())),
 
   61            ap_texpr0_copy(
const_cast<ap_texpr0_t*
>(x.get_ap_texpr0_t())));
 
   64inline texpr1::texpr1(
const environment& e, 
const texpr0::const_iterator& x)
 
   66  init_from(ap_environment_copy(
const_cast<ap_environment_t*
>(e.get_ap_environment_t())),
 
   67            ap_texpr0_copy(
const_cast<ap_texpr0_t*
>(x.get_ap_texpr0_t())));
 
   70inline texpr1::texpr1(
const environment& e, 
const texpr0::builder& c)
 
   72  init_from(ap_environment_copy(
const_cast<ap_environment_t*
>(e.get_ap_environment_t())),
 
   73            ap_texpr0_copy(
const_cast<ap_texpr0_t*
>(c.get_ap_texpr0_t())));
 
   77inline texpr1::texpr1(
const linexpr1& l)
 
   79  init_from(ap_texpr1_from_linexpr1(
const_cast<ap_linexpr1_t*
>(l.get_ap_linexpr1_t())));
 
   82inline texpr1::texpr1(
const texpr1& x, 
const environment& e)
 
   85    ap_texpr1_extend_environment(
const_cast<ap_texpr1_t*
>(&x.l),
 
   86                                 const_cast<ap_environment_t*
>(e.get_ap_environment_t()));
 
   88    throw std::invalid_argument(
"apron::texpr1::texpr1(const texpr1&, const environment&) not a super-environment");
 
   92inline texpr1::texpr1(
const texpr1& x, 
const var& src, 
const texpr1& dst)
 
   95    ap_texpr1_substitute(
const_cast<ap_texpr1_t*
>(&x.l),
 
   96                         const_cast<ap_var_t
>(src.get_ap_var_t()),
 
   97                         const_cast<ap_texpr1_t*
>(&dst.l));
 
   99    throw std::invalid_argument(
"apron::texpr1::texpr1(const texpr1&, const var&, const texpr1&)");
 
  107inline texpr1::~texpr1()
 
  109  ap_environment_free(l.env);
 
  110  ap_texpr0_free(l.texpr0);
 
  117inline texpr1& texpr1::operator=(
const texpr1& x)
 
  119  ap_texpr1_t* c = ap_texpr1_copy(
const_cast<ap_texpr1_t*
>(&x.l));
 
  120  ap_environment_free(l.env);
 
  121  ap_texpr0_free(l.texpr0);
 
  126inline texpr1& texpr1::operator=(
const builder& x)
 
  128  ap_texpr1_t* c = ap_texpr1_copy(
const_cast<ap_texpr1_t*
>(x.get_ap_texpr1_t()));
 
  129  ap_environment_free(l.env);
 
  130  ap_texpr0_free(l.texpr0);
 
  135inline texpr1& texpr1::operator=(
const const_iterator& x)
 
  137  ap_texpr1_t* c = ap_texpr1_copy(
const_cast<ap_texpr1_t*
>(x.get_ap_texpr1_t()));
 
  138  ap_environment_free(l.env);
 
  139  ap_texpr0_free(l.texpr0);
 
  144inline texpr1& texpr1::operator= (
const linexpr1& x)
 
  146  ap_environment_free(l.env);
 
  147  ap_texpr0_free(l.texpr0);
 
  148  init_from(ap_texpr1_from_linexpr1(
const_cast<ap_linexpr1_t*
>(x.get_ap_linexpr1_t())));
 
  159inline std::ostream& 
operator<< (std::ostream& os, 
const texpr1& s)
 
  161  return os << s.root();
 
 
  164inline void texpr1::print(FILE* stream)
 const 
  166  root().print(stream);
 
  174inline void texpr1::extend_environment(
const environment& e)
 
  177    ap_texpr1_extend_environment_with(&l,
 
  178                                      const_cast<ap_environment_t*
>(e.get_ap_environment_t()));
 
  180    throw std::invalid_argument(
"apron::texpr1::extend_environment(const environment&) not a super-environment");
 
  187inline environment texpr1::get_environment()
 const 
  189  return root().get_environment();
 
  192inline texpr0::const_iterator texpr1::get_texpr0()
 const 
  194  return root().get_texpr0();
 
  197inline texpr0::iterator texpr1::get_texpr0()
 
  199  return root().get_texpr0();
 
  202inline bool texpr1::equal(
const texpr1& x)
 const 
  204  return root().equal(x);
 
  207inline size_t texpr1::depth()
 const 
  209  return root().depth();
 
  212inline bool texpr1::is_zero()
 const 
  214  return root().is_zero();
 
  217inline size_t texpr1::size()
 const 
  219  return root().size();
 
  222inline bool texpr1::has_var(
const var& v)
 const 
  224  return root().has_var(v);
 
  227inline bool texpr1::is_interval_cst()
 const 
  229  return root().is_interval_cst();
 
  232inline bool texpr1::is_interval_linear()
 const 
  234  return root().is_interval_linear();
 
  237inline bool texpr1::is_interval_polynomial()
 const 
  239  return root().is_interval_polynomial();
 
  242inline bool texpr1::is_interval_polyfrac()
 const 
  244  return root().is_interval_polyfrac();
 
  247inline bool texpr1::is_scalar()
 const 
  249  return root().is_scalar();
 
  256inline void texpr1::substitute(
const var& src, 
const texpr1& dst)
 
  259    ap_texpr1_substitute_with(
const_cast<ap_texpr1_t*
>(&l),
 
  260                              const_cast<ap_var_t
>(src.get_ap_var_t()),
 
  261                              const_cast<ap_texpr1_t*
>(&dst.l));
 
  263    throw std::invalid_argument(
"apron::texpr1::substitute(const var&, const texpr1&)");
 
  271inline ap_texpr1_t* texpr1::get_ap_texpr1_t()
 
  276inline const ap_texpr1_t* texpr1::get_ap_texpr1_t()
 const 
  295inline texpr1::const_iterator texpr1::root()
 const 
  297  return const_iterator(
const_cast<ap_texpr1_t*
>(&l));
 
  300inline texpr1::const_iterator::const_iterator(ap_texpr0_t* ll, ap_environment_t* ee)
 
  306inline texpr1::const_iterator::const_iterator(ap_texpr1_t* l)
 
  310inline texpr1::const_iterator::const_iterator(
const texpr1& e)
 
  311  : l(*e.get_ap_texpr1_t())
 
  314inline texpr1::const_iterator::const_iterator(
const const_iterator& i)
 
  322inline environment texpr1::const_iterator::get_environment()
 const 
  324  return ap_environment_copy(l.env);
 
  327inline texpr0::const_iterator texpr1::const_iterator::get_texpr0()
 const 
  332inline ap_texpr_discr_t texpr1::const_iterator::get_discr()
 const 
  334  return l.texpr0->discr;
 
  337inline const coeff& texpr1::const_iterator::get_coeff()
 const 
  339  if (l.texpr0->discr!=AP_TEXPR_CST) 
throw(bad_discriminant(
"apron::texpr1::const_iterator::get_coeff()"));
 
  340  return reinterpret_cast<coeff&
>(l.texpr0->val.cst);
 
  343inline const var& texpr1::const_iterator::get_var()
 const 
  345  if (l.texpr0->discr!=AP_TEXPR_DIM) 
throw(bad_discriminant(
"apron::texpr1::const_iterator::get_var()"));
 
  346  return *
reinterpret_cast<var*
>(&l.env->var_of_dim[l.texpr0->val.dim]);
 
  349inline ap_dim_t texpr1::const_iterator::get_dim()
 const 
  351  if (l.texpr0->discr!=AP_TEXPR_DIM) 
throw(bad_discriminant(
"apron::texpr1::const_iterator::get_dim()"));
 
  352  return l.texpr0->val.dim;
 
  355inline ap_texpr_op_t texpr1::const_iterator::get_op()
 const 
  357  if (l.texpr0->discr!=AP_TEXPR_NODE) 
throw(bad_discriminant(
"apron::texpr1::const_iterator::get_op()"));
 
  358  return l.texpr0->val.node->op;
 
  361inline ap_texpr_rtype_t texpr1::const_iterator::get_rtype()
 const 
  363  if (l.texpr0->discr!=AP_TEXPR_NODE) 
throw(bad_discriminant(
"apron::texpr1::const_iterator::get_type()"));
 
  364  return l.texpr0->val.node->type;
 
  367inline ap_texpr_rdir_t texpr1::const_iterator::get_rdir()
 const 
  369  if (l.texpr0->discr!=AP_TEXPR_NODE) 
throw(bad_discriminant(
"apron::texpr1::const_iterator::get_dir()"));
 
  370  return l.texpr0->val.node->dir;
 
  377inline texpr1::const_iterator& texpr1::const_iterator::operator=(
const const_iterator& i)
 
  383inline texpr1::const_iterator texpr1::const_iterator::child()
 const 
  385  if (l.texpr0->discr!=AP_TEXPR_NODE) 
throw(bad_discriminant(
"apron::texpr1::const_iterator::child()"));
 
  386  if (!l.texpr0->val.node->exprA) 
throw(std::out_of_range(
"apron::texpr1::const_iterator::child()"));
 
  387  return const_iterator(l.texpr0->val.node->exprA, l.env);
 
  390inline texpr1::const_iterator texpr1::const_iterator::left()
 const 
  392  if (l.texpr0->discr!=AP_TEXPR_NODE) 
throw(bad_discriminant(
"apron::texpr1::const_iterator::left()"));
 
  393  if (!l.texpr0->val.node->exprA) 
throw(std::out_of_range(
"apron::texpr1::const_iterator::left()"));
 
  394  return const_iterator(l.texpr0->val.node->exprA, l.env);
 
  397inline texpr1::const_iterator texpr1::const_iterator::right()
 const 
  399  if (l.texpr0->discr!=AP_TEXPR_NODE) 
throw(bad_discriminant(
"apron::texpr1::const_iterator::right()"));
 
  400  if (!l.texpr0->val.node->exprB) 
throw(std::out_of_range(
"apron::texpr1::const_iterator::right()"));
 
  401  return const_iterator(l.texpr0->val.node->exprB, l.env);
 
  410inline std::ostream& 
operator<< (std::ostream& os, 
const texpr1::const_iterator& s)
 
  412  ap_texpr1_t* x = 
const_cast<ap_texpr1_t*
>(s.get_ap_texpr1_t());
 
 
  417inline void texpr1::const_iterator::print(FILE* stream)
 const 
  419  ap_texpr1_fprint(stream, 
const_cast<ap_texpr1_t*
>(&l));
 
  426inline bool texpr1::const_iterator::equal(
const texpr1& x)
 const 
  428  return ap_texpr1_equal(
const_cast<ap_texpr1_t*
>(&l),
 
  429                         const_cast<ap_texpr1_t*
>(x.get_ap_texpr1_t()));
 
  432inline size_t texpr1::const_iterator::depth()
 const 
  434  return ap_texpr0_depth(
const_cast<ap_texpr0_t*
>(l.texpr0));
 
  437inline bool texpr1::const_iterator::is_zero()
 const 
  439  return l.texpr0->discr==AP_TEXPR_CST && ap_coeff_zero(&
const_cast<ap_texpr0_t*
>(l.texpr0)->val.cst);
 
  442inline size_t texpr1::const_iterator::size()
 const 
  444  return ap_texpr0_size(
const_cast<ap_texpr0_t*
>(l.texpr0));
 
  447inline bool texpr1::const_iterator::has_var(
const var& v)
 const 
  449  return ap_texpr1_has_var(
const_cast<ap_texpr1_t*
>(&l),
 
  450                           const_cast<ap_var_t
>(v.get_ap_var_t()));
 
  453inline bool texpr1::const_iterator::is_interval_cst()
 const 
  455  return ap_texpr1_is_interval_cst(
const_cast<ap_texpr1_t*
>(&l));
 
  458inline bool texpr1::const_iterator::is_interval_linear()
 const 
  460  return ap_texpr1_is_interval_linear(
const_cast<ap_texpr1_t*
>(&l));
 
  463inline bool texpr1::const_iterator::is_interval_polynomial()
 const 
  465  return ap_texpr1_is_interval_polynomial(
const_cast<ap_texpr1_t*
>(&l));
 
  468inline bool texpr1::const_iterator::is_interval_polyfrac()
 const 
  470  return ap_texpr1_is_interval_polyfrac(
const_cast<ap_texpr1_t*
>(&l));
 
  473inline bool texpr1::const_iterator::is_scalar()
 const 
  475  return ap_texpr1_is_scalar(
const_cast<ap_texpr1_t*
>(&l));
 
  482inline ap_texpr1_t* texpr1::const_iterator::get_ap_texpr1_t()
 
  487inline const ap_texpr1_t* texpr1::const_iterator::get_ap_texpr1_t()
 const 
  496inline texpr1::iterator texpr1::root()
 
  501inline texpr1::iterator::iterator(ap_texpr0_t* l, ap_environment_t* e)
 
  502  : texpr1::const_iterator(l,e)
 
  505inline texpr1::iterator::iterator(ap_texpr1_t* l)
 
  506  : texpr1::const_iterator(l)
 
  510inline texpr1::iterator::iterator(texpr1& e)
 
  511  : texpr1::const_iterator(e.get_ap_texpr1_t())
 
  514inline texpr1::iterator::iterator(
const iterator& i)
 
  515  : texpr1::const_iterator(i)
 
  523inline texpr1::iterator& texpr1::iterator::operator= (
const builder& c)
 
  525  ap_texpr0_t* cc = ap_texpr0_copy(c.get_ap_texpr1_t()->texpr0);
 
  526  ap_texpr0_clear(l.texpr0);
 
  536inline texpr0::iterator texpr1::iterator::get_texpr0()
 const 
  542inline coeff& texpr1::iterator::get_coeff()
 const 
  544  if (l.texpr0->discr!=AP_TEXPR_CST) 
throw(bad_discriminant(
"apron::texpr1::iterator::get_coeff()"));
 
  545  return reinterpret_cast<coeff&
>(l.texpr0->val.cst);
 
  548inline void texpr1::iterator::set_var(
const var& v)
 const 
  550  if (l.texpr0->discr!=AP_TEXPR_DIM) 
throw(bad_discriminant(
"apron::texpr1::iterator::set_var(const var&)"));
 
  551  ap_dim_t d = ap_environment_dim_of_var(l.env, v.get_ap_var_t());
 
  552  if (d==AP_DIM_MAX) 
throw(std::invalid_argument(
"apron::texpr1::iterator::set_var(const var&) variable not in environment"));
 
  553  l.texpr0->val.dim = d;
 
  556inline ap_dim_t& texpr1::iterator::get_dim()
 const 
  558  if (l.texpr0->discr!=AP_TEXPR_DIM) 
throw(bad_discriminant(
"apron::texpr1::iterator::get_dim()"));
 
  559  return l.texpr0->val.dim;
 
  562inline ap_texpr_op_t& texpr1::iterator::get_op()
 const 
  564  if (l.texpr0->discr!=AP_TEXPR_NODE) 
throw(bad_discriminant(
"apron::texpr1::iterator::get_op()"));
 
  565  return l.texpr0->val.node->op;
 
  568inline ap_texpr_rtype_t& texpr1::iterator::get_rtype()
 const 
  570  if (l.texpr0->discr!=AP_TEXPR_NODE) 
throw(bad_discriminant(
"apron::texpr1::iterator::get_type()"));
 
  571  return l.texpr0->val.node->type;
 
  574inline ap_texpr_rdir_t& texpr1::iterator::get_rdir()
 const 
  576  if (l.texpr0->discr!=AP_TEXPR_NODE) 
throw(bad_discriminant(
"apron::texpr1::iterator::get_dir()"));
 
  577  return l.texpr0->val.node->dir;
 
  584inline texpr1::iterator& texpr1::iterator::operator=(
const iterator& i)
 
  590inline texpr1::iterator texpr1::iterator::child()
 const 
  592  if (l.texpr0->discr!=AP_TEXPR_NODE) 
throw(bad_discriminant(
"apron::texpr1::iterator::child()"));
 
  593  if (!l.texpr0->val.node->exprA) 
throw(std::out_of_range(
"apron::texpr1::iterator::child()"));
 
  594  return iterator(l.texpr0->val.node->exprA, l.env);
 
  597inline texpr1::iterator texpr1::iterator::left()
 const 
  599  if (l.texpr0->discr!=AP_TEXPR_NODE) 
throw(bad_discriminant(
"apron::texpr1::iterator::left()"));
 
  600  if (!l.texpr0->val.node->exprA) 
throw(std::out_of_range(
"apron::texpr1::iterator::left()"));
 
  601  return iterator(l.texpr0->val.node->exprA, l.env);
 
  604inline texpr1::iterator texpr1::iterator::right()
 const 
  606  if (l.texpr0->discr!=AP_TEXPR_NODE) 
throw(bad_discriminant(
"apron::texpr1::iterator::right()"));
 
  607  if (!l.texpr0->val.node->exprB) 
throw(std::out_of_range(
"apron::texpr1::iterator::right()"));
 
  608  return iterator(l.texpr0->val.node->exprB, l.env);
 
  615inline ap_texpr1_t* texpr1::iterator::get_ap_texpr1_t()
 
  620inline const ap_texpr1_t* texpr1::iterator::get_ap_texpr1_t()
 const 
  630inline void texpr1::builder::init_from(ap_texpr1_t* x)
 
  633  switch (x->texpr0->discr) {
 
  634  case AP_TEXPR_DIM: l.texpr0 = ap_texpr0_dim(x->texpr0->val.dim); 
break;
 
  635  case AP_TEXPR_CST: l.texpr0 = ap_texpr0_cst(
const_cast<ap_coeff_t*
>(&x->texpr0->val.cst)); 
break;
 
  637    l.texpr0 = ap_texpr0_node(x->texpr0->val.node->op,
 
  638                              x->texpr0->val.node->type, x->texpr0->val.node->dir,
 
  639                              x->texpr0->val.node->exprA, x->texpr0->val.node->exprB);
 
  641  default: 
throw std::invalid_argument(
"apron::texpr1::builder::init_from(ap_texpr1_t*) invalid discriminant");
 
  645inline void texpr1::builder::init_from(ap_environment_t* e, ap_texpr0_t* x)
 
  653inline texpr1::builder::builder(ap_texpr1_t* x)
 
  658inline texpr1::builder::builder(
const builder& x)
 
  660  init_from(
const_cast<ap_texpr1_t*
>(&x.l));
 
  663inline texpr1::builder::builder(
const const_iterator& x)
 
  665  init_from(
const_cast<ap_texpr1_t*
>(x.get_ap_texpr1_t()));
 
  668inline texpr1::builder::builder(
const texpr1& x)
 
  670  init_from(
const_cast<ap_texpr1_t*
>(x.get_ap_texpr1_t()));
 
  673inline texpr1::builder::builder(
const environment& e, 
const texpr0::builder& b)
 
  675  init_from(
const_cast<ap_environment_t*
>(e.get_ap_environment_t()),
 
  676            const_cast<ap_texpr0_t*
>(b.get_ap_texpr0_t()));
 
  679inline texpr1::builder::builder(
const environment& e, 
const texpr0::const_iterator& b)
 
  681  init_from(
const_cast<ap_environment_t*
>(e.get_ap_environment_t()),
 
  682            const_cast<ap_texpr0_t*
>(b.get_ap_texpr0_t()));
 
  685inline texpr1::builder::builder(
const environment& e, 
const texpr0& b)
 
  687  init_from(
const_cast<ap_environment_t*
>(e.get_ap_environment_t()),
 
  688            const_cast<ap_texpr0_t*
>(b.get_ap_texpr0_t()));
 
  691inline texpr1::builder::builder(
const environment& e, 
const coeff& x)
 
  693  l.env = 
const_cast<ap_environment_t*
>(e.get_ap_environment_t());
 
  694  l.texpr0 = ap_texpr0_cst(
const_cast<ap_coeff_t*
>(x.get_ap_coeff_t()));
 
  697inline texpr1::builder::builder(
const environment& e, 
const scalar& x)
 
  699  l.env = 
const_cast<ap_environment_t*
>(e.get_ap_environment_t());
 
  700  l.texpr0 = ap_texpr0_cst_scalar(
const_cast<ap_scalar_t*
>(x.get_ap_scalar_t()));
 
  703inline texpr1::builder::builder(
const environment& e, 
const mpq_class& x)
 
  705  l.env = 
const_cast<ap_environment_t*
>(e.get_ap_environment_t());
 
  706  l.texpr0 = ap_texpr0_cst_scalar_mpq(
const_cast<mpq_class&
>(x).get_mpq_t());
 
  709inline texpr1::builder::builder(
const environment& e, mpfr_t x)
 
  711  l.env = 
const_cast<ap_environment_t*
>(e.get_ap_environment_t());
 
  712  l.texpr0 = ap_texpr0_cst_scalar_mpfr(x);
 
  715inline texpr1::builder::builder(
const environment& e, 
int x)
 
  717  l.env = 
const_cast<ap_environment_t*
>(e.get_ap_environment_t());
 
  718  l.texpr0 = ap_texpr0_cst_scalar_int(x);
 
  721inline texpr1::builder::builder(
const environment& e, 
long x)
 
  723  l.env = 
const_cast<ap_environment_t*
>(e.get_ap_environment_t());
 
  724  l.texpr0 = ap_texpr0_cst_scalar_int(x);
 
  727inline texpr1::builder::builder(
const environment& e, 
double x)
 
  729  l.env = 
const_cast<ap_environment_t*
>(e.get_ap_environment_t());
 
  730  l.texpr0 = ap_texpr0_cst_scalar_double(x);
 
  733inline texpr1::builder::builder(
const environment& e, 
const frac& x)
 
  735  l.env = 
const_cast<ap_environment_t*
>(e.get_ap_environment_t());
 
  736  l.texpr0 = ap_texpr0_cst_scalar_frac(x.num, x.den);
 
  739inline texpr1::builder::builder(
const environment& e, 
const interval& x)
 
  741  l.env = 
const_cast<ap_environment_t*
>(e.get_ap_environment_t());
 
  742  l.texpr0 = ap_texpr0_cst_interval(
const_cast<ap_interval_t*
>(x.get_ap_interval_t()));
 
  745inline texpr1::builder::builder(
const environment& e, 
const scalar& inf, 
const scalar& sup)
 
  747  l.env = 
const_cast<ap_environment_t*
>(e.get_ap_environment_t());
 
  748  l.texpr0 = ap_texpr0_cst_interval_scalar(
const_cast<ap_scalar_t*
>(inf.get_ap_scalar_t()),
 
  749                                          const_cast<ap_scalar_t*
>(sup.get_ap_scalar_t()));
 
  752inline texpr1::builder::builder(
const environment& e, 
const mpq_class& inf, 
const mpq_class& sup)
 
  754  l.env = 
const_cast<ap_environment_t*
>(e.get_ap_environment_t());
 
  755  l.texpr0 = ap_texpr0_cst_interval_mpq(
const_cast<mpq_class&
>(inf).get_mpq_t(),
 
  756                                       const_cast<mpq_class&
>(sup).get_mpq_t());
 
  759inline texpr1::builder::builder(
const environment& e, mpfr_t inf, mpfr_t sup)
 
  761  l.env = 
const_cast<ap_environment_t*
>(e.get_ap_environment_t());
 
  762  l.texpr0 = ap_texpr0_cst_interval_mpfr(inf,sup);
 
  765inline texpr1::builder::builder(
const environment& e, 
int inf, 
int sup)
 
  767  l.env = 
const_cast<ap_environment_t*
>(e.get_ap_environment_t());
 
  768  l.texpr0 = ap_texpr0_cst_interval_int(inf, sup);
 
  771inline texpr1::builder::builder(
const environment& e, 
long inf, 
long sup)
 
  773  l.env = 
const_cast<ap_environment_t*
>(e.get_ap_environment_t());
 
  774  l.texpr0 = ap_texpr0_cst_interval_int(inf, sup);
 
  777inline texpr1::builder::builder(
const environment& e, 
double inf, 
double sup)
 
  779  l.env = 
const_cast<ap_environment_t*
>(e.get_ap_environment_t());
 
  780  l.texpr0 = ap_texpr0_cst_interval_double(inf, sup);
 
  783inline texpr1::builder::builder(
const environment& e, 
const frac& inf, 
const frac& sup)
 
  785  l.env = 
const_cast<ap_environment_t*
>(e.get_ap_environment_t());
 
  786  l.texpr0 = ap_texpr0_cst_interval_frac(inf.num, inf.den, sup.num, sup.den);
 
  789inline texpr1::builder::builder(
const environment& e, top t)
 
  791  l.env = 
const_cast<ap_environment_t*
>(e.get_ap_environment_t());
 
  792  l.texpr0 = ap_texpr0_cst_interval_top();
 
  795inline texpr1::builder::builder(
const environment& e, 
const var& v)
 
  797  l.env = 
const_cast<ap_environment_t*
>(e.get_ap_environment_t());
 
  798  ap_dim_t d = ap_environment_dim_of_var(l.env, v.get_ap_var_t());
 
  800    throw std::invalid_argument(
"texpr1::builder::builder(const environment&, const var&) variable not in environment");
 
  801  l.texpr0 = ap_texpr0_dim(d);
 
  804inline texpr1::builder::builder(ap_texpr_op_t op, 
const builder& argA, ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir)
 
  806  if (!ap_texpr_is_unop(op))
 
  807    throw std::invalid_argument(
"apron::texpr1::builder::builder(ap_texpr_op_t, const builder&, ap_texpr_rtype_t, ap_texpr_rdir_t) not a unary operator");
 
  809  l.texpr0 =  ap_texpr0_unop(op,
 
  810                             const_cast<ap_texpr0_t*
>(argA.l.texpr0),
 
  814inline texpr1::builder::builder(ap_texpr_op_t op, 
const builder& argA, 
const builder& argB, ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir)
 
  816  if (!ap_texpr_is_binop(op))
 
  817    throw std::invalid_argument(
"apron::texpr1::builder::builder(ap_texpr_op_t, const builder&, const builder&, ap_texpr_rtype_t, ap_texpr_rdir_t) not a binary operator");
 
  819  l.texpr0 =  ap_texpr0_binop(op,
 
  820                             const_cast<ap_texpr0_t*
>(argA.l.texpr0),
 
  821                             const_cast<ap_texpr0_t*
>(argB.l.texpr0),
 
  828inline texpr1::builder 
unary(ap_texpr_op_t op, 
const texpr1::builder& a,
 
  829                             ap_texpr_rtype_t rtype = AP_RTYPE_REAL,
 
  830                             ap_texpr_rdir_t rdir = AP_RDIR_NEAREST)
 
  832  return texpr1::builder(op, a, rtype, rdir);
 
 
  835inline texpr1::builder 
binary(ap_texpr_op_t op, 
const texpr1::builder& a, 
const texpr1::builder& b,
 
  836                              ap_texpr_rtype_t rtype = AP_RTYPE_REAL,
 
  837                              ap_texpr_rdir_t rdir = AP_RDIR_NEAREST)
 
  839  return texpr1::builder(op, a, b, rtype, rdir);
 
 
  843inline texpr1::builder 
add(
const texpr1::builder& a, 
const texpr1::builder& b,
 
  844                           ap_texpr_rtype_t rtype = AP_RTYPE_REAL,
 
  845                           ap_texpr_rdir_t rdir = AP_RDIR_NEAREST)
 
  847  return texpr1::builder(AP_TEXPR_ADD, a, b, rtype, rdir);
 
 
  850inline texpr1::builder 
sub(
const texpr1::builder& a, 
const texpr1::builder& b,
 
  851                           ap_texpr_rtype_t rtype = AP_RTYPE_REAL,
 
  852                           ap_texpr_rdir_t rdir = AP_RDIR_NEAREST)
 
  854  return texpr1::builder(AP_TEXPR_SUB, a, b, rtype, rdir);
 
 
  857inline texpr1::builder 
mul(
const texpr1::builder& a, 
const texpr1::builder& b,
 
  858                           ap_texpr_rtype_t rtype = AP_RTYPE_REAL,
 
  859                           ap_texpr_rdir_t rdir = AP_RDIR_NEAREST)
 
  861  return texpr1::builder(AP_TEXPR_MUL, a, b, rtype, rdir);
 
 
  864inline texpr1::builder 
div(
const texpr1::builder& a, 
const texpr1::builder& b,
 
  865                           ap_texpr_rtype_t rtype = AP_RTYPE_REAL,
 
  866                           ap_texpr_rdir_t rdir = AP_RDIR_NEAREST)
 
  868  return texpr1::builder(AP_TEXPR_DIV, a, b, rtype, rdir);
 
 
  871inline texpr1::builder 
mod(
const texpr1::builder& a, 
const texpr1::builder& b,
 
  872                           ap_texpr_rtype_t rtype = AP_RTYPE_REAL,
 
  873                           ap_texpr_rdir_t rdir = AP_RDIR_NEAREST)
 
  875  return texpr1::builder(AP_TEXPR_MOD, a, b, rtype, rdir);
 
 
  878inline texpr1::builder 
pow(
const texpr1::builder& a, 
const texpr1::builder& b,
 
  879                           ap_texpr_rtype_t rtype = AP_RTYPE_REAL,
 
  880                           ap_texpr_rdir_t rdir = AP_RDIR_NEAREST)
 
  882  return texpr1::builder(AP_TEXPR_POW, a, b, rtype, rdir);
 
 
  885inline texpr1::builder 
neg(
const texpr1::builder& a,
 
  886                           ap_texpr_rtype_t rtype = AP_RTYPE_REAL,
 
  887                           ap_texpr_rdir_t rdir = AP_RDIR_NEAREST)
 
  889  return texpr1::builder(AP_TEXPR_NEG, a, rtype, rdir);
 
 
  892inline texpr1::builder 
cast(
const texpr1::builder& a, ap_texpr_rtype_t rtype,
 
  893                            ap_texpr_rdir_t rdir = AP_RDIR_NEAREST)
 
  895  return texpr1::builder(AP_TEXPR_CAST, a, rtype, rdir);
 
 
  898inline texpr1::builder 
floor(
const texpr1::builder& a)
 
  900  return texpr1::builder(AP_TEXPR_CAST, a, AP_RTYPE_INT, AP_RDIR_DOWN);
 
 
  903inline texpr1::builder 
ceil(
const texpr1::builder& a)
 
  905  return texpr1::builder(AP_TEXPR_CAST, a, AP_RTYPE_INT, AP_RDIR_UP);
 
 
  908inline texpr1::builder 
trunc(
const texpr1::builder& a)
 
  910  return texpr1::builder(AP_TEXPR_CAST, a, AP_RTYPE_INT, AP_RDIR_ZERO);
 
 
  913inline texpr1::builder 
sqrt(
const texpr1::builder& a,
 
  914                            ap_texpr_rtype_t rtype = AP_RTYPE_REAL,
 
  915                            ap_texpr_rdir_t rdir = AP_RDIR_NEAREST)
 
  917  return texpr1::builder(AP_TEXPR_SQRT, a, rtype, rdir);
 
 
  920inline texpr1::builder 
operator+(
const texpr1::builder& a)
 
 
  925inline texpr1::builder 
operator-(
const texpr1::builder& a)
 
 
  930inline texpr1::builder 
operator+(
const texpr1::builder& a, 
const texpr1::builder& b)
 
 
  935inline texpr1::builder 
operator-(
const texpr1::builder& a, 
const texpr1::builder& b)
 
 
  940inline texpr1::builder 
operator*(
const texpr1::builder& a, 
const texpr1::builder& b)
 
 
  945inline texpr1::builder 
operator/(
const texpr1::builder& a, 
const texpr1::builder& b)
 
 
  950inline texpr1::builder 
operator%(
const texpr1::builder& a, 
const texpr1::builder& b)
 
 
  955inline texpr1::builder 
operator^(
const texpr1::builder& a, 
const texpr1::builder& b)
 
 
  964inline bool texpr1::builder::is_zero()
 const 
  966  return l.texpr0->discr==AP_TEXPR_CST && ap_coeff_zero(
const_cast<ap_coeff_t*
>(&l.texpr0->val.cst));
 
  973inline texpr1::builder::~builder()
 
  975  switch(l.texpr0->discr){
 
  976  case AP_TEXPR_CST:  ap_coeff_clear(&l.texpr0->val.cst); 
break;
 
  977  case AP_TEXPR_DIM:  
break;
 
  978  case AP_TEXPR_NODE: free(l.texpr0->val.node); 
break;
 
  979  default: assert(
false);
 
  988inline ap_texpr1_t* texpr1::builder::get_ap_texpr1_t()
 
  993inline const ap_texpr1_t* texpr1::builder::get_ap_texpr1_t()
 const 
texpr1::builder operator+(const texpr1::builder &a)
Definition apxx_texpr1_inline.hh:920
texpr1::builder operator^(const texpr1::builder &a, const texpr1::builder &b)
Definition apxx_texpr1_inline.hh:955
std::ostream & operator<<(std::ostream &os, const texpr1 &s)
Definition apxx_texpr1_inline.hh:159
texpr1::builder operator%(const texpr1::builder &a, const texpr1::builder &b)
Definition apxx_texpr1_inline.hh:950
texpr1::builder trunc(const texpr1::builder &a)
Definition apxx_texpr1_inline.hh:908
texpr1::builder unary(ap_texpr_op_t op, const texpr1::builder &a, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition apxx_texpr1_inline.hh:828
texpr1::builder cast(const texpr1::builder &a, ap_texpr_rtype_t rtype, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition apxx_texpr1_inline.hh:892
texpr1::builder div(const texpr1::builder &a, const texpr1::builder &b, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition apxx_texpr1_inline.hh:864
texpr1::builder neg(const texpr1::builder &a, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition apxx_texpr1_inline.hh:885
texpr1::builder operator/(const texpr1::builder &a, const texpr1::builder &b)
Definition apxx_texpr1_inline.hh:945
texpr1::builder sqrt(const texpr1::builder &a, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition apxx_texpr1_inline.hh:913
texpr1::builder operator-(const texpr1::builder &a)
Definition apxx_texpr1_inline.hh:925
texpr1::builder add(const texpr1::builder &a, const texpr1::builder &b, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition apxx_texpr1_inline.hh:843
texpr1::builder operator*(const texpr1::builder &a, const texpr1::builder &b)
Definition apxx_texpr1_inline.hh:940
texpr1::builder mul(const texpr1::builder &a, const texpr1::builder &b, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition apxx_texpr1_inline.hh:857
texpr1::builder ceil(const texpr1::builder &a)
Definition apxx_texpr1_inline.hh:903
texpr1::builder floor(const texpr1::builder &a)
Definition apxx_texpr1_inline.hh:898
texpr1::builder mod(const texpr1::builder &a, const texpr1::builder &b, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition apxx_texpr1_inline.hh:871
texpr1::builder binary(ap_texpr_op_t op, const texpr1::builder &a, const texpr1::builder &b, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition apxx_texpr1_inline.hh:835
void apxx_texpr0_env_ostream(std::ostream &os, ap_environment_t *env, ap_texpr0_t *a)
texpr1::builder pow(const texpr1::builder &a, const texpr1::builder &b, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition apxx_texpr1_inline.hh:878
texpr1::builder sub(const texpr1::builder &a, const texpr1::builder &b, ap_texpr_rtype_t rtype=AP_RTYPE_REAL, ap_texpr_rdir_t rdir=AP_RDIR_NEAREST)
Definition apxx_texpr1_inline.hh:850