24 #ifndef PPL_ppl_c_implementation_common_inlines_hh
25 #define PPL_ppl_c_implementation_common_inlines_hh 1
29 namespace Interfaces {
38 reinterpret_mpz_class(mpz_t n) {
39 return reinterpret_cast<mpz_class&
>(*n);
44 DECLARE_CONVERSIONS(Linear_Expression, Linear_Expression)
46 DECLARE_CONVERSIONS(Constraint, Constraint)
48 DECLARE_CONVERSIONS(Constraint_System, Constraint_System)
50 DECLARE_CONVERSIONS(Constraint_System_const_iterator,
51 Constraint_System_const_iterator)
53 DECLARE_CONVERSIONS(Generator, Generator)
55 DECLARE_CONVERSIONS(Generator_System, Generator_System)
57 DECLARE_CONVERSIONS(Generator_System_const_iterator,
58 Generator_System_const_iterator)
60 DECLARE_CONVERSIONS(Congruence, Congruence)
62 DECLARE_CONVERSIONS(Congruence_System, Congruence_System)
64 typedef Congruence_System::const_iterator Congruence_System_const_iterator;
65 DECLARE_CONVERSIONS(Congruence_System_const_iterator,
66 Congruence_System_const_iterator)
68 DECLARE_CONVERSIONS(Grid_Generator, Grid_Generator)
70 DECLARE_CONVERSIONS(Grid_Generator_System, Grid_Generator_System)
72 typedef Grid_Generator_System::const_iterator
73 Grid_Generator_System_const_iterator;
74 DECLARE_CONVERSIONS(Grid_Generator_System_const_iterator,
75 Grid_Generator_System_const_iterator)
77 typedef PIP_Tree_Node::Artificial_Parameter
79 DECLARE_CONVERSIONS(Artificial_Parameter, Artificial_Parameter)
81 typedef PIP_Tree_Node::Artificial_Parameter_Sequence
82 Artificial_Parameter_Sequence;
83 DECLARE_CONVERSIONS(Artificial_Parameter_Sequence,
84 Artificial_Parameter_Sequence)
86 typedef PIP_Tree_Node::Artificial_Parameter_Sequence::const_iterator
87 Artificial_Parameter_Sequence_const_iterator;
88 DECLARE_CONVERSIONS(Artificial_Parameter_Sequence_const_iterator,
89 Artificial_Parameter_Sequence_const_iterator)
91 DECLARE_CONVERSIONS(MIP_Problem, MIP_Problem)
93 DECLARE_CONVERSIONS(PIP_Problem, PIP_Problem)
95 DECLARE_CONVERSIONS(PIP_Tree_Node, PIP_Tree_Node)
97 DECLARE_CONVERSIONS(PIP_Decision_Node, PIP_Decision_Node)
99 DECLARE_CONVERSIONS(PIP_Solution_Node, PIP_Solution_Node)
173 for (
size_t i =
vec_size; i-- > 0; )
185 for (
size_t i =
vec_size; i-- > 0; ) {
214 #endif // !defined(PPL_ppl_c_implementation_common_inlines_hh)
ppl_enum_Bounded_Integer_Type_Representation
Representation of bounded integer types.
dimension_type not_a_dimension()
dimension_type max_in_codomain() const
Returns the maximum value that belongs to the codomain of the partial function.
Array_Partial_Function_Wrapper(dimension_type *v, size_t n)
Construct a partial function wrapping the first n positions of v.
ppl_enum_Constraint_Type
Describes the relations represented by a constraint.
On overflow, wrapping takes place.
Bounded_Integer_Type_Overflow
bool has_empty_codomain() const
Returns true if and only if the represented partial function has an empty codomain (i...
bool maps(dimension_type i, dimension_type &j) const
Assigns to j the value associated to i by *this, if any.
#define DECLARE_CONVERSIONS(Type, CPP_Type)
On overflow, the result is undefined.
Bounded_Integer_Type_Width
PPL_COEFFICIENT_TYPE Coefficient
dimension_type max_in_codomain_
Cache for computing the maximum dimension in the codomain.
ppl_enum_Bounded_Integer_Type_Width
Widths of bounded integer types.
ppl_enum_Bounded_Integer_Type_Overflow
Overflow behavior of bounded integer types.
size_t vec_size
Holds the size of vec.
dimension_type * vec
Holds the vector implementing the map.
Signed binary where negative values are represented by the two's complement of the absolute value...
Bounded_Integer_Type_Representation