00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include <ppl-config.h>
00024 #include "Box.defs.hh"
00025
00026 namespace PPL = Parma_Polyhedra_Library;
00027
00028 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
00029
00030 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS)
00031 bool
00032 PPL::extract_interval_constraint(const Constraint& c,
00033 const dimension_type c_space_dim,
00034 dimension_type& c_num_vars,
00035 dimension_type& c_only_var) {
00036
00037 assert(c.space_dimension() == c_space_dim);
00038 assert(c_num_vars == 0 && c_only_var == 0);
00039
00040 for (dimension_type i = c_space_dim; i-- > 0; )
00041 if (c.coefficient(Variable(i)) != 0) {
00042 if (c_num_vars == 0) {
00043 c_only_var = i;
00044 ++c_num_vars;
00045 }
00046 else
00047
00048 return false;
00049 }
00050 return true;
00051 }
00052
00053 bool
00054 PPL::extract_interval_congruence(const Congruence& cg,
00055 const dimension_type cg_space_dim,
00056 dimension_type& cg_num_vars,
00057 dimension_type& cg_only_var) {
00058
00059 assert(cg.space_dimension() == cg_space_dim);
00060 assert(cg_num_vars == 0 && cg_only_var == 0);
00061
00062 assert(cg.is_equality());
00063
00064
00065 for (dimension_type i = cg_space_dim; i-- > 0; )
00066 if (cg.coefficient(Variable(i)) != 0) {
00067 if (cg_num_vars == 0) {
00068 cg_only_var = i;
00069 ++cg_num_vars;
00070 }
00071 else
00072
00073 return false;
00074 }
00075 return true;
00076 }