28inline linexpr1::linexpr1(ap_linexpr1_t& p) : l(p)
 
   32inline linexpr1::linexpr1(
const environment& e, 
const linexpr0& x)
 
   34  l = ap_linexpr1_of_linexpr0(
const_cast<ap_environment_t*
>(e.get_ap_environment_t()),
 
   35                              ap_linexpr0_copy(
const_cast<ap_linexpr0_t*
>(x.get_ap_linexpr0_t())));
 
   38inline linexpr1::linexpr1(
const environment& e, ap_linexpr_discr_t lin_discr, 
size_t size)
 
   40  l = ap_linexpr1_make(
const_cast<ap_environment_t*
>(e.get_ap_environment_t()),
 
   44inline linexpr1::linexpr1(
const linexpr1& x)
 
   46  l = ap_linexpr1_copy(
const_cast<ap_linexpr1_t*
>(&x.l));
 
   49inline linexpr1::linexpr1(
const linexpr1& x, 
const environment& e)
 
   52    ap_linexpr1_extend_environment(&l,
 
   53                                   const_cast<ap_linexpr1_t*
>(&x.l),
 
   54                                   const_cast<ap_environment_t*
>(e.get_ap_environment_t()));
 
   55  if (r) 
throw std::invalid_argument(
"apron::linexpr1::linexpr1(const linexpr1&, environment&) not a super-environment");
 
   63inline linexpr1::~linexpr1()
 
   65  ap_linexpr1_clear(&l);
 
   72inline linexpr1& linexpr1::operator=(
const linexpr1& x)
 
   74  ap_linexpr1_t ll = ap_linexpr1_copy(
const_cast<ap_linexpr1_t*
>(&x.l));
 
   75  ap_linexpr1_clear(&l);
 
   84inline void linexpr1::extend_environment(
const environment& e)
 
   87    ap_linexpr1_extend_environment_with(&l,
 
   88                                        const_cast<ap_environment_t*
>(e.get_ap_environment_t()));
 
   89  if (r) 
throw std::invalid_argument(
"apron::linexpr1::extend_environment(const environment&) not a super-environment");
 
   97inline environment linexpr1::get_environment()
 const 
   99  return ap_environment_copy(ap_linexpr1_envref(
const_cast<ap_linexpr1_t*
>(&l)));
 
  102inline const linexpr0& linexpr1::get_linexpr0()
 const 
  104  return reinterpret_cast<linexpr0&
>(*ap_linexpr1_linexpr0ref(
const_cast<ap_linexpr1_t*
>(&l)));
 
  107inline linexpr0& linexpr1::get_linexpr0()
 
  109  return reinterpret_cast<linexpr0&
>(*ap_linexpr1_linexpr0ref(&l));
 
  112inline size_t linexpr1::size()
 const 
  114  return ap_linexpr0_size(ap_linexpr1_linexpr0ref(
const_cast<ap_linexpr1_t*
>(&l)));
 
  117inline ap_linexpr_discr_t linexpr1::get_discr()
 const 
  119  return ap_linexpr1_linexpr0ref(
const_cast<ap_linexpr1_t*
>(&l))->discr;
 
  122inline coeff& linexpr1::get_cst()
 
  124  return reinterpret_cast<coeff&
>(*ap_linexpr1_cstref(&l));
 
  127inline const coeff& linexpr1::get_cst()
 const 
  129  return reinterpret_cast<coeff&
>(*ap_linexpr1_cstref(
const_cast<ap_linexpr1_t*
>(&l))); 
 
  132inline coeff& linexpr1::operator[](
const var& var)
 
  134  ap_coeff_t* x = ap_linexpr1_coeffref(&l, 
 
  135                                       const_cast<ap_var_t
>(var.get_ap_var_t()));
 
  136  if (!x) 
throw std::invalid_argument(
"apron::linexpr1::operator[](const var&) variable not in environment");
 
  137  return reinterpret_cast<coeff&
>(*x); 
 
  140inline const coeff& linexpr1::operator[](
const var& var)
 const 
  142  ap_coeff_t* x = ap_linexpr1_coeffref(
const_cast<ap_linexpr1_t*
>(&l), 
 
  143                                       const_cast<ap_var_t
>(var.get_ap_var_t()));
 
  144  if (!x) 
throw std::invalid_argument(
"apron::linexpr1::operator[](const var&) variable not in environment");
 
  145  return reinterpret_cast<coeff&
>(*x); 
 
  152inline std::ostream& 
operator<<(std::ostream& os, 
const linexpr1& s)
 
  155  for (linexpr1::const_iterator i=s.begin();i.valid();++i) {
 
  160  if (first) os << 
"0";
 
 
  164inline void linexpr1::print(FILE* stream)
 const 
  166  ap_linexpr1_fprint(stream, 
const_cast<ap_linexpr1_t*
>(&l));
 
  173inline bool linexpr1::is_integer()
 const 
  175  return ap_linexpr1_is_integer(
const_cast<ap_linexpr1_t*
>(&l));
 
  178inline bool linexpr1::is_real()
 const 
  180  return ap_linexpr1_is_real(
const_cast<ap_linexpr1_t*
>(&l)); 
 
  183inline ap_linexpr_type_t linexpr1::get_type()
 const 
  185  return ap_linexpr1_type(
const_cast<ap_linexpr1_t*
>(&l));
 
  188inline bool linexpr1::is_linear()
 const 
  190  return ap_linexpr1_is_linear(
const_cast<ap_linexpr1_t*
>(&l)); 
 
  193inline bool linexpr1::is_quasilinear()
 const 
  195  return ap_linexpr1_is_quasilinear(
const_cast<ap_linexpr1_t*
>(&l));
 
  202inline void linexpr1::const_iterator::skip_AP_DIM_MAX()
 
  204  if (l->linexpr0->discr == AP_LINEXPR_DENSE) 
return;
 
  205  while (pos < l->linexpr0->size && l->linexpr0->p.linterm[pos].dim == AP_DIM_MAX) pos++;
 
  208inline linexpr1::const_iterator::const_iterator(ap_linexpr1_t* e)
 
  214inline linexpr1::const_iterator::const_iterator(
const linexpr1& e)
 
  216  l = 
const_cast<ap_linexpr1_t*
>(e.get_ap_linexpr1_t());
 
  221inline linexpr1::const_iterator::const_iterator(
const const_iterator& i)
 
  226inline linexpr1::iterator::iterator(ap_linexpr1_t* e)
 
  227  : linexpr1::const_iterator(e)
 
  230inline linexpr1::iterator::iterator(linexpr1& e)
 
  231  : linexpr1::const_iterator(e.get_ap_linexpr1_t())
 
  234inline linexpr1::iterator::iterator(
const iterator& i) 
 
  235  : linexpr1::const_iterator(i.l)
 
  238inline linexpr1::const_iterator& linexpr1::const_iterator::operator=(
const const_iterator& i)
 
  245inline linexpr1::iterator& linexpr1::iterator::operator=(
const iterator& i)
 
  252inline ap_dim_t linexpr1::const_iterator::get_dim()
 const 
  254  if (pos >= l->linexpr0->size) 
throw std::out_of_range(
"apron::linexpr1::const_iterator::get_dim()");
 
  255  if (l->linexpr0->discr == AP_LINEXPR_DENSE) 
return pos;
 
  256  else return l->linexpr0->p.linterm[pos].dim;
 
  259inline const var& linexpr1::const_iterator::get_var()
 const 
  262  if (pos >= l->linexpr0->size) 
throw std::out_of_range(
"apron::linexpr1::const_iterator::get_var()");
 
  263  if (l->linexpr0->discr == AP_LINEXPR_DENSE) d = pos;
 
  264  else d = l->linexpr0->p.linterm[pos].dim;
 
  265  return *
reinterpret_cast<var*
>(&l->env->var_of_dim[d]);
 
  268inline const coeff& linexpr1::const_iterator::get_coeff()
 const 
  270  if (pos >= l->linexpr0->size) 
throw std::out_of_range(
"apron::linexpr1::const_iterator::get_coeff()");
 
  271  if (l->linexpr0->discr == AP_LINEXPR_DENSE) 
return reinterpret_cast<coeff&
>(l->linexpr0->p.coeff[pos]);
 
  272  else return reinterpret_cast<coeff&
>(l->linexpr0->p.linterm[pos].coeff);
 
  275inline coeff& linexpr1::iterator::get_coeff()
 const 
  277  if (pos >= l->linexpr0->size) 
throw std::out_of_range(
"apron::linexpr1::iterator::get_coeff()");
 
  278  if (l->linexpr0->discr == AP_LINEXPR_DENSE) 
return reinterpret_cast<coeff&
>(l->linexpr0->p.coeff[pos]);
 
  279  else return reinterpret_cast<coeff&
>(l->linexpr0->p.linterm[pos].coeff);
 
  282inline void linexpr1::const_iterator::next()
 
  288inline void linexpr1::const_iterator::operator++()
 
  293inline bool linexpr1::const_iterator::valid()
 const 
  295  return pos < l->linexpr0->size;
 
  298inline linexpr1::const_iterator linexpr1::begin()
 const 
  300  return const_iterator(*
this); 
 
  303inline linexpr1::iterator linexpr1::begin()
 
  305  return iterator(*
this); 
 
  312inline void linexpr1::minimize()
 
  314  ap_linexpr1_minimize(&l);
 
  321inline const ap_linexpr1_t* linexpr1::get_ap_linexpr1_t()
 const 
  326inline ap_linexpr1_t* linexpr1::get_ap_linexpr1_t()
 
static bool print_coeff_sign(std::ostream &os, const coeff &c, bool &first, bool cst)
Definition apxx_linexpr0_inline.hh:206
std::ostream & operator<<(std::ostream &os, const linexpr1 &s)
Definition apxx_linexpr1_inline.hh:152