Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Classes | Namespaces | Macros | Enumerations | Functions
checked_math_impl.h File Reference
#include <climits>
#include <cmath>
#include <cstddef>
#include <cstdint>
#include <cstdlib>
#include <limits>
#include <type_traits>
#include "base/numerics/safe_conversions.h"
#include "base/numerics/safe_math_shared_impl.h"

Go to the source code of this file.

Classes

struct  base::internal::CheckedAddOp< T, U, Enable >
 
struct  base::internal::CheckedAddOp< T, U, typename std::enable_if< std::is_integral< T >::value &&std::is_integral< U >::value >::type >
 
struct  base::internal::CheckedSubOp< T, U, Enable >
 
struct  base::internal::CheckedSubOp< T, U, typename std::enable_if< std::is_integral< T >::value &&std::is_integral< U >::value >::type >
 
struct  base::internal::CheckedMulOp< T, U, Enable >
 
struct  base::internal::CheckedMulOp< T, U, typename std::enable_if< std::is_integral< T >::value &&std::is_integral< U >::value >::type >
 
struct  base::internal::CheckedDivOp< T, U, Enable >
 
struct  base::internal::CheckedDivOp< T, U, typename std::enable_if< std::is_integral< T >::value &&std::is_integral< U >::value >::type >
 
struct  base::internal::CheckedModOp< T, U, Enable >
 
struct  base::internal::CheckedModOp< T, U, typename std::enable_if< std::is_integral< T >::value &&std::is_integral< U >::value >::type >
 
struct  base::internal::CheckedLshOp< T, U, Enable >
 
struct  base::internal::CheckedLshOp< T, U, typename std::enable_if< std::is_integral< T >::value &&std::is_integral< U >::value >::type >
 
struct  base::internal::CheckedRshOp< T, U, Enable >
 
struct  base::internal::CheckedRshOp< T, U, typename std::enable_if< std::is_integral< T >::value &&std::is_integral< U >::value >::type >
 
struct  base::internal::CheckedAndOp< T, U, Enable >
 
struct  base::internal::CheckedAndOp< T, U, typename std::enable_if< std::is_integral< T >::value &&std::is_integral< U >::value >::type >
 
struct  base::internal::CheckedOrOp< T, U, Enable >
 
struct  base::internal::CheckedOrOp< T, U, typename std::enable_if< std::is_integral< T >::value &&std::is_integral< U >::value >::type >
 
struct  base::internal::CheckedXorOp< T, U, Enable >
 
struct  base::internal::CheckedXorOp< T, U, typename std::enable_if< std::is_integral< T >::value &&std::is_integral< U >::value >::type >
 
struct  base::internal::CheckedMaxOp< T, U, Enable >
 
struct  base::internal::CheckedMaxOp< T, U, typename std::enable_if< std::is_arithmetic< T >::value &&std::is_arithmetic< U >::value >::type >
 
struct  base::internal::CheckedMinOp< T, U, Enable >
 
struct  base::internal::CheckedMinOp< T, U, typename std::enable_if< std::is_arithmetic< T >::value &&std::is_arithmetic< U >::value >::type >
 
struct  base::internal::GetNumericRepresentation< NumericType >
 
class  base::internal::CheckedNumericState< T, type >
 
class  base::internal::CheckedNumericState< T, NUMERIC_INTEGER >
 
class  base::internal::CheckedNumericState< T, NUMERIC_FLOATING >
 

Namespaces

namespace  base
 
namespace  base::internal
 

Macros

#define BASE_FLOAT_ARITHMETIC_OPS(NAME, OP)
 

Enumerations

enum  base::internal::NumericRepresentation { base::internal::NUMERIC_INTEGER , base::internal::NUMERIC_FLOATING , base::internal::NUMERIC_UNKNOWN }
 

Functions

template<typename T >
constexpr bool base::internal::CheckedAddImpl (T x, T y, T *result)
 
template<typename T >
constexpr bool base::internal::CheckedSubImpl (T x, T y, T *result)
 
template<typename T >
constexpr bool base::internal::CheckedMulImpl (T x, T y, T *result)
 

Macro Definition Documentation

◆ BASE_FLOAT_ARITHMETIC_OPS

#define BASE_FLOAT_ARITHMETIC_OPS (   NAME,
  OP 
)
Value:
template <typename T, typename U> \
struct Checked##NAME##Op< \
T, U, \
typename std::enable_if<std::is_floating_point<T>::value || \
std::is_floating_point<U>::value>::type> { \
using result_type = typename MaxExponentPromotion<T, U>::type; \
template <typename V> \
static constexpr bool Do(T x, U y, V* result) { \
using Promotion = typename MaxExponentPromotion<T, U>::type; \
Promotion presult = x OP y; \
*result = static_cast<V>(presult); \
return IsValueInRangeForNumericType<V>(presult); \
} \
};
GAsyncResult * result
T __attribute__((ext_vector_type(N))) V
double y
double x
Definition ref_ptr.h:256
#define T

Definition at line 429 of file checked_math_impl.h.

434 { \
435 using result_type = typename MaxExponentPromotion<T, U>::type; \
436 template <typename V> \
437 static constexpr bool Do(T x, U y, V* result) { \
438 using Promotion = typename MaxExponentPromotion<T, U>::type; \
439 Promotion presult = x OP y; \
440 *result = static_cast<V>(presult); \
441 return IsValueInRangeForNumericType<V>(presult); \
442 } \
443 };