23inline lincons0::lincons0(ap_lincons0_t l) : l(l) {}
 
   25inline lincons0::lincons0(ap_constyp_t constyp)
 
   27  ap_linexpr0_t* llin = ap_linexpr0_alloc(AP_LINEXPR_SPARSE,0);
 
   28  l = ap_lincons0_make(constyp, llin, NULL);
 
   31inline lincons0::lincons0(ap_constyp_t constyp, 
const linexpr0& lin, 
const scalar& modulo)
 
   33  ap_linexpr0_t* llin = ap_linexpr0_copy(
const_cast<ap_linexpr0_t*
>(lin.get_ap_linexpr0_t()));
 
   34  ap_scalar_t* mmodulo = ap_scalar_alloc_set(
const_cast<ap_scalar_t*
>(modulo.get_ap_scalar_t()));
 
   35  l = ap_lincons0_make(constyp, llin, mmodulo);
 
   38inline lincons0::lincons0(ap_constyp_t constyp, 
const linexpr0& lin)
 
   40  ap_linexpr0_t* llin = ap_linexpr0_copy(
const_cast<ap_linexpr0_t*
>(lin.get_ap_linexpr0_t()));
 
   41  l = ap_lincons0_make(constyp, llin, NULL);
 
   44inline lincons0::lincons0(
const lincons0& x)
 
   46  l = ap_lincons0_copy(
const_cast<ap_lincons0_t*
>(&x.l)); 
 
   49inline lincons0::lincons0(unsat x)
 
   51  l = ap_lincons0_make_unsat();
 
   54inline lincons0::lincons0(
const lincons0& x, 
const dimchange& d)
 
   56  if (!x.l.linexpr0) 
throw std::invalid_argument(
"apron::lincons0::lincons0(const dimchange&) empty expression");
 
   57  l = ap_lincons0_add_dimensions(
const_cast<ap_lincons0_t*
>(&x.l), 
 
   58                                 const_cast<ap_dimchange_t*
>(d.get_ap_dimchange_t()));
 
   61inline lincons0::lincons0(
const lincons0& x, 
const dimperm& d)
 
   63  if (!x.l.linexpr0) 
throw std::invalid_argument(
"apron::lincons0::lincons0(const dimperm&) empty expression");
 
   64  l = ap_lincons0_permute_dimensions(
const_cast<ap_lincons0_t*
>(&x.l), 
 
   65                                     const_cast<ap_dimperm_t*
>(d.get_ap_dimperm_t()));
 
   72inline lincons0::~lincons0()
 
   74  ap_lincons0_clear(&l); 
 
   81inline lincons0& lincons0::operator= (
const lincons0& x)
 
   84    ap_lincons0_clear(&l);
 
   85    l = ap_lincons0_copy(
const_cast<ap_lincons0_t*
>(&x.l)); 
 
   90inline lincons0& lincons0::operator= (unsat x)
 
   92  ap_lincons0_clear(&l); 
 
   93  l = ap_lincons0_make_unsat();  
 
  101inline void lincons0::resize(
size_t size)
 
  103  if (!l.linexpr0) 
throw std::invalid_argument(
"apron::lincons0::resize(size_t) empty expression");
 
  104  ap_linexpr0_realloc(l.linexpr0, size);
 
  108inline void lincons0::add_dimensions(
const dimchange& d)
 
  110  if (!l.linexpr0) 
throw std::invalid_argument(
"apron::lincons0::add_dimensions(const dimchange&) empty expression");
 
  111  ap_lincons0_add_dimensions_with(&l, 
const_cast<ap_dimchange_t*
>(d.get_ap_dimchange_t()));
 
  114inline void lincons0::permute_dimensions(
const dimperm& d)
 
  116  if (!l.linexpr0) 
throw std::invalid_argument(
"apron::lincons0::permute_dimensions(const dimperm&) empty expression");
 
  117  ap_lincons0_permute_dimensions_with(&l, 
const_cast<ap_dimperm_t*
>(d.get_ap_dimperm_t())); 
 
  126inline size_t lincons0::size()
 const 
  128  if (!l.linexpr0) 
throw std::invalid_argument(
"apron::lincons0::size() empty expression");
 
  129  return ap_linexpr0_size(
const_cast<ap_linexpr0_t*
>(l.linexpr0));
 
  135inline ap_constyp_t& lincons0::get_constyp()
 
  140inline const ap_constyp_t& lincons0::get_constyp()
 const 
  145inline bool lincons0::has_modulo()
 const 
  147  return l.scalar!=NULL; 
 
  150inline bool lincons0::has_linexpr()
 const 
  152  return l.linexpr0!=NULL; 
 
  155inline scalar& lincons0::get_modulo()
 
  157  if (!l.scalar) 
throw std::invalid_argument(
"apron::lincons0::get_modulo() empty scalar");
 
  158  return reinterpret_cast<scalar&
>(*l.scalar);
 
  161inline const scalar& lincons0::get_modulo()
 const 
  163  if (!l.scalar) 
throw std::invalid_argument(
"apron::lincons0::get_modulo() empty scalar");
 
  164  return reinterpret_cast<scalar&
