webkit  2cdf99a9e3038c7e01b3c37e8ad903ecbe5eecf1
https://github.com/WebKit/webkit
Classes | Enumerations | Functions | Variables
base::internal Namespace Reference

Classes

struct  ArithmeticPromotion
 
struct  ArithmeticPromotion< Lhs, Rhs, LEFT_PROMOTION >
 
struct  ArithmeticPromotion< Lhs, Rhs, RIGHT_PROMOTION >
 
class  CheckedNumeric
 
class  CheckedNumericState
 
class  CheckedNumericState< T, NUMERIC_FLOATING >
 
class  CheckedNumericState< T, NUMERIC_INTEGER >
 
struct  DstRangeRelationToSrcRangeImpl
 
struct  DstRangeRelationToSrcRangeImpl< Dst, Src, DstSign, SrcSign, NUMERIC_RANGE_CONTAINED >
 
struct  DstRangeRelationToSrcRangeImpl< Dst, Src, INTEGER_REPRESENTATION_SIGNED, INTEGER_REPRESENTATION_SIGNED, NUMERIC_RANGE_NOT_CONTAINED >
 
struct  DstRangeRelationToSrcRangeImpl< Dst, Src, INTEGER_REPRESENTATION_SIGNED, INTEGER_REPRESENTATION_UNSIGNED, NUMERIC_RANGE_NOT_CONTAINED >
 
struct  DstRangeRelationToSrcRangeImpl< Dst, Src, INTEGER_REPRESENTATION_UNSIGNED, INTEGER_REPRESENTATION_SIGNED, NUMERIC_RANGE_NOT_CONTAINED >
 
struct  DstRangeRelationToSrcRangeImpl< Dst, Src, INTEGER_REPRESENTATION_UNSIGNED, INTEGER_REPRESENTATION_UNSIGNED, NUMERIC_RANGE_NOT_CONTAINED >
 
struct  GetNumericRepresentation
 
struct  IntegerForSizeAndSign
 
struct  IntegerForSizeAndSign< 1, false >
 
struct  IntegerForSizeAndSign< 1, true >
 
struct  IntegerForSizeAndSign< 2, false >
 
struct  IntegerForSizeAndSign< 2, true >
 
struct  IntegerForSizeAndSign< 4, false >
 
struct  IntegerForSizeAndSign< 4, true >
 
struct  IntegerForSizeAndSign< 8, false >
 
struct  IntegerForSizeAndSign< 8, true >
 
struct  IsIntegerArithmeticSafe
 
struct  MaxExponent
 
struct  NarrowingRange
 
struct  PositionOfSignBit
 
struct  SignedIntegerForSize
 
struct  StaticDstRangeRelationToSrcRange
 
struct  StaticDstRangeRelationToSrcRange< Dst, Src, INTEGER_REPRESENTATION_SIGNED, INTEGER_REPRESENTATION_UNSIGNED >
 
struct  StaticDstRangeRelationToSrcRange< Dst, Src, INTEGER_REPRESENTATION_UNSIGNED, INTEGER_REPRESENTATION_SIGNED >
 
struct  StaticDstRangeRelationToSrcRange< Dst, Src, Sign, Sign >
 
struct  TwiceWiderInteger
 
struct  UnsignedIntegerForSize
 
struct  UnsignedOrFloatForSize
 
struct  UnsignedOrFloatForSize< Numeric, false, true >
 
struct  UnsignedOrFloatForSize< Numeric, true, false >
 

Enumerations

enum  IntegerRepresentation { INTEGER_REPRESENTATION_UNSIGNED, INTEGER_REPRESENTATION_SIGNED }
 
enum  NumericRangeRepresentation { NUMERIC_RANGE_NOT_CONTAINED, NUMERIC_RANGE_CONTAINED }
 
enum  RangeConstraint : unsigned char { RANGE_VALID = 0x0, RANGE_UNDERFLOW = 0x1, RANGE_OVERFLOW = 0x2, RANGE_INVALID = RANGE_UNDERFLOW | RANGE_OVERFLOW }
 
enum  NumericRepresentation { NUMERIC_INTEGER, NUMERIC_FLOATING, NUMERIC_UNKNOWN }
 
enum  ArithmeticPromotionCategory { LEFT_PROMOTION, RIGHT_PROMOTION }
 

Functions

template<typename Dst , class NaNHandler , typename Src >
constexpr Dst saturated_cast_impl (const Src value, const RangeConstraint constraint)
 
