27inline generator0::generator0(ap_gentyp_t gentyp)
 
   29  ap_linexpr0_t* llin = ap_linexpr0_alloc(AP_LINEXPR_SPARSE,0);
 
   30  l = ap_generator0_make(gentyp, llin);
 
   33inline generator0::generator0(ap_gentyp_t gentyp, 
const linexpr0& lin)
 
   35  ap_linexpr0_t* llin = ap_linexpr0_copy(
const_cast<ap_linexpr0_t*
>(lin.get_ap_linexpr0_t()));
 
   36  l = ap_generator0_make(gentyp, llin);
 
   39inline generator0::generator0(
const generator0& x)
 
   41  l = ap_generator0_copy(
const_cast<ap_generator0_t*
>(&x.l)); 
 
   45inline generator0::generator0(
const generator0& x, 
const dimchange& d)
 
   47  if (!x.l.linexpr0) 
throw std::invalid_argument(
"apron::generator0::generator0(const generator0&, cont dimchange&) empty expression");
 
   48  l = ap_generator0_add_dimensions(
const_cast<ap_generator0_t*
>(&x.l), 
 
   49                                   const_cast<ap_dimchange_t*
>(d.get_ap_dimchange_t()));
 
   52inline generator0::generator0(
const generator0& x, 
const dimperm& d)
 
   54  if (!x.l.linexpr0) 
throw std::invalid_argument(
"apron::generator0::generator0(const generator0&, cont dimperm&) empty expression");
 
   55  l = ap_generator0_permute_dimensions(
const_cast<ap_generator0_t*
>(&x.l), 
 
   56                                       const_cast<ap_dimperm_t*
>(d.get_ap_dimperm_t()));
 
   64inline generator0::~generator0()
 
   66  ap_generator0_clear(
const_cast<ap_generator0_t*
>(&l)); 
 
   73inline generator0& generator0::operator= (
const generator0& x)
 
   76    ap_generator0_clear(
const_cast<ap_generator0_t*
>(&l));
 
   77    l = ap_generator0_copy(
const_cast<ap_generator0_t*
>(&x.l)); 
 
   86inline void generator0::resize(
size_t size)
 
   88  if (!l.linexpr0) 
throw std::invalid_argument(
"apron::generator0::resize(size_t) empty expression");
 
   89  ap_linexpr0_realloc(l.linexpr0, size);
 
   92inline void generator0::add_dimensions(
const dimchange& d)
 
   94  if (!l.linexpr0) 
throw std::invalid_argument(
"apron::generator0::add_dimensions(const dimchange&) empty expression");
 
   95  ap_generator0_add_dimensions_with(&l, 
const_cast<ap_dimchange_t*
>(d.get_ap_dimchange_t()));
 
   98inline void generator0::permute_dimensions(
const dimperm& d)
 
  100  if (!l.linexpr0) 
throw std::invalid_argument(
"apron::generator0::permute_dimensions(const dimperm&) empty expression");
 
  101  ap_generator0_permute_dimensions_with(&l, 
const_cast<ap_dimperm_t*
>(d.get_ap_dimperm_t())); 
 
  110inline size_t generator0::size()
 const 
  112  if (!l.linexpr0) 
throw std::invalid_argument(
"apron::generator0::size() empty expression");
 
  113  return ap_linexpr0_size(
const_cast<ap_linexpr0_t*
>(l.linexpr0)); 
 
  119inline ap_gentyp_t& generator0::get_gentyp()
 
  124inline const ap_gentyp_t& generator0::get_gentyp()
 const 
  129inline bool generator0::has_linexpr()
 const 
  131  return l.linexpr0!=NULL; 
 
  134inline linexpr0& generator0::get_linexpr()
 
  136  if (!l.linexpr0) 
throw std::invalid_argument(
"apron::generator0::get_linexpr() empty expression");
 
  137  return reinterpret_cast<linexpr0&
>(*l.linexpr0); 
 
  140inline const linexpr0& generator0::get_linexpr()
 const 
  142  if (!l.linexpr0) 
throw std::invalid_argument(
"apron::generator0::get_linexpr() empty expression");
 
  143  return reinterpret_cast<linexpr0&
>(*l.linexpr0); 
 
  146inline void generator0::set_linexpr(
const linexpr0& c)
 
  148  if (l.linexpr0) ap_linexpr0_free(l.linexpr0);
 
  149  l.linexpr0 = ap_linexpr0_copy(
const_cast<ap_linexpr0_t*
>(c.get_ap_linexpr0_t()));
 
  156inline std::ostream& 
