Funções (SafeInt)
A biblioteca SafeInt fornece várias funções que você pode usar sem criar uma instância da classe SafeInt. Se quiser proteger uma única operação matemática contra estouros de inteiro, você pode usar essas funções. Se quiser proteger várias operações matemáticas, você deve criar objetos SafeInt
. É mais eficiente criar objetos SafeInt
do que usar essas funções várias vezes.
Essas funções permitem comparar ou realizar operações matemáticas em dois tipos diferentes de parâmetros sem antes precisar convertê-los no mesmo tipo.
Cada uma dessas funções tem dois tipos de modelo: T
e U
. Cada um desses tipos pode ser um tipo booliano, caractere ou integral. Tipos integrais podem ser assinados ou não assinados e ter qualquer tamanho de 8 a 64 bits.
Observação
A última versão dessa biblioteca está localizada em https://github.com/dcleblanc/SafeInt.
Nesta seção
Função | Descrição |
---|---|
SafeAdd | Adiciona dois números e protege contra estouros. |
SafeCast | Converte um tipo de parâmetro em outro tipo. |
SafeDivide | Divide dois números e protege contra a divisão por zero. |
SafeEquals, SafeGreaterThan, SafeGreaterThanEquals, SafeLessThan, SafeLessThanEquals, SafeNotEquals | Compara dois números. Essas funções permitem comparar dois tipos diferentes de números sem alterar seus tipos. |
SafeModulus | Realiza a operação de módulo em dois números. |
SafeMultiply | Multiplica dois números juntos e protege contra estouros. |
SafeSubtract | Subtrai dois números e protege contra estouros. |
Seções relacionadas
Seção | Descrição |
---|---|
SafeInt | A classe SafeInt . |
SafeIntException | A classe de exceção específica da biblioteca SafeInt. |
SafeAdd
Adiciona dois números de uma maneira que protege contra estouros.
template<typename T, typename U>
inline bool SafeAdd (
T t,
U u,
T& result
) throw ();
Parâmetros
t
[in] O primeiro número a adicionar. Deve ser do tipo T.
u
[in] O segundo número a adicionar. Deve ser do tipo U.
result
[out] O parâmetro em que SafeAdd
armazena o resultado.
Valor de retorno
true
se não ocorrer erro; false
se ocorrer um erro.
SafeCast
Converte um tipo de número em outro tipo.
template<typename T, typename U>
inline bool SafeCast (
const T From,
U& To
);
Parâmetros
De
[in] O número de origem para converter. Deve ser do tipo T
.
Para
[out] Uma referência ao novo tipo de número. Deve ser do tipo U
.
Valor de retorno
true
se não ocorrer erro; false
se ocorrer um erro.
SafeDivide
Divide dois números de uma maneira que protege contra a divisão por zero.
template<typename T, typename U>
inline bool SafeDivide (
T t,
U u,
T& result
) throw ();
Parâmetros
t
[in] O dividendo. Deve ser do tipo T.
u
[in] O divisor. Deve ser do tipo U.
result
[out] O parâmetro em que SafeDivide
armazena o resultado.
Valor de retorno
true
se não ocorrer erro; false
se ocorrer um erro.
SafeEquals
Compara dois números para determinar se eles são iguais.
template<typename T, typename U>
inline bool SafeEquals (
const T t,
const U u
) throw ();
Parâmetros
t
[in] O primeiro número para comparar. Deve ser do tipo T.
u
[in] O segundo número para comparar. Deve ser do tipo U.
Valor de retorno
true
se t e u forem iguais, caso contrário false
.
Comentários
O método aprimora ==
porque SafeEquals
permite comparar dois tipos diferentes de números.
SafeGreaterThan
Compara dois números.
template<typename T, typename U>
inline bool SafeGreaterThan (
const T t,
const U u
) throw ();
Parâmetros
t
[in] O primeiro número para comparar. Deve ser do tipo T
.
u
[in] O segundo número para comparar. Deve ser do tipo U
.
Valor de retorno
true
se t for maior que u; caso contrário false
.
Comentários
SafeGreaterThan
estende o operador de comparação regular, permitindo que você compare dois tipos diferentes de números.
SafeGreaterThanEquals
Compara dois números.
template <typename T, typename U>
inline bool SafeGreaterThanEquals (
const T t,
const U u
) throw ();
Parâmetros
t
[in] O primeiro número para comparar. Deve ser do tipo T
.
u
[in] O segundo número para comparar. Deve ser do tipo U
.
Valor de retorno
true
se t for maior ou igual a u; caso contrário false
.
Comentários
SafeGreaterThanEquals
aprimora o operador de comparação padrão porque permite comparar dois tipos diferentes de números.
SafeLessThan
Determina se um número é menor que outro.
template<typename T, typename U>
inline bool SafeLessThan (
const T t,
const U u
) throw ();
Parâmetros
t
[in] O primeiro número. Deve ser do tipo T
.
u
[in] O segundo número. Deve ser do tipo U
.
Valor de retorno
true
se t for menor que u; caso contrário false
.
Comentários
Esse método aprimora o operador de comparação padrão porque SafeLessThan
permite comparar dois tipos diferentes de números.
SafeLessThanEquals
Compara dois números.
template <typename T, typename U>
inline bool SafeLessThanEquals (
const T t,
const U u
) throw ();
Parâmetros
t
[in] O primeiro número para comparar. Deve ser do tipo T
.
u
[in] O segundo número para comparar. Deve ser do tipo U
.
Valor de retorno
true
se t for menor ou igual a u; caso contrário, false
.
Comentários
SafeLessThanEquals
estende o operador de comparação regular, permitindo que você compare dois tipos diferentes de números.
SafeModulus
Realiza a operação de módulo em dois números.
template<typename T, typename U>
inline bool SafeModulus (
const T t,
const U u,
T& result
) throw ();
Parâmetros
t
[in] O divisor. Deve ser do tipo T
.
u
[in] O dividendo. Deve ser do tipo U
.
result
[out] O parâmetro em que SafeModulus
armazena o resultado.
Valor de retorno
true
se não ocorrer erro; false
se ocorrer um erro.
SafeMultiply
Multiplica dois números juntos de uma forma que protege contra estouros.
template<typename T, typename U>
inline bool SafeMultiply (
T t,
U u,
T& result
) throw ();
Parâmetros
t
[in] O primeiro número para multiplicar. Deve ser do tipo T
.
u
[in] O segundo número para multiplicar. Deve ser do tipo U
.
result
[out] O parâmetro em que SafeMultiply
armazena o resultado.
Valor de retorno
true
se não ocorrer erro; false
se ocorrer um erro.
SafeNotEquals
Determina se dois números não são iguais.
template<typename T, typename U>
inline bool SafeNotEquals (
const T t,
const U u
) throw ();
Parâmetros
t
[in] O primeiro número para comparar. Deve ser do tipo T
.
u
[in] O segundo número para comparar. Deve ser do tipo U
.
Valor de retorno
true
se t e u não forem iguais, caso contrário, false
.
Comentários
O método aprimora !=
porque SafeNotEquals
permite comparar dois tipos diferentes de números.
SafeSubtract
Subtrai dois números de uma maneira que protege contra estouros.
template<typename T, typename U>
inline bool SafeSubtract (
T t,
U u,
T& result
) throw ();
Parâmetros
t
[in] O primeiro número na subtração. Deve ser do tipo T
.
u
[in] O número para subtrair de t. Deve ser do tipo U
.
result
[out] O parâmetro em que SafeSubtract
armazena o resultado.
Valor de retorno
true
se não ocorrer erro; false
se ocorrer um erro.