constexpr RangeConstraint GetRangeConstraint (int integer_range_constraint)
 
constexpr RangeConstraint GetRangeConstraint (bool is_in_upper_bound, bool is_in_lower_bound)
 
template<typename Dst , typename Src >
constexpr RangeConstraint DstRangeRelationToSrcRange (Src value)
 
template<typename T >
constexpr bool HasSignBit (T x)
 
template<typename T >
constexpr T BinaryComplement (T x)
 
template<typename T >
std::enable_if< std::numeric_limits< T >::is_integer, T >::type CheckedAdd (T x, T y, RangeConstraint *validity)
 
template<typename T >
std::enable_if< std::numeric_limits< T >::is_integer, T >::type CheckedSub (T x, T y, RangeConstraint *validity)
 
return static_cast< T > (x *y)
 
template<typename T >
std::enable_if< std::numeric_limits< T >::is_integer &&!std::numeric_limits< T >::is_signed &&(sizeof(T) *2 > sizeof(uintmax_t)), T >::type CheckedMul (T x, T y, RangeConstraint *validity)
 
template<typename T >
T CheckedDiv (T x, T y, RangeConstraint *validity, typename std::enable_if< std::numeric_limits< T >::is_integer, int >::type=0)
 
template<typename T >
std::enable_if< std::numeric_limits< T >::is_integer &&std::numeric_limits< T >::is_signed, T >::type CheckedMod (T x, T y, RangeConstraint *validity)
 
template<typename T >
std::enable_if< std::numeric_limits< T >::is_integer &&!std::numeric_limits< T >::is_signed, T >::type CheckedMod (T x, T y, RangeConstraint *validity)
 
template<typename T >
std::enable_if< std::numeric_limits< T >::is_integer &&std::numeric_limits< T >::is_signed, T >::type CheckedNeg (T value, RangeConstraint *validity)
 
template<typename T >
std::enable_if< std::numeric_limits< T >::is_integer &&!std::numeric_limits< T >::is_signed, T >::type CheckedNeg (T value, RangeConstraint *validity)
 
template<typename T >
std::enable_if< std::numeric_limits< T >::is_integer &&std::numeric_limits< T >::is_signed, T >::type CheckedAbs (T value, RangeConstraint *validity)
 
template<typename T >
std::enable_if< std::numeric_limits< T >::is_integer &&!std::numeric_limits< T >::is_signed, T >::type CheckedAbs (T value, RangeConstraint *validity)
 
template<typename T >
std::enable_if< std::numeric_limits< T >::is_integer &&std::numeric_limits< T >::is_signed, typename UnsignedIntegerForSize< T >::type >::type CheckedUnsignedAbs (T value)
 
template<typename T >
std::enable_if< std::numeric_limits< T >::is_integer &&!std::numeric_limits< T >::is_signed, T >::type CheckedUnsignedAbs (T value)
 
template<typename T >
std::enable_if< std::numeric_limits< T >::is_iec559, T >::type CheckedNeg (T value, RangeConstraint *)
 
template<typename T >
std::enable_if< std::numeric_limits< T >::is_iec559, T >::type CheckedAbs (T value, RangeConstraint *)
 

Variables

elsevalidity = y >= std::numeric_limits<T>::max() / x ? RANGE_VALID : RANGE_OVERFLOW
 

Enumeration Type Documentation

◆ ArithmeticPromotionCategory

Enumerator
LEFT_PROMOTION 
RIGHT_PROMOTION 

◆ IntegerRepresentation

Enumerator
INTEGER_REPRESENTATION_UNSIGNED 
INTEGER_REPRESENTATION_SIGNED 

◆ NumericRangeRepresentation

Enumerator
NUMERIC_RANGE_NOT_CONTAINED 
NUMERIC_RANGE_CONTAINED 

◆ NumericRepresentation

Enumerator
NUMERIC_INTEGER 
NUMERIC_FLOATING 
NUMERIC_UNKNOWN 

◆ RangeConstraint

Enumerator
RANGE_VALID 
RANGE_UNDERFLOW 
RANGE_OVERFLOW 
RANGE_INVALID 

Function Documentation

◆ BinaryComplement()

template<typename T >
constexpr T base::internal::BinaryComplement ( T  x)

◆ CheckedAbs() [1/3]

