23inline tcons0::tcons0(ap_tcons0_t& l) : l(l) 
 
   26inline tcons0::tcons0(ap_constyp_t constyp)
 
   28  l = ap_tcons0_make(constyp, NULL, NULL);
 
   31inline tcons0::tcons0(ap_constyp_t constyp, 
const texpr0::builder& t, 
const scalar& modulo)
 
   33  ap_texpr0_t* lt = ap_texpr0_copy(
const_cast<ap_texpr0_t*
>(t.get_ap_texpr0_t()));
 
   34  ap_scalar_t* mmodulo = ap_scalar_alloc_set(
const_cast<ap_scalar_t*
>(modulo.get_ap_scalar_t()));
 
   35  l = ap_tcons0_make(constyp, lt, mmodulo);
 
   38inline tcons0::tcons0(ap_constyp_t constyp, 
const texpr0::builder& t)
 
   40  ap_texpr0_t* lt = ap_texpr0_copy(
const_cast<ap_texpr0_t*
>(t.get_ap_texpr0_t()));
 
   41  l = ap_tcons0_make(constyp, lt, NULL);
 
   44inline tcons0::tcons0(
const tcons0& x)
 
   46  l = ap_tcons0_copy(
const_cast<ap_tcons0_t*
>(&x.l)); 
 
   49inline tcons0::tcons0(unsat x)
 
   51  l = ap_tcons0_make_unsat();
 
   54inline tcons0::tcons0(
const tcons0& x, 
const dimchange& d, 
bool add)
 
   56  if (!x.l.texpr0) 
throw std::invalid_argument(
"apron::tcons0::tcons0(const tcons0&, const dimchange&, bool) empty expression");
 
   58    l = ap_tcons0_add_dimensions(
const_cast<ap_tcons0_t*
>(&x.l), 
 
   59                                 const_cast<ap_dimchange_t*
>(d.get_ap_dimchange_t()));
 
   61    l = ap_tcons0_remove_dimensions(
const_cast<ap_tcons0_t*
>(&x.l), 
 
   62                                    const_cast<ap_dimchange_t*
>(d.get_ap_dimchange_t()));
 
   65inline tcons0::tcons0(
const tcons0& x, 
const dimperm& d)
 
   67  if (!x.l.texpr0) 
throw std::invalid_argument(
"apron::tcons0::tcons0(const tcons0&, const dimperm&) empty expression");
 
   68  l = ap_tcons0_permute_dimensions(
const_cast<ap_tcons0_t*
>(&x.l), 
 
   69                                   const_cast<ap_dimperm_t*
>(d.get_ap_dimperm_t()));
 
   72inline tcons0::tcons0(
const lincons0& x)
 
   74  l = ap_tcons0_from_lincons0(
const_cast<ap_lincons0_t*
>(x.get_ap_lincons0_t()));
 
   81inline tcons0::~tcons0()
 
   83  ap_tcons0_clear(
const_cast<ap_tcons0_t*
>(&l)); 
 
   90inline tcons0 
operator>=(
const texpr0::builder& a, 
const texpr0::builder& b)
 
   92  if (b.is_zero())      
return tcons0(AP_CONS_SUPEQ,a);
 
   93  else if (a.is_zero()) 
return tcons0(AP_CONS_SUPEQ,-b);
 
   94  else                  return tcons0(AP_CONS_SUPEQ,a-b);
 
 
   97inline tcons0 
operator<=(
const texpr0::builder& a, 
const texpr0::builder& b)
 
   99  if (b.is_zero())      
return tcons0(AP_CONS_SUPEQ,-a);
 
  100  else if (a.is_zero()) 
return tcons0(AP_CONS_SUPEQ,b);
 
  101  else                  return tcons0(AP_CONS_SUPEQ,b-a);
 
 
  104inline tcons0 
operator> (
const texpr0::builder& a, 
const texpr0::builder& b)
 
  106  if (b.is_zero())      
return tcons0(AP_CONS_SUP,a);
 
  107  else if (a.is_zero()) 
return tcons0(AP_CONS_SUP,-b);
 
  108  else                  return tcons0(AP_CONS_SUP,a-b);
 
 
  111inline tcons0 
operator< (
const texpr0::builder& a, 
const texpr0::builder& b)
 
  113  if (b.is_zero())      
return tcons0(AP_CONS_SUP,-a);
 
  114  else if (a.is_zero()) 
return tcons0(AP_CONS_SUP,b);
 
  115  else                  return tcons0(AP_CONS_SUP,b-a);
 
 
  118inline tcons0 
operator==(
const texpr0::builder& a, 
const texpr0::builder& b)
 
  120  if (b.is_zero())      
return tcons0(AP_CONS_EQ,a);
 
  121  else if (a.is_zero()) 
