Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
safe_conversions_impl.h File Reference

(08e24b2ba6847221abd35e9b994206b764d6b322)

#include <stdint.h>
#include <limits>
#include <type_traits>
Include dependency graph for safe_conversions_impl.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  pdfium::internal::MaxExponent< NumericType >
struct  pdfium::internal::IntegerBitsPlusSign< NumericType >
struct  pdfium::internal::PositionOfSignBit< Integer >
struct  pdfium::internal::CheckOnFailure
struct  pdfium::internal::StaticDstRangeRelationToSrcRange< Dst, Src, Sign, Sign >
struct  pdfium::internal::StaticDstRangeRelationToSrcRange< Dst, Src, INTEGER_REPRESENTATION_SIGNED, INTEGER_REPRESENTATION_UNSIGNED >
struct  pdfium::internal::StaticDstRangeRelationToSrcRange< Dst, Src, INTEGER_REPRESENTATION_UNSIGNED, INTEGER_REPRESENTATION_SIGNED >
class  pdfium::internal::RangeCheck
struct  pdfium::internal::NarrowingRange< Dst, Src, Bounds >
struct  pdfium::internal::DstRangeRelationToSrcRangeImpl< Dst, Src, Bounds, DstSign, SrcSign, NUMERIC_RANGE_CONTAINED >
struct  pdfium::internal::DstRangeRelationToSrcRangeImpl< Dst, Src, Bounds, INTEGER_REPRESENTATION_SIGNED, INTEGER_REPRESENTATION_SIGNED, NUMERIC_RANGE_NOT_CONTAINED >
struct  pdfium::internal::DstRangeRelationToSrcRangeImpl< Dst, Src, Bounds, INTEGER_REPRESENTATION_UNSIGNED, INTEGER_REPRESENTATION_UNSIGNED, NUMERIC_RANGE_NOT_CONTAINED >
struct  pdfium::internal::DstRangeRelationToSrcRangeImpl< Dst, Src, Bounds, INTEGER_REPRESENTATION_SIGNED, INTEGER_REPRESENTATION_UNSIGNED, NUMERIC_RANGE_NOT_CONTAINED >
struct  pdfium::internal::DstRangeRelationToSrcRangeImpl< Dst, Src, Bounds, INTEGER_REPRESENTATION_UNSIGNED, INTEGER_REPRESENTATION_SIGNED, NUMERIC_RANGE_NOT_CONTAINED >
struct  pdfium::internal::IsTypeInRangeForNumericType< Dst, Src >
struct  pdfium::internal::TwiceWiderInteger< Integer, IsSigned >
struct  pdfium::internal::MaxExponentPromotion< Lhs, Rhs, LEFT_PROMOTION >
struct  pdfium::internal::MaxExponentPromotion< Lhs, Rhs, RIGHT_PROMOTION >
struct  pdfium::internal::LowestValuePromotion< Lhs, Rhs, LEFT_PROMOTION >
struct  pdfium::internal::LowestValuePromotion< Lhs, Rhs, RIGHT_PROMOTION >
struct  pdfium::internal::BigEnoughPromotion< Lhs, Rhs, is_intmax_type, true >
struct  pdfium::internal::BigEnoughPromotion< Lhs, Rhs, false, false >
struct  pdfium::internal::BigEnoughPromotion< Lhs, Rhs, true, false >
struct  pdfium::internal::IsIntegerArithmeticSafe< T, Lhs, Rhs >
struct  pdfium::internal::FastIntegerArithmeticPromotion< Lhs, Rhs, true >
struct  pdfium::internal::FastIntegerArithmeticPromotion< Lhs, Rhs, false >
struct  pdfium::internal::ArithmeticOrUnderlyingEnum< T, true >
struct  pdfium::internal::ArithmeticOrUnderlyingEnum< T, false >
struct  pdfium::internal::UnderlyingType< T >
struct  pdfium::internal::UnderlyingType< CheckedNumeric< T > >
struct  pdfium::internal::UnderlyingType< ClampedNumeric< T > >
struct  pdfium::internal::UnderlyingType< StrictNumeric< T > >
struct  pdfium::internal::IsCheckedOp< L, R >
struct  pdfium::internal::IsClampedOp< L, R >
struct  pdfium::internal::IsStrictOp< L, R >
struct  pdfium::internal::IsLess< L, R >
struct  pdfium::internal::IsLessOrEqual< L, R >
struct  pdfium::internal::IsGreater< L, R >
struct  pdfium::internal::IsGreaterOrEqual< L, R >
struct  pdfium::internal::IsEqual< L, R >
struct  pdfium::internal::IsNotEqual< L, R >

Namespaces

namespace  pdfium
namespace  pdfium::internal

Macros

#define BASE_NUMERICS_LIKELY(x)
#define BASE_NUMERICS_UNLIKELY(x)
#define IsConstantEvaluated()
#define INTEGER_FOR_DIGITS_AND_SIGN(I)

