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. |
Secciones relacionadas
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.