Compartilhar via


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çã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.