28inline tcons1::tcons1(ap_tcons1_t l) : l(l) 
 
   31inline tcons1::tcons1(
const environment& env, ap_constyp_t constyp)
 
   33  l.tcons0 = ap_tcons0_make(constyp, NULL, NULL);
 
   34  l.env = ap_environment_copy(
const_cast<ap_environment_t*
>(env.get_ap_environment_t()));
 
   37inline tcons1::tcons1(ap_constyp_t constyp, 
const texpr1::builder& t)
 
   39  ap_texpr1_t* x = ap_texpr1_copy(
const_cast<ap_texpr1_t*
>(t.get_ap_texpr1_t()));
 
   40  l = ap_tcons1_make(constyp, x, NULL);
 
   44inline tcons1::tcons1(ap_constyp_t constyp, 
const texpr1::builder& t, 
const scalar& modulo)
 
   46  ap_scalar_t* mmodulo = ap_scalar_alloc_set(
const_cast<ap_scalar_t*
>(modulo.get_ap_scalar_t()));
 
   47  ap_texpr1_t* x = ap_texpr1_copy(
const_cast<ap_texpr1_t*
>(t.get_ap_texpr1_t()));
 
   48  l = ap_tcons1_make(constyp, x, mmodulo);
 
   52inline tcons1::tcons1(
const tcons1& x)
 
   53  : l(ap_tcons1_copy(const_cast<ap_tcons1_t*>(&x.l)))
 
   56inline tcons1::tcons1(
const tcons1& x, 
const environment& e)
 
   58  if (!x.l.tcons0.texpr0)
 
   59    throw std::invalid_argument(
"apron::tcons1::tcons1(const tcons1&, const enviroment&) empty expression");
 
   61    ap_tcons1_extend_environment(&l,
 
   62                                 const_cast<ap_tcons1_t*
>(&x.l),
 
   63                                 const_cast<ap_environment_t*
>(e.get_ap_environment_t()));
 
   65    throw std::invalid_argument(
"apron::tcons1::tcons1(const tcons1&, const enviroment&) not a super-environment");
 
   68inline tcons1::tcons1(
const environment& e, unsat x)
 
   70  l.tcons0 = ap_tcons0_make_unsat();
 
   71  l.env = ap_environment_copy(
const_cast<ap_environment_t*
>(e.get_ap_environment_t()));  
 
   74inline tcons1::tcons1(
const lincons1& x)
 
   75  : l(ap_tcons1_from_lincons1(const_cast<ap_lincons1_t*>(x.get_ap_lincons1_t())))
 
   82inline tcons1::~tcons1()
 
   91inline tcons1 
operator>=(
const texpr1::builder& a, 
const texpr1::builder& b)
 
   93  if (b.is_zero())      
return tcons1(AP_CONS_SUPEQ,a);
 
   94  else if (a.is_zero()) 
return tcons1(AP_CONS_SUPEQ,-b);
 
   95  else                  return tcons1(AP_CONS_SUPEQ,a-b);
 
 
   98inline tcons1 
operator<=(
const texpr1::builder& a, 
const texpr1::builder& b)
 
  100  if (b.is_zero())      
return tcons1(AP_CONS_SUPEQ,-a);
 
  101  else if (a.is_zero()) 
return tcons1(AP_CONS_SUPEQ,b);
 
  102  else                  return tcons1(AP_CONS_SUPEQ,b-a);
 
 
  105inline tcons1 
operator> (
const texpr1::builder& a, 
const texpr1::builder& b)
 
  107  if (b.is_zero())      
return tcons1(AP_CONS_SUP,a);
 
  108  else if (a.is_zero()) 
return tcons1(AP_CONS_SUP,-b);
 
  109  else                  return tcons1(AP_CONS_SUP,a-b);
 
 
  112inline tcons1 
operator< (
const texpr1::builder& a, 
const texpr1::builder& b)
 
  114  if (b.is_zero())      
return tcons1(AP_CONS_SUP,-a);
 
  115  else if (a.is_zero()) 
return tcons1(AP_CONS_SUP,b);
 
  116  else                  return tcons1(AP_CONS_SUP,b-a);
 
 
  119inline tcons1 
operator==(
const texpr1::builder& a, 
const texpr1::builder& b)
 
  121  if (b.is_zero())      
return tcons1(AP_CONS_EQ,a);
 
  122  else if (a.is_zero()) 
return tcons1(AP_CONS_EQ,b);
 
  123  else                  return tcons1(AP_CONS_EQ,a-b);
 
 
  126inline tcons1 
operator!=(
const texpr1::builder& a, 
const texpr1::builder& b)
 
  128  if (b.is_zero())      
return tcons1(AP_CONS_DISEQ,a);
 
  129  else if (a.is_zero()) 