Enumerations

enum  pdfium::internal::IntegerRepresentation { pdfium::internal::INTEGER_REPRESENTATION_UNSIGNED , pdfium::internal::INTEGER_REPRESENTATION_SIGNED }
enum  pdfium::internal::NumericRangeRepresentation { pdfium::internal::NUMERIC_RANGE_NOT_CONTAINED , pdfium::internal::NUMERIC_RANGE_CONTAINED }
enum  pdfium::internal::ArithmeticPromotionCategory { pdfium::internal::LEFT_PROMOTION , pdfium::internal::RIGHT_PROMOTION }

Functions

template<typename T, typename std::enable_if< std::is_signed< T >::value >::type * = nullptr>
constexpr bool pdfium::internal::IsValueNegative (T value)
template<typename T>
constexpr std::make_signed< T >::type pdfium::internal::ConditionalNegate (T x, bool is_negative)
template<typename T>
constexpr std::make_unsigned< T >::type pdfium::internal::SafeUnsignedAbs (T value)
template<typename Dst, template< typename > class Bounds = std::numeric_limits, typename Src>
constexpr RangeCheck pdfium::internal::DstRangeRelationToSrcRange (Src value)
 pdfium::internal::INTEGER_FOR_DIGITS_AND_SIGN (int8_t)
 pdfium::internal::INTEGER_FOR_DIGITS_AND_SIGN (uint8_t)
 pdfium::internal::INTEGER_FOR_DIGITS_AND_SIGN (int16_t)
 pdfium::internal::INTEGER_FOR_DIGITS_AND_SIGN (uint16_t)
 pdfium::internal::INTEGER_FOR_DIGITS_AND_SIGN (int32_t)
 pdfium::internal::INTEGER_FOR_DIGITS_AND_SIGN (uint32_t)
 pdfium::internal::INTEGER_FOR_DIGITS_AND_SIGN (int64_t)
 pdfium::internal::INTEGER_FOR_DIGITS_AND_SIGN (uint64_t)
template<typename Src>
constexpr std::make_signed< typenameinternal::UnderlyingType< Src >::type >::type pdfium::internal::as_signed (const Src value)
template<typename Src>
constexpr std::make_unsigned< typenameinternal::UnderlyingType< Src >::type >::type pdfium::internal::as_unsigned (const Src value)
template<typename L, typename R>
constexpr bool pdfium::internal::IsLessImpl (const L lhs, const R rhs, const RangeCheck l_range, const RangeCheck r_range)
template<typename L, typename R>
constexpr bool pdfium::internal::IsLessOrEqualImpl (const L lhs, const R rhs, const RangeCheck l_range, const RangeCheck r_range)
template<typename L, typename R>
constexpr bool pdfium::internal::IsGreaterImpl (const L lhs, const R rhs, const RangeCheck l_range, const RangeCheck r_range)
template<typename L, typename R>
constexpr bool pdfium::internal::IsGreaterOrEqualImpl (const L lhs, const R rhs, const RangeCheck l_range, const RangeCheck r_range)
template<template< typename, typename > class C, typename L, typename R>
constexpr bool pdfium::internal::SafeCompare (const L lhs, const R rhs)
template<typename Dst, typename Src>
constexpr bool pdfium::internal::IsMaxInRangeForNumericType ()
template<typename Dst, typename Src>
constexpr bool pdfium::internal::IsMinInRangeForNumericType ()
template<typename Dst, typename Src>
constexpr Dst pdfium::internal::CommonMax ()
template<typename Dst, typename Src>
constexpr Dst pdfium::internal::CommonMin ()
template<typename Dst, typename Src = Dst>
constexpr Dst pdfium::internal::CommonMaxOrMin (bool is_min)

Variables

constexpr bool pdfium::internal::kEnableAsmCode = false

Macro Definition Documentation

◆ BASE_NUMERICS_LIKELY

#define BASE_NUMERICS_LIKELY ( x)
Value:
(x)
GLint GLint GLint GLint GLint x

Definition at line 17 of file safe_conversions_impl.h.

◆ BASE_NUMERICS_UNLIKELY

#define BASE_NUMERICS_UNLIKELY ( x)
Value:
(x)

Definition at line 18 of file safe_conversions_impl.h.

◆ INTEGER_FOR_DIGITS_AND_SIGN

#define INTEGER_FOR_DIGITS_AND_SIGN ( I)
Value:
template <> \
struct IntegerForDigitsAndSign<IntegerBitsPlusSign<I>::value, \
std::is_signed<I>::value> { \
using type = I; \
}
EGLOutputLayerEXT EGLint EGLAttrib value
[3]
GLenum type

Definition at line 412 of file safe_conversions_impl.h.

◆ IsConstantEvaluated

#define IsConstantEvaluated ( )
Value:
(__builtin_is_constant_evaluated())

Definition at line 91 of file safe_conversions_impl.h.