return tcons0(AP_CONS_EQ,b);
 
  122  else                  return tcons0(AP_CONS_EQ,a-b);
 
 
  125inline tcons0 
operator!=(
const texpr0::builder& a, 
const texpr0::builder& b)
 
  127  if (b.is_zero())      
return tcons0(AP_CONS_DISEQ,a);
 
  128  else if (a.is_zero()) 
return tcons0(AP_CONS_DISEQ,b);
 
  129  else                  return tcons0(AP_CONS_DISEQ,a-b);
 
 
  136inline tcons0& tcons0::operator= (
const tcons0& x)
 
  140    l = ap_tcons0_copy(
const_cast<ap_tcons0_t*
>(&x.l)); 
 
  145inline tcons0& tcons0::operator= (unsat x)
 
  148  l = ap_tcons0_make_unsat();  
 
  152inline tcons0& tcons0::operator= (
const lincons0& x)
 
  155  l = ap_tcons0_from_lincons0(
const_cast<ap_lincons0_t*
>(x.get_ap_lincons0_t()));
 
  163inline void tcons0::add_dimensions(
const dimchange& d)
 
  165  if (!l.texpr0) 
throw std::invalid_argument(
"apron::tcons0::add_dimensions(const dimchange&) empty expression");
 
  166  ap_tcons0_add_dimensions_with(&l, 
const_cast<ap_dimchange_t*
>(d.get_ap_dimchange_t()));
 
  169inline void tcons0::remove_dimensions(
const dimchange& d)
 
  171  if (!l.texpr0) 
throw std::invalid_argument(
"apron::tcons0::remove_dimensions(const dimchange&) empty expression");
 
  172  ap_tcons0_remove_dimensions_with(&l, 
const_cast<ap_dimchange_t*
>(d.get_ap_dimchange_t()));
 
  175inline void tcons0::permute_dimensions(
const dimperm& d)
 
  177  if (!l.texpr0) 
throw std::invalid_argument(
"apron::tcons0::permute_dimensions(dimperm&) empty expression");
 
  178  ap_tcons0_permute_dimensions_with(&l, 
const_cast<ap_dimperm_t*
>(d.get_ap_dimperm_t())); 
 
  187inline ap_constyp_t& tcons0::get_constyp()
 
  192inline const ap_constyp_t& tcons0::get_constyp()
 const 
  197inline bool tcons0::has_modulo()
 const 
  199  return l.scalar!=NULL; 
 
  202inline bool tcons0::has_texpr()
 const 
  204  return l.texpr0!=NULL; 
 
  207inline scalar& tcons0::get_modulo()
 
  209  if (!l.scalar) 
throw std::invalid_argument(
"apron::tcons0::get_modulo() empty scalar");
 
  210  return reinterpret_cast<scalar&
>(*l.scalar);
 
  213inline const scalar& tcons0::get_modulo()
 const 
  215  if (!l.scalar) 
throw std::invalid_argument(
"apron::tcons0::get_modulo() empty scalar");
 
  216  return reinterpret_cast<scalar&
>(*l.scalar);
 
  219inline void tcons0::set_modulo(
const scalar& c)
 
  221  if (!l.scalar) l.scalar = ap_scalar_alloc_set(
const_cast<ap_scalar_t*
>(c.get_ap_scalar_t()));
 
  222  else ap_scalar_set(l.scalar, 
const_cast<ap_scalar_t*
>(c.get_ap_scalar_t()));
 
  225inline texpr0::const_iterator tcons0::get_texpr()
 const 
  228    throw std::invalid_argument(
"apron::tcons0::get_texpr() empty expression");
 
  232inline texpr0::iterator tcons0::get_texpr()
 
  234  if (!l.texpr0) 
throw std::invalid_argument(
"apron::tcons0::get_texpr() empty expression");
 
  238inline void tcons0::set_texpr(
const texpr0::builder& c)
 
  240  ap_texpr0_t* cc = ap_texpr0_copy(
const_cast<ap_texpr0_t*
>(c.get_ap_texpr0_t()));
 
  241  if (l.texpr0) ap_texpr0_free(l.texpr0);
 
  249inline std::ostream& 