return tcons1(AP_CONS_DISEQ,b);
 
  130  else                  return tcons1(AP_CONS_DISEQ,a-b);
 
 
  137inline tcons1& tcons1::operator= (
const tcons1& x)
 
  141    l = ap_tcons1_copy(
const_cast<ap_tcons1_t*
>(&x.l)); 
 
  146inline tcons1& tcons1::operator= (unsat x)
 
  148  ap_tcons0_clear(&l.tcons0);
 
  149  l.tcons0 = ap_tcons0_make_unsat();
 
  153inline tcons1& tcons1::operator= (
const lincons1& x)
 
  156  l = ap_tcons1_from_lincons1(
const_cast<ap_lincons1_t*
>(x.get_ap_lincons1_t()));
 
  160inline void tcons1::set_modulo(
const scalar& c)
 
  162  get_tcons0().set_modulo(c);
 
  165inline void tcons1::set_texpr(
const texpr1::builder& c)
 
  167  ap_texpr1_t* cc = ap_texpr1_copy(
const_cast<ap_texpr1_t*
>(c.get_ap_texpr1_t()));
 
  168  if (l.tcons0.texpr0) ap_texpr0_free(l.tcons0.texpr0);
 
  169  ap_environment_free(l.env);
 
  170  l.tcons0.texpr0 = cc->texpr0;
 
  179inline void tcons1::extend_environment(
const environment& e)
 
  182    ap_tcons1_extend_environment_with(&l,
 
  183                                      const_cast<ap_environment_t*
>(e.get_ap_environment_t()));
 
  185    throw std::invalid_argument(
"apron::tcons1::extend_environment(const environment&) not a super-environment");
 
  192inline environment tcons1::get_environment()
 const 
  194  return ap_environment_copy(l.env);
 
  197inline const tcons0& tcons1::get_tcons0()
 const 
  199  return reinterpret_cast<const tcons0&
>(l.tcons0);
 
  202inline tcons0& tcons1::get_tcons0()
 
  204  return reinterpret_cast<tcons0&
>(l.tcons0);
 
  207inline ap_constyp_t& tcons1::get_constyp()
 
  209  return get_tcons0().get_constyp();
 
  212inline const ap_constyp_t& tcons1::get_constyp()
 const 
  214  return get_tcons0().get_constyp();
 
  217inline bool tcons1::has_modulo()
 const 
  219  return get_tcons0().has_modulo();
 
  222inline bool tcons1::has_texpr()
 const 
  224  return get_tcons0().has_texpr();
 
  227inline scalar& tcons1::get_modulo()
 
  229  if (!get_tcons0().has_modulo()) 
throw std::invalid_argument(
"apron::tcons1::get_modulo() empty scalar");
 
  230  return get_tcons0().get_modulo();
 
  233inline const scalar& tcons1::get_modulo()
 const 
  235  if (!get_tcons0().has_modulo()) 
throw std::invalid_argument(
"apron::tcons1::get_modulo() empty scalar");
 
  236  return get_tcons0().get_modulo();
 
  239inline texpr1::iterator tcons1::get_texpr()
 
  241  if (!l.tcons0.texpr0) 
throw std::invalid_argument(
"apron::tcons1::get_texpr() empty expression");
 
  242  return texpr1::iterator(l.tcons0.texpr0,l.env);
 
  245inline texpr1::const_iterator tcons1::get_texpr()
 const 
  247  if (!l.tcons0.texpr0) 
throw std::invalid_argument(
"apron::tcons1::get_texpr() empty expression");
 
  248  return texpr1::const_iterator(l.tcons0.texpr0,l.env);
 
  256inline std::ostream& 