>(*l.scalar);
 
  167inline void lincons0::set_modulo(
const scalar& c)
 
  169  if (!l.scalar) l.scalar = ap_scalar_alloc_set(
const_cast<ap_scalar_t*
>(c.get_ap_scalar_t()));
 
  170  else ap_scalar_set(l.scalar, 
const_cast<ap_scalar_t*
>(c.get_ap_scalar_t()));
 
  173inline linexpr0& lincons0::get_linexpr()
 
  175  if (!l.linexpr0) 
throw std::invalid_argument(
"apron::lincons0::get_linexpr() empty expression");
 
  176  return reinterpret_cast<linexpr0&
>(*l.linexpr0); 
 
  179inline const linexpr0& lincons0::get_linexpr()
 const 
  181  if (!l.linexpr0) 
throw std::invalid_argument(
"apron::lincons0::get_linexpr() empty expression");
 
  182  return reinterpret_cast<linexpr0&
>(*l.linexpr0); 
 
  185inline void lincons0::set_linexpr(
const linexpr0& c)
 
  187  if (l.linexpr0) ap_linexpr0_free(l.linexpr0);
 
  188  l.linexpr0 = ap_linexpr0_copy(
const_cast<ap_linexpr0_t*
>(c.get_ap_linexpr0_t()));
 
  191inline coeff& lincons0::get_cst()
 
  192{ 
return get_linexpr().get_cst(); }
 
  194inline const coeff& lincons0::get_cst()
 const 
  195{ 
return get_linexpr().get_cst(); }
 
  197inline coeff& lincons0::operator[](ap_dim_t dim)
 
  198{ 
return get_linexpr()[dim]; }
 
  200inline const coeff& lincons0::operator[](ap_dim_t dim)
 const 
  201{ 
return get_linexpr()[dim]; }
 
  207inline std::ostream& 
