27inline abstract0::abstract0(ap_abstract0_t* x)
34 m.
raise(
"apron::abstract0::abstract0(manager&, size_t, size_t, top)",
a);
40 m.
raise(
"apron::abstract0::abstract0(manager&, size_t, size_t, bottom)",
a);
46 m.
raise(
"apron::abstract0::abstract0::(manager&, const abstract0&)",
a);
51 if (x.
size()<intdim+realdim)
52 throw std::invalid_argument(
"apron::abstract0::abstract0(manager&, size_t, size_t, const interval_array&) array too short");
55 m.
raise(
"apron::abstract0::abstract0(manager&, size_t, size_t, const interval_array&)",
a);
62 m.
raise(
"apron::abstract0::abstract0(manager&, size_t, size_t, const lincons0_array&)",
a);
69 m.
raise(
"apron::abstract0::abstract0(manager&, size_t, size_t, const tcons0_array&)",
a);
74 a = ap_abstract0_copy(t.
a->man, t.
a);
85 if (
a &&
a->value) ap_abstract0_free(
a->man,
a);
102 ap_abstract0_t* r = ap_abstract0_copy(
a->man, t.
a);
103 manager::raise(
a->man,
"apron::abstract0::operator=(const abstract0&)",r);
104 ap_abstract0_free(
a->man,
a);
112 ap_dimension_t d = ap_abstract0_dimension(
a->man,
a);
113 ap_abstract0_t* r = ap_abstract0_top(
a->man, d.intdim, d.realdim);
115 ap_abstract0_free(
a->man,
a);
122 ap_dimension_t d = ap_abstract0_dimension(
a->man,
a);
123 ap_abstract0_t* r = ap_abstract0_bottom(
a->man, d.intdim, d.realdim);
125 ap_abstract0_free(
a->man,
a);
132 ap_dimension_t d = ap_abstract0_dimension(
a->man,
a);
133 if (x.
size()<d.intdim+d.realdim)
134 throw std::invalid_argument(
"apron::abstract0::operator=(const interval_array&) array too short");
135 ap_abstract0_t* r = ap_abstract0_of_box(
a->man, d.intdim, d.realdim,
137 manager::raise(
a->man,
"apron::abstract0::operator=(const interval_array&)",r);
138 ap_abstract0_free(
a->man,
a);
145 ap_dimension_t d = ap_abstract0_dimension(
a->man,
a);
147 ap_abstract0_of_lincons_array(
a->man, d.intdim, d.realdim,
149 manager::raise(
a->man,
"apron::abstract0::operator=(const lincons0_array&)",r);
150 ap_abstract0_free(
a->man,
a);
157 ap_dimension_t d = ap_abstract0_dimension(
a->man,
a);
159 ap_abstract0_of_tcons_array(
a->man, d.intdim, d.realdim,
161 manager::raise(
a->man,
"apron::abstract0::operator=(const tcons0_array&)",r);
162 ap_abstract0_free(
a->man,
a);
171 m.
raise(
"apron::abstract0::set(manager&, abstract0&)",r);
181 if (intdim!=AP_DIM_MAX) d.intdim = intdim;
182 if (realdim!=AP_DIM_MAX) d.realdim = realdim;
183 ap_abstract0_t* r = ap_abstract0_top(m.
get_ap_manager_t(), d.intdim, d.realdim);
184 m.
raise(
"apron::abstract0::set(manager&, top, size_t, size_t)",r);
193 if (intdim!=AP_DIM_MAX) d.intdim = intdim;
194 if (realdim!=AP_DIM_MAX) d.realdim = realdim;
195 ap_abstract0_t* r = ap_abstract0_bottom(m.
get_ap_manager_t(), d.intdim, d.realdim);
196 m.
raise(
"apron::abstract0::set(manager&, bottom, size_t, size_t)",r);
205 if (intdim!=AP_DIM_MAX) d.intdim = intdim;
206 if (realdim!=AP_DIM_MAX) d.realdim = realdim;
207 if (x.
size()<d.intdim+d.realdim)
208 throw std::invalid_argument(
"apron::abstract0::set(manager&, const interval_array&, size_t, size_t) array too short");
209 ap_abstract0_t* r = ap_abstract0_of_box(m.
get_ap_manager_t(), d.intdim, d.realdim,
211 m.
raise(
"apron::abstract0::set(manager&, const interval_array&, size_t, size_t)",r);
220 if (intdim!=AP_DIM_MAX) d.intdim = intdim;
221 if (realdim!=AP_DIM_MAX) d.realdim = realdim;
225 m.
raise(
"apron::abstract0::set(manager&, const lincons0_array&, size_t, size_t)",r);
234 if (intdim!=AP_DIM_MAX) d.intdim = intdim;
235 if (realdim!=AP_DIM_MAX) d.realdim = realdim;
239 m.
raise(
"apron::abstract0::set(manager&, const tcons0_array&, size_t, size_t)",r);
252 m.
raise(
"abstract0::minimize(manager&)");
259 m.
raise(
"apron::abstract0::canonicalize(manager&)");
266 m.
raise(
"apron::abstract0::approximate(manager&, int)");
277 m.
raise(
"apron::abstract0::print(manager&, char**, FILE*)");
280inline void printdiff(manager& m,
const abstract0& x,
const abstract0& y,
char** name_of_dim = NULL, FILE* stream = stdout)
282 ap_abstract0_fprintdiff(stream, m.get_ap_manager_t(), x.a, y.a, name_of_dim);
283 m.raise(
"apron::printdiff(manager&, const abstract0&, const abstract0&, char**, FILE*)");
289 m.
raise(
"apron::abstract0::dump(manager&, FILE*)");
292inline std::ostream&
operator<< (std::ostream& os,
const abstract0& s)
294 manager m = s.get_manager();
295 if (s.is_bottom(m))
return os <<
"bottom";
296 if (s.is_top(m))
return os <<
"top";
297 return os << s.to_lincons_array(m);
307 m.
raise(
"apron::abstract0::serialize_raw(manager&)");
308 std::string* s =
new std::string((
char*)x.ptr, x.size);
313inline abstract0&
deserialize(manager& m, abstract0& dst,
const std::string& s,
size_t* eaten = NULL)
316 ap_abstract0_t* r = ap_abstract0_deserialize_raw(m.get_ap_manager_t(),
const_cast<char*
>(s.data()), &x);
317 m.raise(
"apron::deserialize_raw(manager&, abstract0&, const std::string&, size_t*)",r);
318 ap_abstract0_free(m.get_ap_manager_t(), dst.a);
320 if (eaten) *eaten = x;
330 return ap_manager_copy(ap_abstract0_manager(
a));
336 m.
raise(
"apron::abstract0::get_dimension(manager&)");
343 m.
raise(
"apron::abstract0::get_size(manager&)");
355 m.
raise(
"apron::abstract0::is_bottom(manager&)");
362 m.
raise(
"apron::abstract0::is_top(manager&)");
369 m.
raise(
"apron::abstract0::is_eq(manager&, const abstract&)");
376 m.
raise(
"apron::abstract0::is_leq(manager&, const abstract&)");
383 m.
raise(
"apron::abstract0::sat(manager&, const lincons0&)");
390 m.
raise(
"apron::abstract0::sat(manager&, const tcons0&)");
397 m.
raise(
"apron::abstract0::sat(manager&, ap_dim_t, const interval&)");
404 m.
raise(
"apron::abstract0::is_dimension_unconstrained(manager&, ap_dim_t)");
409inline bool operator== (
const abstract0& x,
const abstract0& y)
411 bool r = ap_abstract0_is_eq(x.a->man, x.a, y.a);
412 manager::raise(x.a->man,
"apron::operator==(const abstract0&, const abstract0&)");
416inline bool operator!= (
const abstract0& x,
const abstract0& y)
421inline bool operator<= (
const abstract0& x,
const abstract0& y)
423 bool r = ap_abstract0_is_leq(x.a->man, x.a, y.a);
424 manager::raise(x.a->man,
"apron::operator<=(const abstract0&, const abstract0&)");
428inline bool operator>= (
const abstract0& x,
const abstract0& y)
433inline bool operator> (
const abstract0& x,
const abstract0& y)
438inline bool operator< (
const abstract0& x,
const abstract0& y)
453 m.
raise(
"apron::abstract0::bound(manager&, const linexpr0&)");
463 m.
raise(
"apron::abstract0::bound(manager&, const texpr0&)");
471 m.
raise(
"apron::abstract0::bound(manager&, ap_dim_t)");
479 m.
raise(
"apron::abstract0::to_box(manager&)");
487 m.
raise(
"apron::abstract0::to_lincons_array(manager&)");
495 m.
raise(
"apron::abstract0::to_tcons_array(manager&)");
501 ap_generator0_array_t r = ap_abstract0_to_generator_array(m.
get_ap_manager_t(),
a);
503 m.
raise(
"apron::abstract0::to_generator_array(manager&)");
514 m.
raise(
"apron::abstract0::meet(manager&, const abstract0&)");
518inline abstract0&
meet(manager& m, abstract0& dst,
const abstract0& x,
const abstract0& y)
520 ap_abstract0_t* r = ap_abstract0_meet(m.get_ap_manager_t(),
false, x.a, y.a);
521 m.raise(
"apron::meet(manager&, abstract0&, const abstract0&, const abstract0&)",r);
522 ap_abstract0_free(m.get_ap_manager_t(), dst.a);
527inline abstract0&
meet(manager& m, abstract0& dst,
const std::vector<const abstract0*>& x)
529 ap_abstract0_t* xx[x.size()];
530 for (
size_t i=0;i<x.size();i++)
533 ap_abstract0_meet_array(m.get_ap_manager_t(), xx, x.size());
534 m.raise(
"apron::meet(manager&, abstract0&, const std::vector<const abstract0*>&)",r);
535 ap_abstract0_free(m.get_ap_manager_t(), dst.a);
540inline abstract0&
meet(manager& m, abstract0& dst,
size_t sz,
const abstract0 *
const x[])
542 ap_abstract0_t* xx[sz];
543 for (
size_t i=0;i<sz;i++)
546 ap_abstract0_meet_array(m.get_ap_manager_t(), xx, sz);
547 m.raise(
"apron::meet(manager&, abstract0&, size_t, const abstract0 * const [])",r);
548 ap_abstract0_free(m.get_ap_manager_t(), dst.a);
556 m.
raise(
"apron::abstract0::join(manager&, const abstract0&)");
560inline abstract0&
join(manager& m, abstract0& dst,
const abstract0& x,
const abstract0& y)
562 ap_abstract0_t* r = ap_abstract0_join(m.get_ap_manager_t(),
false, x.a, y.a);
563 m.raise(
"apron::join(manager&, abstract0&, const abstract0&, const abstract0&)",r);
564 ap_abstract0_free(m.get_ap_manager_t(), dst.a);
569inline abstract0&
join(manager& m, abstract0& dst,
size_t sz,
const abstract0 *
const x[])
571 ap_abstract0_t* xx[sz];
572 for (
size_t i=0;i<sz;i++)
575 ap_abstract0_join_array(m.get_ap_manager_t(), xx, sz);
576 m.raise(
"apron::join(manager&, abstract0&, size_t, const abstract0 * const [])",r);
577 ap_abstract0_free(m.get_ap_manager_t(), dst.a);
582inline abstract0&
join(manager& m, abstract0& dst,
const std::vector<const abstract0*>& x)
584 ap_abstract0_t* xx[x.size()];
585 for (
size_t i=0;i<x.size();i++)
588 ap_abstract0_join_array(m.get_ap_manager_t(), xx, x.size());
589 m.raise(
"apron::join(manager&, abstract0&, const std::vector<const abstract0*>&)",r);
590 ap_abstract0_free(m.get_ap_manager_t(), dst.a);
599 m.
raise(
"apron::abstract0::meet(manager&, const lincons0_array&)");
603inline abstract0&
meet(manager& m, abstract0& dst,
const abstract0& x,
const lincons0_array& y)
606 ap_abstract0_meet_lincons_array(m.get_ap_manager_t(),
false, x.a,
607 const_cast<ap_lincons0_array_t*
>(y.get_ap_lincons0_array_t()));
608 m.raise(
"apron::meet(manager&, abstract0&, const abstract0&, const lincons0_array&)",r);
609 ap_abstract0_free(m.get_ap_manager_t(), dst.a);
619 m.
raise(
"apron::abstract0::meet(manager&, const tcons0_array&)");
623inline abstract0&
meet(manager& m, abstract0& dst,
const abstract0& x,
const tcons0_array& y)
626 ap_abstract0_meet_tcons_array(m.get_ap_manager_t(),
false, x.a,
627 const_cast<ap_tcons0_array_t*
>(y.get_ap_tcons0_array_t()));
628 m.raise(
"apron::meet(manager&, abstract0&, const abstract0&, const tcons0_array&)",r);
629 ap_abstract0_free(m.get_ap_manager_t(), dst.a);
640 m.
raise(
"apron::abstract0::add_rays(manager&, const generator0_array&)");
644inline abstract0&
add_rays(manager& m, abstract0& dst,
const abstract0& x,
const generator0_array& y)
647 ap_abstract0_add_ray_array(m.get_ap_manager_t(),
false, x.a,
648 const_cast<ap_generator0_array_t*
>(y.get_ap_generator0_array_t()));
649 m.raise(
"apron::add_rays(manager&, abstract0&, const abstract0&, const generator0_array&)",r);
650 ap_abstract0_free(m.get_ap_manager_t(), dst.a);
659 a = ap_abstract0_meet(
a->man,
true,
a, y.
a);
660 manager::raise(
a->man,
"apron::abstract0::operator*=(const abstract0&)");
666 a = ap_abstract0_join(
a->man,
true,
a, y.
a);
667 manager::raise(
a->man,
"apron::abstract0::operator+=(const abstract0&)");
673 a = ap_abstract0_meet_lincons_array(
a->man,
true,
a,
675 manager::raise(
a->man,
"apron::abstract0::operator*=(const lincons0_array&)");
681 a = ap_abstract0_meet_tcons_array(
a->man,
true,
a,
683 manager::raise(
a->man,
"apron::abstract0::operator*=(const tcons0_array&)");
689 a = ap_abstract0_add_ray_array(
a->man,
true,
a,
691 manager::raise(
a->man,
"apron::abstract0::operator+=(const generator0_array&)");
708 const_cast<ap_dim_t*
>(
dim),
709 reinterpret_cast<ap_linexpr0_t**
>(
const_cast<linexpr0**
>(l)),
711 m.
raise(
"apron::abstract0::assign(manager&, size_t size, const ap_dim_t[], const linexpr0 * const [], const abstract0&)");
717 if (l.size()!=
dim.size())
718 throw std::invalid_argument(
"apron::abstract0::assign(manager&, const std::vector<ap_dim_t>&, const std::vector<const linexpr0*>&, const abstract0&) vectors have different size");
720 ap_dim_t dd[
dim.size()];
721 for (
size_t i=0;i<l.size();i++) {
725 return assign(m, l.size(), dd, ll, inter);
728inline abstract0&
assign(manager& m, abstract0& dst,
const abstract0& src, ap_dim_t dim,
const linexpr0& l,
const abstract0& inter =
abstract0::null)
730 const linexpr0* ll = &l;
731 return assign(m, dst, src, 1, &dim, &ll, inter);
734inline abstract0&
assign(manager& m, abstract0& dst,
const abstract0& src,
size_t size,
const ap_dim_t dim[],
const linexpr0 *
const l[],
const abstract0& inter =
abstract0::null)
737 ap_abstract0_assign_linexpr_array(m.get_ap_manager_t(),
false, src.a,
738 const_cast<ap_dim_t*
>(dim),
739 reinterpret_cast<ap_linexpr0_t**
>(
const_cast<linexpr0**
>(l)),
741 m.raise(
"apron::assign((manager&, abstract0&, const abstract0&, size_t size, const ap_dim_t[], const linexpr0 * const [], const abstract0&)",r);
742 ap_abstract0_free(m.get_ap_manager_t(), dst.a);
747inline abstract0&
assign(manager& m, abstract0& dst,
const abstract0& src,
const std::vector<ap_dim_t>& dim,
const std::vector<const linexpr0*>& l,
const abstract0& inter =
abstract0::null)
749 if (l.size()!=dim.size())
750 throw std::invalid_argument(
"apron::assign(manager&, abstract0, const abstract0&, const std::vector<ap_dim_t>&, const std::vector<const linexpr0*>&, const abstract0&) vectors have different size");
751 const linexpr0* ll[l.size()];
752 ap_dim_t dd[dim.size()];
753 for (
size_t i=0;i<l.size();i++) {
757 return assign(m, dst, src, l.size(), dd, ll, inter);
773 const_cast<ap_dim_t*
>(
dim),
774 reinterpret_cast<ap_texpr0_t**
>(
const_cast<texpr0**
>(l)),
776 m.
raise(
"apron::abstract0::assign(manager&, size_t size, const ap_dim_t[], const texpr0 * const [], const abstract0&)");
782 if (l.size()!=
dim.size())
783 throw std::invalid_argument(
"apron::abstract0::assign(manager&, const std::vector<ap_dim_t>&, const std::vector<const texpr0*>&, const abstract0&) vectors have different size");
784 const texpr0* ll[l.size()];
785 ap_dim_t dd[
dim.size()];
786 for (
size_t i=0;i<l.size();i++) {
790 return assign(m, l.size(), dd, ll, inter);
793inline abstract0&
assign(manager& m, abstract0& dst,
const abstract0& src, ap_dim_t dim,
const texpr0& l,
const abstract0& inter =
abstract0::null)
795 const texpr0* ll = &l;
796 return assign(m, dst, src, 1, &dim, &ll, inter);
799inline abstract0&
assign(manager& m, abstract0& dst,
const abstract0& src,
size_t size,
const ap_dim_t dim[],
const texpr0 *
const l[],
const abstract0& inter =
abstract0::null)
802 ap_abstract0_assign_texpr_array(m.get_ap_manager_t(),
false, src.a,
803 const_cast<ap_dim_t*
>(dim),
804 reinterpret_cast<ap_texpr0_t**
>(
const_cast<texpr0**
>(l)),
806 m.raise(
"apron::assign((manager&, abstract0&, const abstract0&, size_t size, const ap_dim_t[], const texpr0 * const [], const abstract0&)",r);
807 ap_abstract0_free(m.get_ap_manager_t(), dst.a);
812inline abstract0&
assign(manager& m, abstract0& dst,
const abstract0& src,
const std::vector<ap_dim_t>& dim,
const std::vector<const texpr0*>& l,
const abstract0& inter =
abstract0::null)
814 if (l.size()!=dim.size())
815 throw std::invalid_argument(
"apron::assign(manager&, abstract0, const abstract0&, const std::vector<ap_dim_t>&, const std::vector<const texpr0*>&, const abstract0&) vectors have different size");
816 const texpr0* ll[l.size()];
817 ap_dim_t dd[dim.size()];
818 for (
size_t i=0;i<l.size();i++) {
822 return assign(m, dst, src, l.size(), dd, ll, inter);
839 const_cast<ap_dim_t*
>(
dim),
840 reinterpret_cast<ap_linexpr0_t**
>(
const_cast<linexpr0**
>(l)),
842 m.
raise(
"apron::abstract0::substitute(manager&, size_t size, const ap_dim_t[], const linexpr0 * const [], const abstract0&)");
848 if (l.size()!=
dim.size())
849 throw std::invalid_argument(
"apron::abstract0::substitute(manager&, const std::vector<ap_dim_t>&, const std::vector<const linexpr0*>&, const abstract0&) vectors have different size");
851 ap_dim_t dd[
dim.size()];
852 for (
size_t i=0;i<l.size();i++) {
856 return substitute(m, l.size(), dd, ll, inter);
859inline abstract0&
substitute(manager& m, abstract0& dst,
const abstract0& src, ap_dim_t dim,
const linexpr0& l,
const abstract0& inter =
abstract0::null)
861 const linexpr0* ll = &l;
862 return substitute(m, dst, src, 1, &dim, &ll, inter);
865inline abstract0&
substitute(manager& m, abstract0& dst,
const abstract0& src,
size_t size,
const ap_dim_t dim[],
const linexpr0 *
const l[],
const abstract0& inter =
abstract0::null)
868 ap_abstract0_substitute_linexpr_array(m.get_ap_manager_t(),
false, src.a,
869 const_cast<ap_dim_t*
>(dim),
870 reinterpret_cast<ap_linexpr0_t**
>(
const_cast<linexpr0**
>(l)),
872 m.raise(
"apron::substitute((manager&, abstract0&, const abstract0&, size_t size, const ap_dim_t[], const linexpr0 *const [], const abstract0&)",r);
873 ap_abstract0_free(m.get_ap_manager_t(), dst.a);
878inline abstract0&
substitute(manager& m, abstract0& dst,
const abstract0& src,
const std::vector<ap_dim_t>& dim,
const std::vector<const linexpr0*>& l,
const abstract0& inter =
abstract0::null)
880 if (l.size()!=dim.size())
881 throw std::invalid_argument(
"apron::substitute(manager&, abstract0, const abstract0&, const std::vector<ap_dim_t>&, const std::vector<const linexpr0*>&, const abstract0&) vectors have different size");
882 const linexpr0* ll[l.size()];
883 ap_dim_t dd[dim.size()];
884 for (
size_t i=0;i<l.size();i++) {
888 return substitute(m, dst, src, l.size(), dd, ll, inter);
904 const_cast<ap_dim_t*
>(
dim),
905 reinterpret_cast<ap_texpr0_t**
>(
const_cast<texpr0**
>(l)),
907 m.
raise(
"apron::abstract0::substitute(manager&, size_t size, const ap_dim_t[], const texpr0 * const [], const abstract0&)");
913 if (l.size()!=
dim.size())
914 throw std::invalid_argument(
"apron::abstract0::substitute(manager&, const std::vector<ap_dim_t>&, const std::vector<const texpr0*>&, const abstract0&) vectors have different size");
915 const texpr0* ll[l.size()];
916 ap_dim_t dd[
dim.size()];
917 for (
size_t i=0;i<l.size();i++) {
921 return substitute(m, l.size(), dd, ll, inter);
924inline abstract0&
substitute(manager& m, abstract0& dst,
const abstract0& src, ap_dim_t dim,
const texpr0& l,
const abstract0& inter =
abstract0::null)
926 const texpr0* ll = &l;
927 return substitute(m, dst, src, 1, &dim, &ll, inter);
930inline abstract0&
substitute(manager& m, abstract0& dst,
const abstract0& src,
size_t size,
const ap_dim_t dim[],
const texpr0 *
const l[],
const abstract0& inter =
abstract0::null)
933 ap_abstract0_substitute_texpr_array(m.get_ap_manager_t(),
false, src.a,
934 const_cast<ap_dim_t*
>(dim),
935 reinterpret_cast<ap_texpr0_t**
>(
const_cast<texpr0**
>(l)),
937 m.raise(
"apron::substitute((manager&, abstract0&, const abstract0&, size_t size, const ap_dim_t[], const texpr0 * const [], const abstract0&)",r);
938 ap_abstract0_free(m.get_ap_manager_t(), dst.a);
943inline abstract0&
substitute(manager& m, abstract0& dst,
const abstract0& src,
const std::vector<ap_dim_t>& dim,
const std::vector<const texpr0*>& l,
const abstract0& inter =
abstract0::null)
945 if (l.size()!=dim.size())
946 throw std::invalid_argument(
"apron::substitute(manager&, abstract0, const abstract0&, const std::vector<ap_dim_t>&, const std::vector<const texpr0*>&, const abstract0&) vectors have different size");
947 const texpr0* ll[l.size()];
948 ap_dim_t dd[dim.size()];
949 for (
size_t i=0;i<l.size();i++) {
953 return substitute(m, dst, src, l.size(), dd, ll, inter);
970 const_cast<ap_dim_t*
>(
dim),
972 m.
raise(
"apron::abstract0::substitute(orget(manager&, size_t size, const ap_dim_t[], bool)");
978 ap_dim_t dd[
dim.size()];
979 for (
size_t i=0;i<
dim.size();i++) dd[i] =
dim[i];
980 return forget(m,
dim.size(), dd, project);
983inline abstract0&
forget(manager& m, abstract0& dst,
const abstract0& src, ap_dim_t dim,
bool project =
false)
985 return forget(m, dst, src, 1, &dim, project);
988inline abstract0&
forget(manager& m, abstract0& dst,
const abstract0& src,
size_t size,
const ap_dim_t dim[],
bool project =
false)
991 ap_abstract0_forget_array(m.get_ap_manager_t(),
false, src.a,
992 const_cast<ap_dim_t*
>(dim),
994 m.raise(
"apron::forget(manager&, abstract0&, const abstract0&, size_t size, const ap_dim_t[], bool)",r);
995 ap_abstract0_free(m.get_ap_manager_t(), dst.a);
1000inline abstract0&
forget(manager& m, abstract0& dst,
const abstract0& src,
const std::vector<ap_dim_t> dim,
bool project =
false)
1002 ap_dim_t dd[dim.size()];
1003 for (
size_t i=0;i<dim.size();i++) dd[i] = dim[i];
1004 return forget(m, dst, src, dim.size(), dd, project);
1016 m.
raise(
"apron::abstract0::add_dimensions(manager&, const dimchange&, bool)");
1025 m.
raise(
"apron::abstract0::remove_dimensions(manager&, const dimchange&)");
1033 m.
raise(
"apron::abstract0::permute_dimensions(manager&, const dimperm&)");
1037inline abstract0&
add_dimensions(manager& m, abstract0& dst,
const abstract0& src,
const dimchange& d,
bool project =
false)
1040 ap_abstract0_add_dimensions(m.get_ap_manager_t(),
false, src.a,
1041 const_cast<ap_dimchange_t*
>(d.get_ap_dimchange_t()),
1043 m.raise(
"apron::add_dimensions(manager&, abstract0&, const abstract0&, const dimchange&, bool)",r);
1044 ap_abstract0_free(m.get_ap_manager_t(), dst.a);
1049inline abstract0&
remove_dimensions(manager& m, abstract0& dst,
const abstract0& src,
const dimchange& d)
1052 ap_abstract0_remove_dimensions(m.get_ap_manager_t(),
false, src.a,
1053 const_cast<ap_dimchange_t*
>(d.get_ap_dimchange_t()));
1054 m.raise(
"apron::remove_dimensions(manager&, abstract0&, const abstract0&, const dimchange&)",r);
1055 ap_abstract0_free(m.get_ap_manager_t(), dst.a);
1063 ap_abstract0_permute_dimensions(m.get_ap_manager_t(),
false, src.a,
1064 const_cast<ap_dimperm_t*
>(d.get_ap_dimperm_t()));
1065 m.raise(
"apron::permute_dimensions(manager&, abstract0&, const abstract0&, const dimperm&)",r);
1066 ap_abstract0_free(m.get_ap_manager_t(), dst.a);
1079 m.
raise(
"apron::abstract0::expand(manager&, ap_dim_t, size_t)");
1083inline abstract0&
expand(manager& m, abstract0& dst,
const abstract0& src, ap_dim_t dim,
size_t n = 1)
1085 ap_abstract0_t* r = ap_abstract0_expand(m.get_ap_manager_t(),
false, src.a, dim, n);
1086 m.raise(
"apron::expand(manager&, abstract0&, const abstract0&, ap_dim_t, size_t)",r);
1087 ap_abstract0_free(m.get_ap_manager_t(), dst.a);
1095 m.
raise(
"apron::abstract0::fold(manager&, size_t size, const ap_dim_t[])");
1101 ap_dim_t dd[
dim.size()];
1102 for (
size_t i=0;i<
dim.size();i++) dd[i] =
dim[i];
1103 return fold(m,
dim.size(), dd);
1106inline abstract0&
fold(manager& m, abstract0& dst,
const abstract0& src,
size_t size,
const ap_dim_t dim[])
1109 ap_abstract0_fold(m.get_ap_manager_t(),
false, src.a,
const_cast<ap_dim_t*
>(dim), size);
1110 m.raise(
"apron::fold(manager&, abstract0&, const abstract0&, size_t size, const ap_dim_t[])",r);
1111 ap_abstract0_free(m.get_ap_manager_t(), dst.a);
1116inline abstract0&
fold(manager& m, abstract0& dst,
const abstract0& src,
const std::vector<ap_dim_t>& dim)
1118 ap_dim_t dd[dim.size()];
1119 for (
size_t i=0;i<dim.size();i++) dd[i] = dim[i];
1120 return fold(m, dst, src, dim.size(), dd);
1127inline abstract0&
widening(manager& m, abstract0& dst,
const abstract0& x,
const abstract0& y)
1129 ap_abstract0_t* r = ap_abstract0_widening(m.get_ap_manager_t(), x.a, y.a);
1130 m.raise(
"apron::wideningg(manager&, abstract0&, const abstract0&, const abstract0&)",r);
1131 ap_abstract0_free(m.get_ap_manager_t(), dst.a);
1136inline abstract0&
widening(manager& m, abstract0& dst,
const abstract0& x,
const abstract0& y,
const lincons0_array& l)
1139 ap_abstract0_widening_threshold(m.get_ap_manager_t(), x.a, y.a,
1140 const_cast<ap_lincons0_array_t*
>(l.get_ap_lincons0_array_t()));
1141 m.raise(
"apron::widening(manager&, abstract0&, const abstract0&, const abstract0&, const lincons0_array&)",r);
1142 ap_abstract0_free(m.get_ap_manager_t(), dst.a);
1154 m.
raise(
"apron::abstract0::closured(manager&)");
1158inline abstract0&
closure(manager& m, abstract0& dst,
const abstract0& src)
1160 ap_abstract0_t* r = ap_abstract0_closure(m.get_ap_manager_t(),
false, src.a);
1161 m.raise(
"apron::closure(manager&, abstract0&, const abstract0&)",r);
1162 ap_abstract0_free(m.get_ap_manager_t(), dst.a);
bool operator==(const abstract0 &x, const abstract0 &y)
Definition apxx_abstract0_inline.hh:409
abstract0 & add_dimensions(manager &m, abstract0 &dst, const abstract0 &src, const dimchange &d, bool project=false)
Definition apxx_abstract0_inline.hh:1037
void printdiff(manager &m, const abstract0 &x, const abstract0 &y, char **name_of_dim=NULL, FILE *stream=stdout)
Definition apxx_abstract0_inline.hh:280
abstract0 & add_rays(manager &m, abstract0 &dst, const abstract0 &x, const generator0_array &y)
Definition apxx_abstract0_inline.hh:644
abstract0 & forget(manager &m, abstract0 &dst, const abstract0 &src, ap_dim_t dim, bool project=false)
Definition apxx_abstract0_inline.hh:983
abstract0 & expand(manager &m, abstract0 &dst, const abstract0 &src, ap_dim_t dim, size_t n=1)
Definition apxx_abstract0_inline.hh:1083
bool operator<=(const abstract0 &x, const abstract0 &y)
Definition apxx_abstract0_inline.hh:421
abstract0 & remove_dimensions(manager &m, abstract0 &dst, const abstract0 &src, const dimchange &d)
Definition apxx_abstract0_inline.hh:1049
bool operator>(const abstract0 &x, const abstract0 &y)
Definition apxx_abstract0_inline.hh:433
abstract0 & join(manager &m, abstract0 &dst, const abstract0 &x, const abstract0 &y)
Definition apxx_abstract0_inline.hh:560
bool operator<(const abstract0 &x, const abstract0 &y)
Definition apxx_abstract0_inline.hh:438
abstract0 & substitute(manager &m, abstract0 &dst, const abstract0 &src, ap_dim_t dim, const linexpr0 &l, const abstract0 &inter=abstract0::null)
Definition apxx_abstract0_inline.hh:859
abstract0 & meet(manager &m, abstract0 &dst, const abstract0 &x, const abstract0 &y)
Definition apxx_abstract0_inline.hh:518
abstract0 & assign(manager &m, abstract0 &dst, const abstract0 &src, ap_dim_t dim, const linexpr0 &l, const abstract0 &inter=abstract0::null)
Definition apxx_abstract0_inline.hh:728
abstract0 & fold(manager &m, abstract0 &dst, const abstract0 &src, size_t size, const ap_dim_t dim[])
Definition apxx_abstract0_inline.hh:1106
abstract0 & closure(manager &m, abstract0 &dst, const abstract0 &src)
Definition apxx_abstract0_inline.hh:1158
bool operator>=(const abstract0 &x, const abstract0 &y)
Definition apxx_abstract0_inline.hh:428
abstract0 & deserialize(manager &m, abstract0 &dst, const std::string &s, size_t *eaten=NULL)
Definition apxx_abstract0_inline.hh:313
bool operator!=(const abstract0 &x, const abstract0 &y)
Definition apxx_abstract0_inline.hh:416
std::ostream & operator<<(std::ostream &os, const abstract0 &s)
Definition apxx_abstract0_inline.hh:292
abstract0 & widening(manager &m, abstract0 &dst, const abstract0 &x, const abstract0 &y)
Definition apxx_abstract0_inline.hh:1127
abstract0 & permute_dimensions(manager &m, abstract0 &dst, const abstract0 &src, const dimperm &d)
Definition apxx_abstract0_inline.hh:1060
Level 0 abstract value (ap_abstract0_t* wrapper).
Definition apxx_abstract0.hh:78
interval_array to_box(manager &m) const
Returns a bounding box for the set represented by the abstract element.
Definition apxx_abstract0_inline.hh:475
abstract0 & operator+=(const abstract0 &y)
Replaces *this with the join of *this and the abstract element y.
Definition apxx_abstract0_inline.hh:664
abstract0 & set(manager &m, const abstract0 &x)
Replaces *this with a copy of x.
friend abstract0 & forget(manager &m, abstract0 &dst, const abstract0 &src, ap_dim_t dim, bool project)
Stores in dst the result of forgetting the value of dimension dim in src.
friend abstract0 & expand(manager &m, abstract0 &dst, const abstract0 &src, ap_dim_t dim, size_t n)
Replaces dst with a copy of src and duplicates dimension dim into n copies.
friend abstract0 & add_rays(manager &m, abstract0 &dst, const abstract0 &x, const generator0_array &y)
Replaces dst with x with some rays added.
lincons0_array to_lincons_array(manager &m) const
Returns a linear constraint representation of (an over-approximation of) the set represented by the a...
Definition apxx_abstract0_inline.hh:483
void free(manager &m)
Destroys the abstract element using the given manager.
Definition apxx_abstract0_inline.hh:89
friend abstract0 & remove_dimensions(manager &m, abstract0 &dst, const abstract0 &src, const dimchange &d)
Copies src into dst and removes some dimensions.
friend abstract0 & join(manager &m, abstract0 &dst, const abstract0 &x, const abstract0 &y)
Replaces dst with the join of x and y.
static const abstract0 null
NULL abstract element, to be used only as default argument in assign and substitute.
Definition apxx_abstract0.hh:88
abstract0(ap_abstract0_t *x)
Internal use only. Wraps an abstract0 around the pointer x, taking ownership of the object.
Definition apxx_abstract0_inline.hh:27
tcons0_array to_tcons_array(manager &m) const
Returns a constraint representation of (an over-approximation of) the set represented by the abstract...
Definition apxx_abstract0_inline.hh:491
friend abstract0 & meet(manager &m, abstract0 &dst, const abstract0 &x, const abstract0 &y)
Replaces dst with the meet of x and y.
friend abstract0 & add_dimensions(manager &m, abstract0 &dst, const abstract0 &src, const dimchange &d, bool project)
Copies src into dst and adds some dimensions.
abstract0 & approximate(manager &m, int algorithm)
Simplifies the abstract element, potentially loosing precision.
Definition apxx_abstract0_inline.hh:263
ap_abstract0_t * a
Pointer managed by APRON.
Definition apxx_abstract0.hh:82
bool is_eq(manager &m, const abstract0 &x) const
Whether *this and x represent the same set.
Definition apxx_abstract0_inline.hh:366
manager get_manager() const
Returns the manager the abstract element was created with (with reference count incremented).
Definition apxx_abstract0_inline.hh:328
ap_abstract0_t * get_ap_abstract0_t()
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_abstract0_inline.hh:1172
void dump(manager &m, FILE *stream=stdout) const
Raw printing to a C stream (mainly for debug purposes).
Definition apxx_abstract0_inline.hh:286
abstract0 & canonicalize(manager &m)
Puts the abstract element in canonical form (if such a notion exists).
Definition apxx_abstract0_inline.hh:256
abstract0 & minimize(manager &m)
Minimizes the size of the representation, to save memory.
Definition apxx_abstract0_inline.hh:249
bool is_leq(manager &m, const abstract0 &x) const
Whether *this is included in x (set-wise).
Definition apxx_abstract0_inline.hh:373
abstract0 & operator=(const abstract0 &t)
Assigns a copy of t to *this.
Definition apxx_abstract0_inline.hh:99
friend abstract0 & fold(manager &m, abstract0 &dst, const abstract0 &src, size_t size, const ap_dim_t dim[])
Replaces dst with a copy of src and folds dimensions dims[0] to dim[size-1].
friend abstract0 & closure(manager &m, abstract0 &dst, const abstract0 &src)
Stores in dst the topological closure of src.
generator0_array to_generator_array(manager &m) const
Returns a generator representation of (an over-approximation of) the set represented by the abstract ...
Definition apxx_abstract0_inline.hh:499
friend abstract0 & substitute(manager &m, abstract0 &dst, const abstract0 &src, ap_dim_t dim, const linexpr0 &l, const abstract0 &inter)
Substitution (backward assignment) of linear expression.
std::string * serialize(manager &m) const
Serializes an abstract element.
Definition apxx_abstract0_inline.hh:304
size_t size(manager &m) const
Returns the (abstract) size of the abstract element.
Definition apxx_abstract0_inline.hh:340
bool sat(manager &m, const lincons0 &l) const
Whether all points in *this satisfy a linear constraint.
Definition apxx_abstract0_inline.hh:380
bool is_top(manager &m) const
Whether *this represents the full space.
Definition apxx_abstract0_inline.hh:359
interval bound(manager &m, const linexpr0 &l) const
Returns some bounds for a linear expression evaluated in all points in the abstract element.
Definition apxx_abstract0_inline.hh:447
friend abstract0 & assign(manager &m, abstract0 &dst, const abstract0 &src, ap_dim_t dim, const linexpr0 &l, const abstract0 &inter)
Assignment of linear expression.
bool is_dimension_unconstrained(manager &m, ap_dim_t dim) const
Whether the points in *this are unbounded in the given dimension.
Definition apxx_abstract0_inline.hh:401
void print(manager &m, char **name_of_dim=NULL, FILE *stream=stdout) const
Pretty-printing to a C stream.
Definition apxx_abstract0_inline.hh:274
friend abstract0 & permute_dimensions(manager &m, abstract0 &dst, const abstract0 &src, const dimperm &d)
Copies src into dst and permute some dimensions.
~abstract0()
Destroys the abstract element.
Definition apxx_abstract0_inline.hh:83
abstract0 & operator*=(const abstract0 &y)
Replaces *this with the meet of *this and the abstract element y.
Definition apxx_abstract0_inline.hh:657
ap_dimension_t get_dimension(manager &m) const
Returns the number of integer and real dimensions in the abstract element.
Definition apxx_abstract0_inline.hh:333
bool is_bottom(manager &m) const
Whether *this represents the empty set.
Definition apxx_abstract0_inline.hh:352
Represents a dimension (i.e., variable by index) in an expression tree.
Definition apxx_texpr0.hh:33
Dimension change object (ap_dimchange_t wrapper).
Definition apxx_dimension.hh:102
const ap_dimchange_t * get_ap_dimchange_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_dimension_inline.hh:204
Dimension permutation object (ap_dimperm_t wrapper).
Definition apxx_dimension.hh:292
const ap_dimperm_t * get_ap_dimperm_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_dimension_inline.hh:422
Array of generators (ap_generator0_array_t wrapper).
Definition apxx_generator0.hh:214
const ap_generator0_array_t * get_ap_generator0_array_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_generator0_inline.hh:377
array of interval(s).
Definition apxx_interval.hh:302
const ap_interval_t *const * get_ap_interval_t_array() const
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_interval_inline.hh:505
size_t size() const
Returns the array size.
Definition apxx_interval_inline.hh:473
Interval (ap_interval_t wrapper).
Definition apxx_interval.hh:47
const ap_interval_t * get_ap_interval_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_interval_inline.hh:336
Array of linear constraints (ap_lincons0_array_t wrapper).
Definition apxx_lincons0.hh:341
const ap_lincons0_array_t * get_ap_lincons0_array_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_lincons0_inline.hh:462
Level 0 linear constraint (ap_lincons0_t wrapper).
Definition apxx_lincons0.hh:43
const ap_lincons0_t * get_ap_lincons0_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_lincons0_inline.hh:252
Level 0 linear expression (ap_linexpr0_t wrapper).
Definition apxx_linexpr0.hh:44
const ap_linexpr0_t * get_ap_linexpr0_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_linexpr0_inline.hh:459
Library manager (ap_manager_t wrapper).
Definition apxx_manager.hh:137
bool exception_raised()
Internal use only. Whether APRON has raised an exception.
Definition apxx_manager_inline.hh:82
ap_manager_t * get_ap_manager_t()
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_manager_inline.hh:206
static void raise(ap_manager_t *m, const char *msg, ap_abstract0_t *a=NULL)
Internal use only. Translates APRON exceptions to C++ ones.
Definition apxx_manager_inline.hh:88
Array of arbitrary constraints (ap_tcons0_array_t wrapper).
Definition apxx_tcons0.hh:350
const ap_tcons0_array_t * get_ap_tcons0_array_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_tcons0_inline.hh:530
Level 0 arbitrary constraint (ap_tcons0_t wrapper).
Definition apxx_tcons0.hh:47
const ap_tcons0_t * get_ap_tcons0_t() const
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_tcons0_inline.hh:301
Level 0 arbitrary expression tree (ap_texpr0_t wrapper).
Definition apxx_texpr0.hh:92
ap_texpr0_t * get_ap_texpr0_t()
Returns a pointer to the internal APRON object stored in *this.
Definition apxx_texpr0_inline.hh:293
Empty interval or domain, to simplify initialisations and assignments.
Definition apxx_interval.hh:33
Full interval (]-oo,+oo[) or domain, to simplify initialisations and assignments.
Definition apxx_interval.hh:27