operator<< (std::ostream& os, 
const generator0& s)
 
  158  if (!s.has_linexpr())
 
  159      throw std::invalid_argument(
"apron::operator<<(ostream&, const generator0&) empty expression");
 
  160  switch (s.get_gentyp()) {
 
  161  case AP_GEN_LINE:     os << 
"LINE: "; 
break;
 
  162  case AP_GEN_RAY:      os << 
"RAY: "; 
break;
 
  163  case AP_GEN_VERTEX:   os << 
"VERTEX: "; 
break;
 
  164  case AP_GEN_LINEMOD:  os << 
"LINEMOD: "; 
break;
 
  165  case AP_GEN_RAYMOD:   os << 
"RAYMOD: "; 
break;
 
  166  default: 
throw std::invalid_argument(
"apron::operator<<(ostream&, const generator0&) invalid generator type");
 
  168  return os << s.get_linexpr();
 
 
  172inline void generator0::print(
char** name_of_dim, FILE* stream)
 const 
  174  ap_generator0_fprint(stream, 
const_cast<ap_generator0_t*
>(&l), name_of_dim);
 
  181inline const ap_generator0_t* generator0::get_ap_generator0_t()
 const 
  186inline ap_generator0_t* generator0::get_ap_generator0_t()
 
  201inline generator0_array::generator0_array(
size_t size) 
 
  202  : a(ap_generator0_array_make(size)) 
 
  206inline generator0_array::generator0_array(
const generator0_array& x) 
 
  207  : a(ap_generator0_array_make(x.a.size))
 
  209  for (
size_t i=0; i<a.size; i++) 
 
  210    a.p[i] = ap_generator0_copy(&x.a.p[i]); 
 
  213inline generator0_array::generator0_array(
size_t size, 
const generator0 x[]) 
 
  214  : a(ap_generator0_array_make(size))
 
  216  for (
size_t i=0; i<size; i++) 
 
  217    a.p[i] = ap_generator0_copy(
const_cast<ap_generator0_t*
>(x[i].get_ap_generator0_t()));
 
  220inline generator0_array::generator0_array(
const std::vector<generator0>& x) 
 
  221  : a(ap_generator0_array_make(x.size()))
 
  223  for (
size_t i=0; i<a.size; i++)
 
  224    a.p[i] = ap_generator0_copy(
const_cast<ap_generator0_t*
>(x[i].get_ap_generator0_t())); 
 
  227inline generator0_array::generator0_array(
const generator0_array& x, 
const dimchange& d)
 
  229  a = ap_generator0_array_add_dimensions(
const_cast<ap_generator0_array_t*
>(&x.a), 
 
  230                                         const_cast<ap_dimchange_t*
>(d.get_ap_dimchange_t()));
 
  233inline generator0_array::generator0_array(
const generator0_array& x, 
const dimperm& d)
 
  235  a = ap_generator0_array_permute_dimensions(
const_cast<ap_generator0_array_t*
>(&x.a), 
 
  236                                             const_cast<ap_dimperm_t*
>(d.get_ap_dimperm_t()));
 
  243inline generator0_array::~generator0_array()
 
  245  ap_generator0_array_clear(&a);
 
  252inline generator0_array& generator0_array::operator= (
const generator0_array& x)
 
  255    ap_generator0_array_clear(&a);
 
  256    a = ap_generator0_array_make(x.a.size);
 
  257    for (
size_t i=0; i<a.size; i++) a.p[i] = ap_generator0_copy(&x.a.p[i]);
 
  262inline generator0_array& generator0_array::operator= (
const generator0 x[])
 
  264  size_t size = a.size;
 
  265  ap_generator0_array_clear(&a);
 
  266  a = ap_generator0_array_make(size);
 
  267  for (
size_t i=0; i<size; i++) 
 
  268    a.p[i] = ap_generator0_copy(
const_cast<ap_generator0_t*
>(x[i].get_ap_generator0_t()));
 
  272inline generator0_array& generator0_array::operator= (
const std::vector<generator0>& x)
 
  274  size_t size = x.size();
 
  275  ap_generator0_array_clear(&a);
 
  276  a = ap_generator0_array_make(size);
 
  277  for (
size_t i=0; i<size; i++) 
 
  278    a.p[i] = ap_generator0_copy(
const_cast<ap_generator0_t*
>(x[i].get_ap_generator0_t()));
 
  286inline void generator0_array::resize(
size_t size)
 
  288  ap_generator0_array_resize(&a, size);
 
  291inline void generator0_array::add_dimensions(
const dimchange& d)
 
  293  ap_generator0_array_add_dimensions_with(&a, 
const_cast<ap_dimchange_t*
>(d.get_ap_dimchange_t()));
 
  296inline void generator0_array::permute_dimensions(
const dimperm& d)
 
  298  ap_generator0_array_permute_dimensions_with(&a, 
const_cast<ap_dimperm_t*
>(d.get_ap_dimperm_t()));
 
  305inline size_t generator0_array::size()
 const 
  310inline generator0* generator0_array::contents()
 
  312  return reinterpret_cast<generator0*
>(a.p); 
 
  315inline const generator0* generator0_array::contents()
 const 
  317  return reinterpret_cast<generator0*
>(a.p); 
 
  320inline generator0& generator0_array::operator[](
size_t i)
 
  322  return reinterpret_cast<generator0&
>(a.p[i]); 
 
  325inline const generator0& generator0_array::operator[](
size_t i)
 const 
  327  return reinterpret_cast<generator0&
>(a.p[i]); 
 
  330inline generator0& generator0_array::get(
size_t i)
 
  332  if (i >= a.size) 
throw std::out_of_range(
"apron::generator0_array::get(size_t)");
 
  333  return reinterpret_cast<generator0&
>(a.p[i]);
 
  336inline const generator0& generator0_array::get(
size_t i)
 const 
  338  if (i >= a.size) 
throw std::out_of_range(
"apron::generator0_array::get(size_t)");
 
  339  return reinterpret_cast<generator0&
>(a.p[i]); 
 
  346inline generator0_array::operator std::vector<generator0>()
 const 
  349  std::vector<generator0> v = std::vector<generator0>(sz);
 
  350  for (
size_t i=0;i<sz;i++)
 
  359inline std::ostream& 
operator<< (std::ostream& os, 
const generator0_array& s)
 
  361  size_t size = s.size();
 
  363  for (
size_t i=0;i<size;i++)
 
 
  368inline void generator0_array::print(
char** name_of_dim, FILE* stream)
 const 
  370  ap_generator0_array_fprint(stream, 
const_cast<ap_generator0_array_t*
>(&a), name_of_dim);
 
  377inline const ap_generator0_array_t* generator0_array::get_ap_generator0_array_t()
 const 
  382inline ap_generator0_array_t* generator0_array::get_ap_generator0_array_t()
 
std::ostream & operator<<(std::ostream &os, const generator0 &s)
Definition apxx_generator0_inline.hh:156