operator<< (std::ostream& os, 
const lincons0& s)
 
  209  os << s.get_linexpr();
 
  210  switch (s.get_constyp()) {
 
  211  case AP_CONS_EQ:    
return os << 
" = 0";
 
  212  case AP_CONS_SUPEQ: 
return os << 
" >= 0";
 
  213  case AP_CONS_SUP:   
return os << 
" > 0";
 
  214  case AP_CONS_EQMOD: 
return os << 
" = 0 mod " << s.get_modulo();
 
  215  case AP_CONS_DISEQ: 
return os << 
" != 0";
 
  216  default: 
throw std::invalid_argument(
"apron::operator<<(ostream&, const lincons0&) unknown constraint type");
 
 
  220inline void lincons0::print(
char** name_of_dim, FILE* stream)
 const 
  222  ap_lincons0_fprint(stream, 
const_cast<ap_lincons0_t*
>(&l), name_of_dim);
 
  229inline bool lincons0::is_unsat()
 const 
  231  if (!l.linexpr0) 
throw std::invalid_argument(
"apron::lincons0::is_unsat() empty expression");
 
  232  return ap_lincons0_is_unsat(
const_cast<ap_lincons0_t*
>(&l));
 
  235inline bool lincons0::is_linear()
 const 
  237  if (!l.linexpr0) 
throw std::invalid_argument(
"apron::lincons0::is_linear() empty expression");
 
  238  return ap_linexpr0_is_linear(l.linexpr0);
 
  241inline bool lincons0::is_quasilinear()
 const 
  243  if (!l.linexpr0) 
throw std::invalid_argument(
"apron::lincons0::is_quasilinear() empty expression");
 
  244  return ap_linexpr0_is_quasilinear(l.linexpr0);
 
  252inline const ap_lincons0_t* lincons0::get_ap_lincons0_t()
 const 
  257inline ap_lincons0_t* lincons0::get_ap_lincons0_t()
 
  271inline lincons0_array::lincons0_array(
size_t size) 
 
  272  : a(ap_lincons0_array_make(size)) 
 
  276inline lincons0_array::lincons0_array(
const lincons0_array& x) 
 
  277  : a(ap_lincons0_array_make(x.a.size))
 
  279  for (
size_t i=0; i<a.size; i++) 
 
  280    a.p[i] = ap_lincons0_copy(&x.a.p[i]);
 
  283inline lincons0_array::lincons0_array(
size_t size, 
const lincons0 x[]) 
 
  284  : a(ap_lincons0_array_make(size))
 
  286  for (
size_t i=0; i<size; i++) 
 
  287    a.p[i] = ap_lincons0_copy(
const_cast<ap_lincons0_t*
>(x[i].get_ap_lincons0_t()));
 
  290inline lincons0_array::lincons0_array(
const std::vector<lincons0>& x) 
 
  291  : a(ap_lincons0_array_make(x.size()))
 
  293  for (
size_t i=0; i<a.size; i++) 
 
  294    a.p[i] = ap_lincons0_copy(
const_cast<ap_lincons0_t*
>(x[i].get_ap_lincons0_t()));
 
  297inline lincons0_array::lincons0_array(
const lincons0_array& x, 
const dimchange& d)
 
  299  a = ap_lincons0_array_add_dimensions(
const_cast<ap_lincons0_array_t*
>(&x.a), 
 
  300                                       const_cast<ap_dimchange_t*
>(d.get_ap_dimchange_t()));
 
  303inline lincons0_array::lincons0_array(
const lincons0_array& x, 
const dimperm& d)
 
  305  a = ap_lincons0_array_permute_dimensions(
const_cast<ap_lincons0_array_t*
>(&x.a), 
 
  306                                           const_cast<ap_dimperm_t*
>(d.get_ap_dimperm_t()));
 
  313inline lincons0_array::~lincons0_array()
 
  315  ap_lincons0_array_clear(&a); 
 
  322inline lincons0_array& lincons0_array::operator= (
const lincons0_array& x)
 
  325    ap_lincons0_array_clear(&a);
 
  326    a = ap_lincons0_array_make(x.a.size);
 
  327    for (
size_t i=0; i<a.size; i++) a.p[i] = ap_lincons0_copy(&x.a.p[i]);
 
  332inline lincons0_array& lincons0_array::operator= (
const lincons0 x[])
 
  334  size_t size = a.size;
 
  335  ap_lincons0_array_clear(&a);
 
  336  a = ap_lincons0_array_make(size);
 
  337  for (
size_t i=0; i<size; i++) 
 
  338    a.p[i] = ap_lincons0_copy(
const_cast<ap_lincons0_t*
>(x[i].get_ap_lincons0_t()));
 
  342inline lincons0_array& lincons0_array::operator= (
const std::vector<lincons0>& x)
 
  344  size_t size = x.size();
 
  345  ap_lincons0_array_clear(&a);
 
  346  a = ap_lincons0_array_make(size);
 
  347  for (
size_t i=0; i<size; i++) 
 
  348    a.p[i] = ap_lincons0_copy(
const_cast<ap_lincons0_t*
>(x[i].get_ap_lincons0_t()));
 
  356inline void lincons0_array::resize(
size_t size)
 
  358  ap_lincons0_array_resize(&a, size);
 
  361inline void lincons0_array::add_dimensions(
const dimchange& d)
 
  363  ap_lincons0_array_add_dimensions_with(&a, 
const_cast<ap_dimchange_t*
>(d.get_ap_dimchange_t()));
 
  366inline void lincons0_array::permute_dimensions(
const dimperm& d)
 
  368  ap_lincons0_array_permute_dimensions_with(&a, 
const_cast<ap_dimperm_t*
>(d.get_ap_dimperm_t()));
 
  375inline size_t lincons0_array::size()
 const 
  380inline lincons0* lincons0_array::contents()
 
  382  return reinterpret_cast<lincons0*
>(a.p);
 
  385inline const lincons0* lincons0_array::contents()
 const 
  387  return reinterpret_cast<lincons0*
>(a.p);
 
  390inline lincons0& lincons0_array::operator[](
size_t i)
 
  392  return reinterpret_cast<lincons0&
>(a.p[i]); 
 
  395inline const lincons0& lincons0_array::operator[](
size_t i)
 const 
  397  return reinterpret_cast<lincons0&
>(a.p[i]); 
 
  400inline lincons0& lincons0_array::get(
size_t i)
 
  402  if (i >= a.size) 
throw std::out_of_range(
"apron::lincons0_array::get(size_t)");
 
  403  return reinterpret_cast<lincons0&
>(a.p[i]); 
 
  406inline const lincons0& lincons0_array::get(
size_t i)
 const 
  408  if (i >= a.size) 
throw std::out_of_range(
"apron::lincons0_array::get(size_t)");
 
  409  return reinterpret_cast<lincons0&
>(a.p[i]); 
 
  416inline lincons0_array::operator std::vector<lincons0>()
 const 
  419  std::vector<lincons0> v = std::vector<lincons0>(sz);
 
  420  for (
size_t i=0;i<sz;i++)
 
  429inline std::ostream& 
operator<< (std::ostream& os, 
const lincons0_array& s)
 
  431  size_t sz = s.size();
 
  433  for (
size_t i=0;i<sz;i++)
 
 
  438inline void lincons0_array::print(
char** name_of_dim, FILE* stream)
 const 
  440  ap_lincons0_array_fprint(stream, 
const_cast<ap_lincons0_array_t*
>(&a), name_of_dim); 
 
  447inline bool lincons0_array::is_linear()
 const 
  449  return ap_lincons0_array_is_linear(
const_cast<ap_lincons0_array_t*
>(&a)); 
 
  452inline bool lincons0_array::is_quasilinear()
 const 
  454  return ap_lincons0_array_is_quasilinear(
const_cast<ap_lincons0_array_t*
>(&a)); 
 
  462inline const ap_lincons0_array_t* lincons0_array::get_ap_lincons0_array_t()
 const 
  467inline ap_lincons0_array_t* lincons0_array::get_ap_lincons0_array_t()
 
std::ostream & operator<<(std::ostream &os, const lincons0 &s)
Definition apxx_lincons0_inline.hh:207