operator<< (std::ostream& os, 
const tcons0& s)
 
  252  switch (s.get_constyp()) {
 
  253  case AP_CONS_EQ:    
return os << 
" = 0";
 
  254  case AP_CONS_SUPEQ: 
return os << 
" >= 0";
 
  255  case AP_CONS_SUP:   
return os << 
" > 0";
 
  256  case AP_CONS_EQMOD: 
return os << 
" = 0 mod " << s.get_modulo();
 
  257  case AP_CONS_DISEQ: 
return os << 
" != 0";
 
  258  default: 
throw std::invalid_argument(
"apron::operator<<(ostream&, const tcons0&) invalid constraint type");
 
 
  262inline void tcons0::print(
char** name_of_dim, FILE* stream)
 const 
  264  ap_tcons0_fprint(stream, 
const_cast<ap_tcons0_t*
>(&l), name_of_dim);
 
  271inline bool tcons0::is_interval_cst()
 const 
  273  return ap_tcons0_is_interval_cst(
const_cast<ap_tcons0_t*
>(&l));
 
  276inline bool tcons0::is_interval_linear()
 const 
  278  return ap_tcons0_is_interval_linear(
const_cast<ap_tcons0_t*
>(&l));
 
  281inline bool tcons0::is_interval_polynomial()
 const 
  283  return ap_tcons0_is_interval_polynomial(
const_cast<ap_tcons0_t*
>(&l));
 
  286inline bool tcons0::is_interval_polyfrac()
 const 
  288  return ap_tcons0_is_interval_polyfrac(
const_cast<ap_tcons0_t*
>(&l));
 
  291inline bool tcons0::is_scalar()
 const 
  293  return ap_tcons0_is_scalar(
const_cast<ap_tcons0_t*
>(&l));
 
  301inline const ap_tcons0_t* tcons0::get_ap_tcons0_t()
 const 
  306inline ap_tcons0_t* tcons0::get_ap_tcons0_t()
 
  320inline tcons0_array::tcons0_array(
size_t size) 
 
  321  : a(ap_tcons0_array_make(size)) 
 
  325inline tcons0_array::tcons0_array(
const tcons0_array& x) 
 
  326  : a(ap_tcons0_array_make(x.a.size))
 
  328  for (
size_t i=0; i<a.size; i++) 
 
  329    a.p[i] = ap_tcons0_copy(&x.a.p[i]);
 
  332inline tcons0_array::tcons0_array(
size_t size, 
const tcons0 x[]) 
 
  333  : a(ap_tcons0_array_make(size))
 
  335  for (
size_t i=0; i<size; i++) 
 
  336    a.p[i] = ap_tcons0_copy(
const_cast<ap_tcons0_t*
>(x[i].get_ap_tcons0_t()));
 
  339inline tcons0_array::tcons0_array(
const std::vector<tcons0>& x) 
 
  340  : a(ap_tcons0_array_make(x.size()))
 
  342  for (
size_t i=0; i<a.size; i++) 
 
  343    a.p[i] = ap_tcons0_copy(
const_cast<ap_tcons0_t*
>(x[i].get_ap_tcons0_t()));
 
  346inline tcons0_array::tcons0_array(
const tcons0_array& x, 
const dimchange& d, 
bool add)
 
  349    a = ap_tcons0_array_add_dimensions(
const_cast<ap_tcons0_array_t*
>(&x.a), 
 
  350                                       const_cast<ap_dimchange_t*
>(d.get_ap_dimchange_t()));
 
  352    a = ap_tcons0_array_remove_dimensions(
const_cast<ap_tcons0_array_t*
>(&x.a), 
 
  353                                          const_cast<ap_dimchange_t*
>(d.get_ap_dimchange_t()));
 
  356inline tcons0_array::tcons0_array(
const tcons0_array& x, 
const dimperm& d)
 
  358  a = ap_tcons0_array_permute_dimensions(
const_cast<ap_tcons0_array_t*
>(&x.a), 
 
  359                                         const_cast<ap_dimperm_t*
>(d.get_ap_dimperm_t()));
 
  362inline tcons0_array::tcons0_array(
const lincons0_array& x)
 
  363  : a(ap_tcons0_array_make(x.size()))
 
  365  for (
size_t i=0; i<a.size; i++) 
 
  366    a.p[i] = ap_tcons0_from_lincons0(
const_cast<ap_lincons0_t*
>(x[i].get_ap_lincons0_t()));
 
  373inline tcons0_array::~tcons0_array()
 
  375  ap_tcons0_array_clear(&a); 
 
  382inline tcons0_array& tcons0_array::operator= (
const tcons0_array& x)
 
  385    ap_tcons0_array_clear(&a);
 
  386    a = ap_tcons0_array_make(x.a.size);
 
  387    for (
size_t i=0; i<a.size; i++) a.p[i] = ap_tcons0_copy(&x.a.p[i]);
 
  392inline tcons0_array& tcons0_array::operator= (
const tcons0 x[])
 
  394  size_t size = a.size;
 
  395  ap_tcons0_array_clear(&a);
 
  396  a = ap_tcons0_array_make(size);
 
  397  for (
size_t i=0; i<size; i++) 
 
  398    a.p[i] = ap_tcons0_copy(
const_cast<ap_tcons0_t*
>(x[i].get_ap_tcons0_t()));
 
  402inline tcons0_array& tcons0_array::operator= (
const std::vector<tcons0>& x)
 
  404  size_t size = x.size();
 
  405  ap_tcons0_array_clear(&a);
 
  406  a = ap_tcons0_array_make(size);
 
  407  for (
size_t i=0; i<size; i++) 
 
  408    a.p[i] = ap_tcons0_copy(
const_cast<ap_tcons0_t*
>(x[i].get_ap_tcons0_t()));
 
  412inline tcons0_array& tcons0_array::operator= (
const lincons0_array& x)
 
  414  size_t size = x.size();
 
  415  ap_tcons0_array_clear(&a);
 
  416  a = ap_tcons0_array_make(size);
 
  417  for (
size_t i=0; i<size; i++) 
 
  418    a.p[i] = ap_tcons0_from_lincons0(
const_cast<ap_lincons0_t*
>(x[i].get_ap_lincons0_t()));
 
  426inline void tcons0_array::resize(
size_t size)
 
  428  ap_tcons0_array_resize(&a, size);
 
  431inline void tcons0_array::add_dimensions(
const dimchange& d)
 
  433  ap_tcons0_array_add_dimensions_with(&a, 
const_cast<ap_dimchange_t*
>(d.get_ap_dimchange_t()));
 
  436inline void tcons0_array::remove_dimensions(
const dimchange& d)
 
  438  ap_tcons0_array_remove_dimensions_with(&a, 
const_cast<ap_dimchange_t*
>(d.get_ap_dimchange_t()));
 
  441inline void tcons0_array::permute_dimensions(
const dimperm& d)
 
  443  ap_tcons0_array_permute_dimensions_with(&a, 
const_cast<ap_dimperm_t*
>(d.get_ap_dimperm_t()));
 
  450inline size_t tcons0_array::size()
 const 
  455inline tcons0* tcons0_array::contents()
 
  457  return reinterpret_cast<tcons0*
>(a.p);
 
  460inline const tcons0* tcons0_array::contents()
 const 
  462  return reinterpret_cast<tcons0*
>(a.p);
 
  465inline tcons0& tcons0_array::operator[](
size_t i)
 
  467  return reinterpret_cast<tcons0&
>(a.p[i]); 
 
  470inline const tcons0& tcons0_array::operator[](
size_t i)
 const 
  472  return reinterpret_cast<tcons0&
>(a.p[i]); 
 
  475inline tcons0& tcons0_array::get(
size_t i)
 
  477  if (i >= a.size) 
throw std::out_of_range(
"apron::tcons0_array::get()");
 
  478  return reinterpret_cast<tcons0&
>(a.p[i]); 
 
  481inline const tcons0& tcons0_array::get(
size_t i)
 const 
  483  if (i >= a.size) 
throw std::out_of_range(
"apron::tcons0_array::get()");
 
  484  return reinterpret_cast<tcons0&
>(a.p[i]); 
 
  491inline tcons0_array::operator std::vector<tcons0>()
 const 
  494  std::vector<tcons0> v = std::vector<tcons0>(sz);
 
  495  for (
size_t i=0;i<sz;i++)
 
  504inline std::ostream& 
operator<< (std::ostream& os, 
const tcons0_array& s)
 
  506  size_t size = s.size();
 
  508  for (
size_t i=0;i<size;i++)
 
 
  513inline void tcons0_array::print(
char** name_of_dim, FILE* stream)
 const 
  515  ap_tcons0_array_fprint(stream, 
const_cast<ap_tcons0_array_t*
>(&a), name_of_dim); 
 
  522inline bool tcons0_array::is_interval_linear()
 const 
  524  return ap_tcons0_array_is_interval_linear(
const_cast<ap_tcons0_array_t*
>(&a)); 
 
  530inline const ap_tcons0_array_t* tcons0_array::get_ap_tcons0_array_t()
 const 
  535inline ap_tcons0_array_t* tcons0_array::get_ap_tcons0_array_t()
 
tcons0 operator!=(const texpr0::builder &a, const texpr0::builder &b)
Definition apxx_tcons0_inline.hh:125
tcons0 operator>(const texpr0::builder &a, const texpr0::builder &b)
Definition apxx_tcons0_inline.hh:104
tcons0 operator<=(const texpr0::builder &a, const texpr0::builder &b)
Definition apxx_tcons0_inline.hh:97
tcons0 operator>=(const texpr0::builder &a, const texpr0::builder &b)
Definition apxx_tcons0_inline.hh:90
tcons0 operator<(const texpr0::builder &a, const texpr0::builder &b)
Definition apxx_tcons0_inline.hh:111
tcons0 operator==(const texpr0::builder &a, const texpr0::builder &b)
Definition apxx_tcons0_inline.hh:118
std::ostream & operator<<(std::ostream &os, const tcons0 &s)
Definition apxx_tcons0_inline.hh:249
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_inline.hh:771