Функции SafeInt
Библиотека SafeInt предоставляет ряд функций, которые можно использовать без создания экземпляра класса SafeInt. Если вы хотите защитить отдельную математическую операцию от переполнения целочисленными значениями, вы можете использовать эти функции. Для защиты множества математических операций создайте объекты SafeInt
. Более эффективно создавать SafeInt
объекты, чем использовать эти функции несколько раз.
Эти функции позволяют сравнить или выполнить математические операции над двумя различными типами параметров без преобразования их к одному типу.
У каждой из этих функций есть два типа шаблонов: T
и U
. Каждый из этих типов может быть логическим, символьным или целочисленным типом. Целочисленные типы могут быть со знаком или без него, а также любого размера — от 8 до 64 бит.
Примечание.
Последняя версия этой библиотеки размещена здесь: https://github.com/dcleblanc/SafeInt.
В этом разделе
Function | Description |
---|---|
SafeAdd | Складывает два числа и обеспечивает защиту от переполнения. |
SafeCast | Преобразует один тип параметра в другой. |
SafeDivide | Делит два числа и обеспечивает защиту от деления на ноль. |
SafeEquals, SafeGreaterThan, SafeGreaterThanEquals, SafeLessThan, SafeLessThanEquals, SafeNotEquals | Сравнивает два числа. Эти функции предназначены для сравнения двух различных типов чисел без изменения их типов. |
SafeModulus | Выполняет операцию получения модуля для двух чисел. |
SafeMultiply | Перемножает одно число на другое и обеспечивает защиту от переполнения. |
SafeSubtract | Вычитает одно число из другого и обеспечивает защиту от переполнения. |
Связанные разделы
Раздел | Описание |
---|---|
SafeInt | Класс SafeInt . |
SafeIntException | Класс исключений, относящийся к библиотеке SafeInt. |
SafeAdd
Складывает два числа таким образом, чтобы обеспечить защиту от переполнения.
template<typename T, typename U>
inline bool SafeAdd (
T t,
U u,
T& result
) throw ();
Параметры
с
[in] Первое число для сложения. Это должен быть тип T.
u
[in] Второе число для сложения. Это должен быть тип U.
result
[out] Параметр, в котором SafeAdd
сохраняет результат.
Возвращаемое значение
Значение true
при отсутствии ошибки; значение false
при ее возникновении.
SafeCast
Преобразует один тип числа в другой.
template<typename T, typename U>
inline bool SafeCast (
const T From,
U& To
);
Параметры
From
[in] Исходное преобразуемое число. Это должен быть тип T
.
Кому
[out] Ссылка на новый числовой тип. Это должен быть тип U
.
Возвращаемое значение
Значение true
при отсутствии ошибки; значение false
при ее возникновении.
SafeDivide
Делит два числа таким образом, чтобы обеспечить защиту от деления на ноль.
template<typename T, typename U>
inline bool SafeDivide (
T t,
U u,
T& result
) throw ();
Параметры
с
[in] Делимое. Это должен быть тип T.
u
[in] Делитель. Это должен быть тип U.
result
[out] Параметр, в котором SafeDivide
сохраняет результат.
Возвращаемое значение
Значение true
при отсутствии ошибки; значение false
при ее возникновении.
SafeEquals
Сравнивает два числа, чтобы определить, равны ли они.
template<typename T, typename U>
inline bool SafeEquals (
const T t,
const U u
) throw ();
Параметры
с
[in] Первое число для сравнения. Это должен быть тип T.
u
[in] Второе число для сравнения. Это должен быть тип U.
Возвращаемое значение
true
Значение t и u равно; в противном случае false
.
Замечания
Этот метод расширяет возможности ==
, потому что SafeEquals
позволяет сравнивать два различных типа чисел.
SafeGreaterThan
Сравнивает два числа.
template<typename T, typename U>
inline bool SafeGreaterThan (
const T t,
const U u
) throw ();
Параметры
с
[in] Первое число для сравнения. Это должен быть тип T
.
u
[in] Второе число для сравнения. Это должен быть тип U
.
Возвращаемое значение
true
Значение , если значение t больше u; в противном случае false
.
Замечания
SafeGreaterThan
расширяет возможности обычного оператора сравнения, позволяя сравнивать два различных типа чисел.
SafeGreaterThanEquals
Сравнивает два числа.
template <typename T, typename U>
inline bool SafeGreaterThanEquals (
const T t,
const U u
) throw ();
Параметры
с
[in] Первое число для сравнения. Это должен быть тип T
.
u
[in] Второе число для сравнения. Это должен быть тип U
.
Возвращаемое значение
true
Значение , если значение t больше или равно u; в противном случае false
.
Замечания
SafeGreaterThanEquals
расширяет возможности стандартного оператора сравнения, потому что позволяет сравнивать два различных типа чисел.
SafeLessThan
Определяет, меньше ли одно число другого.
template<typename T, typename U>
inline bool SafeLessThan (
const T t,
const U u
) throw ();
Параметры
с
[in] Первое число. Это должен быть тип T
.
u
[in] Второй номер. Это должен быть тип U
.
Возвращаемое значение
true
Значение t меньше u; в противном случае false
.
Замечания
Этот метод расширяет возможности стандартного оператора сравнения, потому что SafeLessThan
позволяет сравнивать два различных типа чисел.
SafeLessThanEquals
Сравнивает два числа.
template <typename T, typename U>
inline bool SafeLessThanEquals (
const T t,
const U u
) throw ();
Параметры
с
[in] Первое число для сравнения. Это должен быть тип T
.
u
[in] Второе число для сравнения. Это должен быть тип U
.
Возвращаемое значение
true
Значение , если значение t меньше или равно u; в противном случае false
.
Замечания
SafeLessThanEquals
расширяет возможности обычного оператора сравнения, позволяя сравнивать два различных типа чисел.
SafeModulus
Выполняет операцию получения модуля для двух чисел.
template<typename T, typename U>
inline bool SafeModulus (
const T t,
const U u,
T& result
) throw ();
Параметры
с
[in] Делитель. Это должен быть тип T
.
u
[in] Делимое. Это должен быть тип U
.
result
[out] Параметр, в котором SafeModulus
сохраняет результат.
Возвращаемое значение
Значение true
при отсутствии ошибки; значение false
при ее возникновении.
SafeMultiply
Перемножает одно число на другое таким образом, чтобы обеспечить защиту от переполнения.
template<typename T, typename U>
inline bool SafeMultiply (
T t,
U u,
T& result
) throw ();
Параметры
с
[in] Первое число для умножения. Это должен быть тип T
.
u
[in] Второе число для умножения. Это должен быть тип U
.
result
[out] Параметр, в котором SafeMultiply
сохраняет результат.
Возвращаемое значение
Значение true
при отсутствии ошибки; значение false
при ее возникновении.
SafeNotEquals
Определяет, не равны ли два числа.
template<typename T, typename U>
inline bool SafeNotEquals (
const T t,
const U u
) throw ();
Параметры
с
[in] Первое число для сравнения. Это должен быть тип T
.
u
[in] Второе число для сравнения. Это должен быть тип U
.
Возвращаемое значение
true
Значение , если значение не равно и u ; в противном случае false
.
Замечания
Этот метод расширяет возможности !=
, потому что SafeNotEquals
позволяет сравнивать два различных типа чисел.
SafeSubtract
Вычитает одно число из другого таким образом, чтобы обеспечить защиту от переполнения.
template<typename T, typename U>
inline bool SafeSubtract (
T t,
U u,
T& result
) throw ();
Параметры
с
[in] Первое число в вычитании. Это должен быть тип T
.
u
[in] Число, вычитаемое из t. Это должен быть тип U
.
result
[out] Параметр, в котором SafeSubtract
сохраняет результат.
Возвращаемое значение
Значение true
при отсутствии ошибки; значение false
при ее возникновении.