PPL  1.2
checked_inlines.hh File Reference
#include "globals_types.hh"
#include "meta_programming.hh"
#include "C_Integer.hh"
#include "assertions.hh"
Include dependency graph for checked_inlines.hh:
This graph shows which files directly or indirectly include this file:

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

 Parma_Polyhedra_Library
 The entire library is confined to this namespace.
 
 Parma_Polyhedra_Library::Checked
 Types and functions implementing checked numbers.
 

Macros

#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 have not found a working solution. The GCC option -Wno-type-limits suppresses the warning. More...
 
#define PPL_GT_SILENT(a, b)   ((a) > (b))
 
#define PPL_SAFE_CONVERSION(To, From)
 
#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_no_abs (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 S , typename U >
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)
 
template<typename U , typename S >
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 U &x, const S &y)
 
template<typename S , typename U >
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)
 
template<typename U , typename S >
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 U &x, const S &y)
 
template<typename S , typename U >
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)
 
template<typename U , typename S >
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 U &x, const S &y)
 
template<typename T1 , typename T2 >
Enable_If<(!Safe_Conversion< T1, T2 >::value &&!Safe_Conversion< T2, T1 >::value &&(!C_Integer< T1 >::value||!C_Integer< T2 >::value)), bool >::type Parma_Polyhedra_Library::Checked::eq (const T1 &x, const T2 &y)
 
template<typename T1 , typename T2 >
Enable_If<(!Safe_Conversion< T1, T2 >::value &&!Safe_Conversion< T2, T1 >::value &&(!C_Integer< T1 >::value||!C_Integer< T2 >::value)), bool >::type Parma_Polyhedra_Library::Checked::lt (const T1 &x, const T2 &y)
 
template<typename T1 , typename T2 >
Enable_If<(!Safe_Conversion< T1, T2 >::value &&!Safe_Conversion< T2, T1 >::value &&(!C_Integer< T1 >::value||!C_Integer< T2 >::value)), bool >::type Parma_Polyhedra_Library::Checked::le (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)
 

Macro Definition Documentation

#define PPL_LT_SILENT (   a,
 
)    ((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 have not found a working solution. The GCC option -Wno-type-limits suppresses 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 
)
Value:
template <> struct Safe_Conversion<PPL_U(To), PPL_U(From)> \
: public True { }
From bool Type Type Rounding_Dir To
From bool Type Type Rounding_Dir From

Definition at line 52 of file checked_inlines.hh.