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