Поделиться через


Функции 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 при ее возникновении.