OpenTTD Source: OverflowSafeInt< T > Class Template Reference

OpenTTD Source 14.0-beta1

Public Member Functions | Static Public Member Functions | Private Attributes | Static Private Attributes
OverflowSafeInt< T > Class Template Reference

Overflow safe template for integers, i.e. More...

`#include <overflowsafe_type.hpp>`

## Public Member Functions
constexpr | OverflowSafeInt (const OverflowSafeInt &other)
constexpr | OverflowSafeInt (const T int_)
constexpr OverflowSafeInt & | operator= (const OverflowSafeInt &other)
constexpr OverflowSafeInt & | operator= (T other)
constexpr OverflowSafeInt | operator- () const
constexpr OverflowSafeInt & | operator+= (const OverflowSafeInt &other)
| Safe implementation of addition. More...
constexpr OverflowSafeInt & | operator-= (const OverflowSafeInt &other)
| Safe implementation of subtraction. More...
constexpr OverflowSafeInt | operator+ (const OverflowSafeInt &other) const
constexpr OverflowSafeInt | operator+ (const int other) const
constexpr OverflowSafeInt | operator+ (const uint other) const
constexpr OverflowSafeInt | operator- (const OverflowSafeInt &other) const
constexpr OverflowSafeInt | operator- (const int other) const
constexpr OverflowSafeInt | operator- (const uint other) const
constexpr OverflowSafeInt & | operator++ ()
constexpr OverflowSafeInt & | operator-- ()
constexpr OverflowSafeInt | operator++ (int)
constexpr OverflowSafeInt | operator-- (int)
constexpr OverflowSafeInt & | operator*= (const int factor)
| Safe implementation of multiplication. More...
constexpr OverflowSafeInt | operator* (const int64_t factor) const
constexpr OverflowSafeInt | operator* (const int factor) const
constexpr OverflowSafeInt | operator* (const uint factor) const
constexpr OverflowSafeInt | operator* (const uint16_t factor) const
constexpr OverflowSafeInt | operator* (const byte factor) const
constexpr OverflowSafeInt & | operator/= (const int64_t divisor)
constexpr OverflowSafeInt | operator/ (const OverflowSafeInt &divisor) const
constexpr OverflowSafeInt | operator/ (const int divisor) const
constexpr OverflowSafeInt | operator/ (const uint divisor) const
constexpr OverflowSafeInt & | operator%= (const int divisor)
constexpr OverflowSafeInt | operator% (const int divisor) const
constexpr OverflowSafeInt & | operator<<= (const int shift)
constexpr OverflowSafeInt | operator<< (const int shift) const
constexpr OverflowSafeInt & | operator>>= (const int shift)
constexpr OverflowSafeInt | operator>> (const int shift) const
constexpr bool | operator== (const OverflowSafeInt &other) const
constexpr bool | operator!= (const OverflowSafeInt &other) const
constexpr bool | operator> (const OverflowSafeInt &other) const
constexpr bool | operator>= (const OverflowSafeInt &other) const
constexpr bool | operator< (const OverflowSafeInt &other) const
constexpr bool | operator<= (const OverflowSafeInt &other) const
constexpr bool | operator== (const int other) const
constexpr bool | operator!= (const int other) const
constexpr bool | operator> (const int other) const
constexpr bool | operator>= (const int other) const
constexpr bool | operator< (const int other) const
constexpr bool | operator<= (const int other) const
constexpr | operator T () const

## Static Public Member Functions
static constexpr OverflowSafeInt< T > | max ()
static constexpr OverflowSafeInt< T > | min ()

## Private Attributes
T | m_value
| The non-overflow safe backend to store the value in.

## Static Private Attributes
static constexpr T | T_MAX = std::numeric_limits<T>::max()
static constexpr T | T_MIN = std::numeric_limits<T>::min()

## Detailed Description

### template<class T>
class OverflowSafeInt< T >

Overflow safe template for integers, i.e.

integers that will never overflow when you multiply the maximum value with 2, or add 2, or subtract something from the minimum value, etc.

Parameters

  T | the type these integers are stored with.

Definition at line 29 of file overflowsafe_type.hpp.

## Member Function Documentation

## ◆ operator*=()

template<class T >

constexpr OverflowSafeInt& OverflowSafeInt< T >::operator*= | ( | const int | factor | ) |
| inlineconstexpr

Safe implementation of multiplication.

Parameters

  factor | the factor to multiply this with.

Note
  when the multiplication would yield more than T_MAX (or less than T_MIN), it will be T_MAX (respectively T_MIN).

Definition at line 113 of file overflowsafe_type.hpp.

## ◆ operator+=()

template<class T >

constexpr OverflowSafeInt& OverflowSafeInt< T >::operator+= | ( | const OverflowSafeInt< T > & | other | ) |
| inlineconstexpr

Safe implementation of addition.

Parameters

  other | the amount to add

Note
  when the addition would yield more than T_MAX, it will be T_MAX.

Definition at line 53 of file overflowsafe_type.hpp.

## ◆ operator-=()

template<class T >

constexpr OverflowSafeInt& OverflowSafeInt< T >::operator-= | ( | const OverflowSafeInt< T > & | other | ) |
| inlineconstexpr

Safe implementation of subtraction.

Parameters

  other | the amount to subtract

Note
  when the subtraction would yield less than T_MIN, it will be T_MIN.

Definition at line 76 of file overflowsafe_type.hpp.

The documentation for this class was generated from the following file:

- src/core/overflowsafe_type.hpp