template<typename T >
std::enable_if<std::numeric_limits<T>::is_integer && std::numeric_limits<T>::is_signed, T>::type base::internal::CheckedAbs ( T  value,
RangeConstraint validity 
)

◆ CheckedAbs() [2/3]

template<typename T >
std::enable_if<std::numeric_limits<T>::is_integer && !std::numeric_limits<T>::is_signed, T>::type base::internal::CheckedAbs ( T  value,
RangeConstraint validity 
)

◆ CheckedAbs() [3/3]

template<typename T >
std::enable_if<std::numeric_limits<T>::is_iec559, T>::type base::internal::CheckedAbs ( T  value,
RangeConstraint  
)

◆ CheckedAdd()

template<typename T >
std::enable_if<std::numeric_limits<T>::is_integer, T>::type base::internal::CheckedAdd ( T  x,
T  y,
RangeConstraint validity 
)

◆ CheckedDiv()

template<typename T >
T base::internal::CheckedDiv ( T  x,
T  y,
RangeConstraint validity,
typename std::enable_if< std::numeric_limits< T >::is_integer, int >::type  = 0 
)

◆ CheckedMod() [1/2]

template<typename T >
std::enable_if<std::numeric_limits<T>::is_integer && std::numeric_limits<T>::is_signed, T>::type base::internal::CheckedMod ( T  x,
T  y,
RangeConstraint validity 
)

◆ CheckedMod() [2/2]

template<typename T >
std::enable_if<std::numeric_limits<T>::is_integer && !std::numeric_limits<T>::is_signed, T>::type base::internal::CheckedMod ( T  x,
T  y,
RangeConstraint validity 
)

◆ CheckedMul()

template<typename T >
std::enable_if<std::numeric_limits<T>::is_integer && !std::numeric_limits<T>::is_signed && (sizeof(T) * 2 > sizeof(uintmax_t)), T>::type base::internal::CheckedMul ( T  x,
T  y,
RangeConstraint validity 
)

◆ CheckedNeg() [1/3]

template<typename T >
std::enable_if<std::numeric_limits<T>::is_integer && std::numeric_limits<T>::is_signed, T>::type base::internal::CheckedNeg ( T  value,
RangeConstraint validity 
)

◆ CheckedNeg() [2/3]

template<typename T >
std::enable_if<std::numeric_limits<T>::is_integer && !std::numeric_limits<T>::is_signed, T>::type base::internal::CheckedNeg ( T  value,
RangeConstraint validity 
)

◆ CheckedNeg() [3/3]

template<typename T >
std::enable_if<std::numeric_limits<T>::is_iec559, T>::type base::internal::CheckedNeg ( T  value,
RangeConstraint  
)

◆ CheckedSub()

template<typename T >
std::enable_if<std::numeric_limits<T>::is_integer, T>::type base::internal::CheckedSub ( T  x,
T  y,
RangeConstraint validity 
)

◆ CheckedUnsignedAbs() [1/2]

template<typename T >
std::enable_if<std::numeric_limits<T>::is_integer && std::numeric_limits<T>::is_signed, typename UnsignedIntegerForSize<T>::type>::type base::internal::CheckedUnsignedAbs ( T  value)

◆ CheckedUnsignedAbs() [2/2]

template<typename T >
std::enable_if<std::numeric_limits<T>::is_integer && !std::numeric_limits<T>::is_signed, T>::type base::internal::CheckedUnsignedAbs ( T  value)

◆ DstRangeRelationToSrcRange()

template<typename Dst , typename Src >
constexpr RangeConstraint base::internal::DstRangeRelationToSrcRange ( Src  value)

◆ GetRangeConstraint() [1/2]

constexpr RangeConstraint base::internal::GetRangeConstraint ( int  integer_range_constraint)

◆ GetRangeConstraint() [2/2]

constexpr RangeConstraint base::internal::GetRangeConstraint ( bool  is_in_upper_bound,
bool  is_in_lower_bound 
)
inline

◆ HasSignBit()

template<typename T >
constexpr bool base::internal::HasSignBit ( T  x)

◆ saturated_cast_impl()

template<typename Dst , class NaNHandler , typename Src >
constexpr Dst base::internal::saturated_cast_impl ( const Src  value,
const RangeConstraint  constraint 
)

◆ static_cast< T >()

return base::internal::static_cast< T > ( x y)

Variable Documentation

◆ validity

else* base::internal::validity = y >= std::numeric_limits<T>::max() / x ? RANGE_VALID : RANGE_OVERFLOW