#include "globals.types.hh"#include "meta_programming.hh"#include "C_Integer.hh"#include "assert.hh"

Go to the source code of this file.
Classes | |
| struct | Parma_Polyhedra_Library::Checked::Safe_Conversion< T1, T2 > |
| struct | Parma_Polyhedra_Library::Checked::Safe_Conversion< T, T > |
| struct | Parma_Polyhedra_Library::Checked::Safe_Int_Comparison< T1, T2, Enable > |
| struct | Parma_Polyhedra_Library::Checked::Safe_Int_Comparison< T1, T2, typename Enable_If<(C_Integer< T1 >::value &&C_Integer< T2 >::value)>::type > |
Namespaces | |
| namespace | Parma_Polyhedra_Library |
The entire library is confined to this namespace. | |
| namespace | Parma_Polyhedra_Library::Checked |
Types and functions implementing checked numbers. | |
Defines | |
| #define | PPL_LT_SILENT(a, b) ((a) < (b)) |
Performs the test a < b avoiding the warning about the comparison being always false due to limited range of data type. FIXME: we don't have found a working solution. gcc option -Wno-type-limits suppress the warning. | |
| #define | PPL_GT_SILENT(a, b) ((a) > (b)) |
| #define | PPL_SAFE_CONVERSION(To, From) template <> struct Safe_Conversion<To, From> : public True { } |
| #define | PPL_MATCH_GMP_GCDEXT 1 |
Functions | |
| Parma_Polyhedra_Library::Checked::PPL_SAFE_CONVERSION (signed short, signed char) | |
| Parma_Polyhedra_Library::Checked::PPL_SAFE_CONVERSION (signed long long, signed char) | |
| Parma_Polyhedra_Library::Checked::PPL_SAFE_CONVERSION (signed long long, signed short) | |
| Parma_Polyhedra_Library::Checked::PPL_SAFE_CONVERSION (unsigned short, char) | |
| Parma_Polyhedra_Library::Checked::PPL_SAFE_CONVERSION (unsigned short, unsigned char) | |
| Parma_Polyhedra_Library::Checked::PPL_SAFE_CONVERSION (unsigned long, char) | |
| Parma_Polyhedra_Library::Checked::PPL_SAFE_CONVERSION (unsigned long, unsigned char) | |
| Parma_Polyhedra_Library::Checked::PPL_SAFE_CONVERSION (unsigned long long, char) | |
| Parma_Polyhedra_Library::Checked::PPL_SAFE_CONVERSION (unsigned long long, unsigned char) | |
| Parma_Polyhedra_Library::Checked::PPL_SAFE_CONVERSION (double, float) | |
| Parma_Polyhedra_Library::Checked::PPL_SAFE_CONVERSION (long double, float) | |
| Parma_Polyhedra_Library::Checked::PPL_SAFE_CONVERSION (long double, double) | |
| Parma_Polyhedra_Library::Checked::PPL_SAFE_CONVERSION (mpz_class, char) | |
| Parma_Polyhedra_Library::Checked::PPL_SAFE_CONVERSION (mpz_class, signed char) | |
| Parma_Polyhedra_Library::Checked::PPL_SAFE_CONVERSION (mpz_class, unsigned char) | |
| Parma_Polyhedra_Library::Checked::PPL_SAFE_CONVERSION (mpq_class, char) | |
| Parma_Polyhedra_Library::Checked::PPL_SAFE_CONVERSION (mpq_class, signed char) | |
| Parma_Polyhedra_Library::Checked::PPL_SAFE_CONVERSION (mpq_class, unsigned char) | |
| Parma_Polyhedra_Library::Checked::PPL_SAFE_CONVERSION (mpq_class, float) | |
| Parma_Polyhedra_Library::Checked::PPL_SAFE_CONVERSION (mpq_class, double) | |
| template<typename Policy , typename Type > | |
| struct | Parma_Polyhedra_Library::Checked::PPL_FUNCTION_CLASS (construct)< Policy |
| template<typename To_Policy , typename From_Policy , typename To , typename From > | |
| struct | Parma_Polyhedra_Library::Checked::PPL_FUNCTION_CLASS (construct) |
| template<typename To_Policy , typename To > | |
| struct | Parma_Polyhedra_Library::Checked::PPL_FUNCTION_CLASS (construct_special) |
| template<typename To_Policy , typename From_Policy , typename To , typename From > | |
| Result | Parma_Polyhedra_Library::Checked::assign_exact (To &to, const From &from, Rounding_Dir) |
| template<typename To_Policy , typename From_Policy , typename Type > | |
| Enable_If< Is_Same< To_Policy, From_Policy >::value, void > ::type | Parma_Polyhedra_Library::Checked::copy_generic (Type &to, const Type &from) |
| template<typename To_Policy , typename From_Policy , typename To , typename From > | |
| Result | Parma_Polyhedra_Library::Checked::abs_generic (To &to, const From &from, Rounding_Dir dir) |
| template<typename To_Policy , typename From1_Policy , typename From2_Policy , typename To , typename From > | |
| void | Parma_Polyhedra_Library::Checked::gcd_exact_noabs (To &to, const From &x, const From &y) |
| template<typename To_Policy , typename From1_Policy , typename From2_Policy , typename To , typename From1 , typename From2 > | |
| Result | Parma_Polyhedra_Library::Checked::gcd_exact (To &to, const From1 &x, const From2 &y, Rounding_Dir dir) |
| template<typename To1_Policy , typename To2_Policy , typename To3_Policy , typename From1_Policy , typename From2_Policy , typename To1 , typename To2 , typename To3 , typename From1 , typename From2 > | |
| Result | Parma_Polyhedra_Library::Checked::gcdext_exact (To1 &to, To2 &s, To3 &t, const From1 &x, const From2 &y, Rounding_Dir dir) |
| template<typename To_Policy , typename From1_Policy , typename From2_Policy , typename To , typename From1 , typename From2 > | |
| Result | Parma_Polyhedra_Library::Checked::lcm_gcd_exact (To &to, const From1 &x, const From2 &y, Rounding_Dir dir) |
| template<typename Policy , typename Type > | |
| Result_Relation | Parma_Polyhedra_Library::Checked::sgn_generic (const Type &x) |
| template<typename T1 , typename T2 > | |
| Enable_If<(Safe_Int_Comparison < T1, T2 >::value||Safe_Conversion < T1, T2 >::value||Safe_Conversion < T2, T1 >::value), bool > ::type | Parma_Polyhedra_Library::Checked::lt (const T1 &x, const T2 &y) |
| template<typename T1 , typename T2 > | |
| Enable_If<(Safe_Int_Comparison < T1, T2 >::value||Safe_Conversion < T1, T2 >::value||Safe_Conversion < T2, T1 >::value), bool > ::type | Parma_Polyhedra_Library::Checked::le (const T1 &x, const T2 &y) |
| template<typename T1 , typename T2 > | |
| Enable_If<(Safe_Int_Comparison < T1, T2 >::value||Safe_Conversion < T1, T2 >::value||Safe_Conversion < T2, T1 >::value), bool > ::type | Parma_Polyhedra_Library::Checked::eq (const T1 &x, const T2 &y) |
| template<typename Policy1 , typename Policy2 , typename Type1 , typename Type2 > | |
| bool | Parma_Polyhedra_Library::Checked::lt_p (const Type1 &x, const Type2 &y) |
| template<typename Policy1 , typename Policy2 , typename Type1 , typename Type2 > | |
| bool | Parma_Polyhedra_Library::Checked::le_p (const Type1 &x, const Type2 &y) |
| template<typename Policy1 , typename Policy2 , typename Type1 , typename Type2 > | |
| bool | Parma_Polyhedra_Library::Checked::eq_p (const Type1 &x, const Type2 &y) |
| template<typename Policy1 , typename Policy2 , typename Type1 , typename Type2 > | |
| Result_Relation | Parma_Polyhedra_Library::Checked::cmp_generic (const Type1 &x, const Type2 &y) |
| template<typename Policy , typename Type > | |
| Result | Parma_Polyhedra_Library::Checked::assign_nan (Type &to, Result r) |
| template<typename Policy , typename Type > | |
| Result | Parma_Polyhedra_Library::Checked::input_generic (Type &to, std::istream &is, Rounding_Dir dir) |
Variables | |
| Enable_If <(!Safe_Int_Comparison< S, U > ::value &&C_Integer< U > ::value &&C_Integer< S > ::is_signed), bool >::type | Parma_Polyhedra_Library::Checked::lt (const S &x, const U &y) |
| Enable_If <(!Safe_Int_Comparison< S, U > ::value &&C_Integer< U > ::value &&C_Integer< S > ::is_signed), bool >::type | Parma_Polyhedra_Library::Checked::le (const S &x, const U &y) |
| Enable_If <(!Safe_Int_Comparison< S, U > ::value &&C_Integer< U > ::value &&C_Integer< S > ::is_signed), bool >::type | Parma_Polyhedra_Library::Checked::eq (const S &x, const U &y) |
| #define PPL_GT_SILENT | ( | a, | |||
| b | ) | ((a) > (b)) |
Definition at line 39 of file checked.inlines.hh.
Referenced by Parma_Polyhedra_Library::Checked::assign_signed_int_mpz(), Parma_Polyhedra_Library::Checked::assign_signed_int_signed_int(), Parma_Polyhedra_Library::Checked::assign_unsigned_int_mpz(), Parma_Polyhedra_Library::Checked::assign_unsigned_int_unsigned_int(), Parma_Polyhedra_Library::Checked::mul_2exp_signed_int(), and Parma_Polyhedra_Library::Checked::mul_2exp_unsigned_int().
| #define PPL_LT_SILENT | ( | a, | |||
| b | ) | ((a) < (b)) |
Performs the test a < b avoiding the warning about the comparison being always false due to limited range of data type. FIXME: we don't have found a working solution. gcc option -Wno-type-limits suppress the warning.
Definition at line 38 of file checked.inlines.hh.
Referenced by Parma_Polyhedra_Library::Checked::assign_signed_int_mpz(), Parma_Polyhedra_Library::Checked::assign_signed_int_signed_int(), and Parma_Polyhedra_Library::Checked::mul_2exp_signed_int().
| #define PPL_MATCH_GMP_GCDEXT 1 |
| #define PPL_SAFE_CONVERSION | ( | To, | |||
| From | ) | template <> struct Safe_Conversion<To, From> : public True { } |
Definition at line 52 of file checked.inlines.hh.
1.6.3