Compartir a través de


SafeInt (Funciones)

La biblioteca SafeInt proporciona varias funciones que puede usar sin crear una instancia de la clase SafeInt. Si desea proteger una sola operación matemática del desbordamiento de enteros, puede usar estas funciones. Si desea proteger varias operaciones matemáticas, debe crear objetos SafeInt. Resulta más eficaz crear objetos SafeInt que usar estas funciones varias veces.

Estas funciones le permiten comparar o realizar operaciones matemáticas con dos tipos de parámetros diferentes sin tener que convertirlos en el mismo tipo primero.

Cada una de estas funciones tiene dos tipos de plantilla: T y U. Cada uno de estos tipos puede ser un valor booleano, un carácter o un tipo entero. Los tipos enteros pueden tener o no signo y cualquier tamaño entre 8 y 64 bits.

Nota:

La versión más reciente de esta biblioteca se encuentra en https://github.com/dcleblanc/SafeInt.

En esta sección

Función Descripción
SafeAdd Agrega dos números y protege contra el desbordamiento.
SafeCast Convierte un tipo de parámetro en otro tipo.
SafeDivide Divide dos números y protege contra la división entre cero.
SafeEquals, SafeGreaterThan, SafeGreaterThanEquals, SafeLessThan, SafeLessThanEquals, SafeNotEquals Compara dos números. Estas funciones le permiten comparar dos tipos de números diferentes sin cambiar sus tipos.
SafeModulus Realiza la operación de módulo con dos números.
SafeMultiply Multiplica dos números y protege contra el desbordamiento.
SafeSubtract Resta dos números y protege contra el desbordamiento.
Sección Descripción
SafeInt La clase SafeInt.
SafeIntException Clase de excepción específica de la librería SafeInt.

SafeAdd

Agrega dos números de una forma que protege contra el desbordamiento.

template<typename T, typename U>
inline bool SafeAdd (
   T t,
   U u,
   T& result
) throw ();

Parámetros

t
[in] Primer número que se va a agregar. Este debe ser del tipo T.

u
[in] Segundo número que se va a agregar. Este debe ser del tipo U.

result
[out] Parámetro donde SafeAdd almacena el resultado.

Valor devuelto

true si no se produce ningún error; false si se produce un error.

SafeCast

Convierte un tipo de número en otro tipo.

template<typename T, typename U>
inline bool SafeCast (
   const T From,
   U& To
);

Parámetros

From
[in] Número de origen que se va a convertir. Debe ser del tipo T.

Para
[out] Referencia al nuevo tipo de número. Debe ser del tipo U.

Valor devuelto

true si no se produce ningún error; false si se produce un error.

SafeDivide

Divide dos números de una forma que protege contra la división entre cero.

template<typename T, typename U>
inline bool SafeDivide (
   T t,
   U u,
   T& result
) throw ();

Parámetros

t
[in] Dividendo. Este debe ser del tipo T.

u
[in] Divisor. Este debe ser del tipo U.

result
[out] Parámetro donde SafeDivide almacena el resultado.

Valor devuelto

true si no se produce ningún error; false si se produce un error.

SafeEquals

Compara dos números para determinar si son iguales.

template<typename T, typename U>
inline bool SafeEquals (
   const T t,
   const U u
) throw ();

Parámetros

t
[in] Primer número que se va a comparar. Este debe ser del tipo T.

u
[in] Segundo número que se va a comparar. Este debe ser del tipo U.

Valor devuelto

true si t yu son iguales; de lo contrario false.

Comentarios

El método mejora == porque SafeEquals le permite comparar dos tipos de números diferentes.

SafeGreaterThan

Compara dos números.

template<typename T, typename U>
inline bool SafeGreaterThan (
   const T t,
   const U u
) throw ();

Parámetros

t
[in] Primer número que se va a comparar. Debe ser del tipo T.

u
[in] Segundo número que se va a comparar. Debe ser del tipo U.

Valor devuelto

true si t es mayor que u; de lo contrario false.

Comentarios

SafeGreaterThan extiende el operador de comparación regular permitiéndole comparar dos tipos de números diferentes.

SafeGreaterThanEquals

Compara dos números.

template <typename T, typename U>
inline bool SafeGreaterThanEquals (
   const T t,
   const U u
) throw ();

Parámetros

t
[in] Primer número que se va a comparar. Debe ser del tipo T.

u
[in] Segundo número que se va a comparar. Debe ser del tipo U.

Valor devuelto

true si t es mayor o igual que u; de lo contrario false.

Comentarios

SafeGreaterThanEquals mejora el operador de comparación estándar porque le permite comparar dos tipos de números diferentes.

SafeLessThan

Determina si un número es menor que otro.

template<typename T, typename U>
inline bool SafeLessThan (
   const T t,
   const U u
) throw ();

Parámetros

t
[in] Primer número. Debe ser del tipo T.

u
[in] El segundo número. Debe ser del tipo U.

Valor devuelto

true si t es menor o igual que u; de lo contrario false.

Comentarios

Este método mejora el operador de comparación estándar porque SafeLessThan le permite comparar dos tipos de números diferentes.

SafeLessThanEquals

Compara dos números.

template <typename T, typename U>
inline bool SafeLessThanEquals (
   const T t,
   const U u
) throw ();

Parámetros

t
[in] Primer número que se va a comparar. Debe ser del tipo T.

u
[in] Segundo número que se va a comparar. Debe ser del tipo U.

Valor devuelto

true si t es menor o igual que u; de lo contrario false.

Comentarios

SafeLessThanEquals extiende el operador de comparación regular permitiéndole comparar dos tipos de números diferentes.

SafeModulus

Realiza la operación de módulo con dos números.

template<typename T, typename U>
inline bool SafeModulus (
   const T t,
   const U u,
   T& result
) throw ();

Parámetros

t
[in] Divisor. Debe ser del tipo T.

u
[in] Dividendo. Debe ser del tipo U.

result
[out] Parámetro donde SafeModulus almacena el resultado.

Valor devuelto

true si no se produce ningún error; false si se produce un error.

SafeMultiply

Multiplica dos números de una forma que protege contra el desbordamiento.

template<typename T, typename U>
inline bool SafeMultiply (
   T t,
   U u,
   T& result
) throw ();

Parámetros

t
[in] Primer número que se va a multiplicar. Debe ser del tipo T.

u
[in] Segundo número que se va a multiplicar. Debe ser del tipo U.

result
[out] Parámetro donde SafeMultiply almacena el resultado.

Valor devuelto

true si no se produce ningún error; false si se produce un error.

SafeNotEquals

Determina si dos números no son iguales.

template<typename T, typename U>
inline bool SafeNotEquals (
   const T t,
   const U u
) throw ();

Parámetros

t
[in] Primer número que se va a comparar. Debe ser del tipo T.

u
[in] Segundo número que se va a comparar. Debe ser del tipo U.

Valor devuelto

true si t yu no son iguales; de lo contrario false.

Comentarios

El método mejora != porque SafeNotEquals le permite comparar dos tipos de números diferentes.

SafeSubtract

Resta dos números de una forma que protege contra el desbordamiento.

template<typename T, typename U>
inline bool SafeSubtract (
   T t,
   U u,
   T& result
) throw ();

Parámetros

t
[in] Primer número de la resta. Debe ser del tipo T.

u
[in] Número que se va a restar de t. Debe ser del tipo U.

result
[out] Parámetro donde SafeSubtract almacena el resultado.

Valor devuelto

true si no se produce ningún error; false si se produce un error.