operator<< (std::ostream& os, 
const tcons1& s)
 
  259  switch (s.get_constyp()) {
 
  260  case AP_CONS_EQ:    
return os << 
" = 0";
 
  261  case AP_CONS_SUPEQ: 
return os << 
" >= 0";
 
  262  case AP_CONS_SUP:   
return os << 
" > 0";
 
  263  case AP_CONS_EQMOD: 
return os << 
" = 0 mod " << s.get_modulo();
 
  264  case AP_CONS_DISEQ: 
return os << 
" != 0";
 
  265  default: 
throw std::invalid_argument(
"apron::operator<<(ostream&, const tcons1&) invalid constraint type");
 
 
  269inline void tcons1::print(FILE* stream)
 const 
  271  ap_tcons1_fprint(stream, 
const_cast<ap_tcons1_t*
>(&l));
 
  278inline bool tcons1::is_interval_cst()
 const 
  280  return get_texpr().is_interval_cst();
 
  283inline bool tcons1::is_interval_linear()
 const 
  285  return get_texpr().is_interval_linear();
 
  288inline bool tcons1::is_interval_polynomial()
 const 
  290  return get_texpr().is_interval_polynomial();
 
  293inline bool tcons1::is_interval_polyfrac()
 const 
  295  return get_texpr().is_interval_polyfrac();
 
  298inline bool tcons1::is_scalar()
 const 
  300  return get_texpr().is_scalar();
 
  307inline const ap_tcons1_t* tcons1::get_ap_tcons1_t()
 const 
  312inline ap_tcons1_t* tcons1::get_ap_tcons1_t()
 
  330inline tcons1_array::tcons1_array(ap_tcons1_array_t& a) : a(a) 
 
  333inline tcons1_array::tcons1_array(
const environment& e, 
const tcons0_array& x)
 
  335  size_t sz = x.size();
 
  336  a = ap_tcons1_array_make(
const_cast<ap_environment_t*
>(e.get_ap_environment_t()), sz);
 
  337  for (
size_t i=0; i<sz; i++) 
 
  338    a.tcons0_array.p[i] = ap_tcons0_copy(&x.a.p[i]);
 
  341inline tcons1_array::tcons1_array(
const environment& e, 
size_t size)
 
  343  a = ap_tcons1_array_make(
const_cast<ap_environment_t*
>(e.get_ap_environment_t()), size);
 
  346inline tcons1_array::tcons1_array(
const tcons1_array& x)
 
  348  size_t sz = x.size();
 
  349  a = ap_tcons1_array_make(x.get_environment().get_ap_environment_t(), sz);
 
  350  for (
size_t i=0; i<sz; i++) 
 
  351    a.tcons0_array.p[i] = ap_tcons0_copy(&x.a.tcons0_array.p[i]);
 
  354inline tcons1_array::tcons1_array(
const tcons1_array& x, 
const environment& e)
 
  357    ap_tcons1_array_extend_environment(&a,
 
  358                                         const_cast<ap_tcons1_array_t*
>(&x.a),
 
  359                                         const_cast<ap_environment_t*
>(e.get_ap_environment_t()));
 
  360  if (r) 
throw std::invalid_argument(
"apron::tcons1_array::tcons1_array(const tcons1_array, const environment&) not a super-environment");
 
  363inline tcons1_array::tcons1_array(
size_t sz, 
const tcons1 x[])
 
  365  if (sz<1) 
throw std::invalid_argument(
"apron::tcons1_array::tcons1_array(size_t, const tcons1) null size");
 
  366  a = ap_tcons1_array_make(x[0].get_environment().get_ap_environment_t(), sz);
 
  367  for (
size_t i=0; i<sz; i++) 
 
  368    a.tcons0_array.p[i] = ap_tcons0_copy(
const_cast<ap_tcons0_t*
> 
  369                                             (x[i].get_tcons0().get_ap_tcons0_t()));
 
  372inline tcons1_array::tcons1_array(
const std::vector<tcons1>& x)
 
  374  size_t sz = x.size();
 
  375  if (sz<1) 
throw std::invalid_argument(
"apron::tcons1_array::tcons1_array(const vector<tcons1>&) null size");
 
  376  a = ap_tcons1_array_make(x[0].get_environment().get_ap_environment_t(), sz);
 
  377  for (
size_t i=0; i<sz; i++) 
 
  378    a.tcons0_array.p[i] = ap_tcons0_copy(
const_cast<ap_tcons0_t*
> 
  379                                             (x[i].get_tcons0().get_ap_tcons0_t()));
 
  386inline tcons1_array::~tcons1_array()
 
  388  ap_tcons1_array_clear(&a);
 
  395inline tcons1_array& tcons1_array::operator= (
const tcons1_array& x)
 
  398    size_t sz = x.size();
 
  399    ap_tcons1_array_clear(&a);
 
  400    a = ap_tcons1_array_make(x.get_environment().get_ap_environment_t(), sz);
 
  401    for (
size_t i=0; i<sz; i++) 
 
  402      a.tcons0_array.p[i] = ap_tcons0_copy(&x.a.tcons0_array.p[i]);
 
  407inline tcons1_array& tcons1_array::operator= (
const tcons1 x[])
 
  410  for (
size_t i=0; i<sz; i++) {
 
  411    ap_tcons0_clear(&a.tcons0_array.p[i]);
 
  412    a.tcons0_array.p[i] = ap_tcons0_copy(
const_cast<ap_tcons0_t*
> 
  413                                             (x[i].get_tcons0().get_ap_tcons0_t()));
 
  418inline tcons1_array& tcons1_array::operator= (
const std::vector<tcons1>& x)
 
  420  size_t size = x.size();
 
  422    ap_tcons1_array_t aa = ap_tcons1_array_make(a.env,0);
 
  423    ap_tcons1_array_clear(&a);
 
  427  ap_tcons1_array_clear(&a);
 
  428  a = ap_tcons1_array_make(x[0].get_environment().get_ap_environment_t(), size);
 
  429  for (
size_t i=0; i<size; i++) 
 
  430    a.tcons0_array.p[i] = ap_tcons0_copy(
const_cast<ap_tcons0_t*
> 
  431                                             (x[i].get_tcons0().get_ap_tcons0_t()));
 
  439inline void tcons1_array::resize(
size_t size)
 
  441  ap_tcons0_array_resize(&a.tcons0_array, size);
 
  444inline void tcons1_array::extend_environment(
const environment& e)
 
  447    ap_tcons1_array_extend_environment_with(&a,
 
  448                                              const_cast<ap_environment_t*
>(e.get_ap_environment_t()));
 
  449  if (r) 
throw std::invalid_argument(
"apron::tcons1_array::extend_environment(const environment&) not a super-environment");
 
  456inline size_t tcons1_array::size()
 const 
  458  return ap_tcons1_array_size(
const_cast<ap_tcons1_array_t*
>(&a));
 
  461inline environment tcons1_array::get_environment()
 const 
  463  return (ap_environment_copy(ap_tcons1_array_envref(
const_cast<ap_tcons1_array_t*
>(&a))));
 
  466inline const tcons0_array& tcons1_array::get_tcons0_array()
 const 
  468  return reinterpret_cast<tcons0_array&
>(
const_cast<ap_tcons0_array_t&
>(a.tcons0_array));
 
  471inline tcons0_array& tcons1_array::get_tcons0_array()
 
  473  return reinterpret_cast<tcons0_array&
>(a.tcons0_array);
 
  476inline tcons1 tcons1_array::get(
size_t i)
 const 
  478  if (i>=size()) 
throw std::out_of_range(
"apron::tcons1_array::get(size_t)");
 
  479  ap_tcons1_t c = ap_tcons1_array_get(
const_cast<ap_tcons1_array_t*
>(&a),i);
 
  480  ap_tcons1_t cc = ap_tcons1_copy(&c);
 
  484inline void tcons1_array::set(
size_t i, 
const tcons1& x)
 
  486  if (i>=size()) 
throw std::out_of_range(
"apron::tcons1_array::set(size_t, const tcons1&)");
 
  487  ap_tcons0_clear(&a.tcons0_array.p[i]);
 
  488  a.tcons0_array.p[i] = ap_tcons0_copy(
const_cast<ap_tcons0_t*
> 
  489                                       (x.get_tcons0().get_ap_tcons0_t()));
 
  496inline tcons1_array::operator std::vector<tcons1>()
 const 
  499  tcons1 dummy(get_environment(),unsat());
 
  500  std::vector<tcons1> v(sz,dummy);
 
  501  for (
size_t i=0;i<sz;i++) {
 
  502    ap_tcons1_t c = ap_tcons1_array_get(
const_cast<ap_tcons1_array_t*
>(&a),i);
 
  503    v[i] = ap_tcons1_copy(&c);
 
  512inline std::ostream& 
operator<< (std::ostream& os, 
const tcons1_array& s)
 
  514  size_t sz = s.size();
 
  516  for (
size_t i=0;i<sz;i++)
 
  517    os << s.get(i) << 
"; ";
 
 
  521inline void tcons1_array:: print(FILE* stream)
 const 
  523  ap_tcons1_array_fprint(stream, 
const_cast<ap_tcons1_array_t*
>(&a));
 
  530inline const ap_tcons1_array_t* tcons1_array::get_ap_tcons1_array_t()
 const 
  535inline ap_tcons1_array_t* tcons1_array::get_ap_tcons1_array_t()
 
tcons1 operator!=(const texpr1::builder &a, const texpr1::builder &b)
Definition apxx_tcons1_inline.hh:126
tcons1 operator>(const texpr1::builder &a, const texpr1::builder &b)
Definition apxx_tcons1_inline.hh:105
tcons1 operator>=(const texpr1::builder &a, const texpr1::builder &b)
Definition apxx_tcons1_inline.hh:91
std::ostream & operator<<(std::ostream &os, const tcons1 &s)
Definition apxx_tcons1_inline.hh:256
tcons1 operator<(const texpr1::builder &a, const texpr1::builder &b)
Definition apxx_tcons1_inline.hh:112
tcons1 operator<=(const texpr1::builder &a, const texpr1::builder &b)
Definition apxx_tcons1_inline.hh:98
tcons1 operator==(const texpr1::builder &a, const texpr1::builder &b)
Definition apxx_tcons1_inline.hh:119