Condividi tramite


Funzioni SafeInt

La libreria SafeInt fornisce diverse funzioni che è possibile usare senza creare un'istanza della classe SafeInt. Se si vuole proteggere una singola operazione matematica dall'overflow di Integer, è possibile usare queste funzioni. Se si vuole proteggere più operazioni matematiche, è necessario creare oggetti SafeInt. È più efficiente creare SafeInt oggetti che usare più volte queste funzioni.

Queste funzioni consentono di confrontare o eseguire operazioni matematiche su due diversi tipi di parametri senza prima convertirli nello stesso tipo.

Ognuna di queste funzioni ha due tipi di modello: T e U. Ognuno di questi tipi può essere un tipo di dati integrale, carattere o booleano. I tipi integrali possono essere con o senza segno e avere qualsiasi dimensione tra 8 bit e 64 bit.

Nota

La versione più recente di questa libreria è disponibile all'indirizzo https://github.com/dcleblanc/SafeInt.

In questa sezione

Funzione Descrizione
SafeAdd Somma due numeri e protegge dall'overflow.
SafeCast Esegue il cast di un tipo di parametro in un altro tipo.
SafeDivide Divide due numeri e protegge dalla divisione per zero.
SafeEquals, SafeGreaterThan, SafeGreaterThanEquals, SafeLessThan, SafeLessThanEquals, SafeNotEquals Confronta due numeri. Queste funzioni consentono di confrontare due tipi diversi di numeri senza modificare i relativi tipi.
SafeModulus Esegue l'operazione di modulo su due numeri.
SafeMultiply Moltiplica due numeri e protegge dall'overflow.
SafeSubtract Esegue la sottrazione tra due numeri e protegge dall'overflow.
Sezione Descrizione
SafeInt Classe SafeInt.
SafeIntException Classe di eccezione specifica per la libreria SafeInt.

SafeAdd

Somma due numeri in modo da proteggere dall'overflow.

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

Parametri

o
[in] Primo numero da sommare. Deve essere di tipo T.

u
[in] Secondo numero da sommare. Deve essere di tipo U.

result
[out] Parametro in cui SafeAdd archivia il risultato.

Valore restituito

true se non si verificano errori, false se si verifica un errore.

SafeCast

Esegue il cast di un tipo di numero in un altro tipo.

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

Parametri

Da
[in] Numero di origine da convertire. Deve essere di tipo T.

Per
[out] Riferimento al nuovo tipo di numero. Deve essere di tipo U.

Valore restituito

true se non si verificano errori, false se si verifica un errore.

SafeDivide

Divide due numeri in modo da proteggere dalla divisione per zero.

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

Parametri

o
[in] Dividendo. Deve essere di tipo T.

u
[in] Divisore. Deve essere di tipo U.

result
[out] Parametro in cui SafeDivide archivia il risultato.

Valore restituito

true se non si verificano errori, false se si verifica un errore.

SafeEquals

Confronta due numeri per determinare se sono uguali.

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

Parametri

o
[in] Primo numero da confrontare. Deve essere di tipo T.

u
[in] Secondo numero da confrontare. Deve essere di tipo U.

Valore restituito

true se t e u sono uguali; in caso contrario false, .

Osservazioni:

Il metodo migliora == perché SafeEquals consente di confrontare due tipi diversi di numeri.

SafeGreaterThan

Confronta due numeri.

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

Parametri

o
[in] Primo numero da confrontare. Deve essere di tipo T.

u
[in] Secondo numero da confrontare. Deve essere di tipo U.

Valore restituito

true se t è maggiore di u; in caso contrario false, .

Osservazioni:

SafeGreaterThan estende l'operatore di confronto normale consentendo di confrontare due tipi diversi di numeri.

SafeGreaterThanEquals

Confronta due numeri.

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

Parametri

o
[in] Primo numero da confrontare. Deve essere di tipo T.

u
[in] Secondo numero da confrontare. Deve essere di tipo U.

Valore restituito

true se t è maggiore o uguale a u; in caso contrario false, .

Osservazioni:

SafeGreaterThanEquals migliora l'operatore di confronto standard perché consente di confrontare due tipi diversi di numeri.

SafeLessThan

Determina se un numero è minore di un altro.

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

Parametri

o
[in] Primo numero. Deve essere di tipo T.

u
[in] Secondo numero. Deve essere di tipo U.

Valore restituito

true se t è minore di u; in caso contrario false, .

Osservazioni:

Questo metodo migliora l'operatore di confronto standard perché SafeLessThan consente di confrontare due tipi diversi di numeri.

SafeLessThanEquals

Confronta due numeri.

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

Parametri

o
[in] Primo numero da confrontare. Deve essere di tipo T.

u
[in] Secondo numero da confrontare. Deve essere di tipo U.

Valore restituito

true se t è minore o uguale a u; in caso contrario false, .

Osservazioni:

SafeLessThanEquals estende l'operatore di confronto normale consentendo di confrontare due tipi diversi di numeri.

SafeModulus

Esegue l'operazione di modulo su due numeri.

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

Parametri

o
[in] Divisore. Deve essere di tipo T.

u
[in] Dividendo. Deve essere di tipo U.

result
[out] Parametro in cui SafeModulus archivia il risultato.

Valore restituito

true se non si verificano errori, false se si verifica un errore.

SafeMultiply

Moltiplica due numeri in modo da proteggere dall'overflow.

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

Parametri

o
[in] Primo numero da moltiplicare. Deve essere di tipo T.

u
[in] Secondo numero da moltiplicare. Deve essere di tipo U.

result
[out] Parametro in cui SafeMultiply archivia il risultato.

Valore restituito

true se non si verificano errori, false se si verifica un errore.

SafeNotEquals

Determina se due numeri non sono uguali.

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

Parametri

o
[in] Primo numero da confrontare. Deve essere di tipo T.

u
[in] Secondo numero da confrontare. Deve essere di tipo U.

Valore restituito

true se t e u non sono uguali; in caso contrario false, .

Osservazioni:

Il metodo migliora != perché SafeNotEquals consente di confrontare due tipi diversi di numeri.

SafeSubtract

Esegue la sottrazione tra due numeri in modo da proteggere dall'overflow.

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

Parametri

o
[in] Primo numero nella sottrazione. Deve essere di tipo T.

u
[in] Numero da sottrarre da t. Deve essere di tipo U.

result
[out] Parametro in cui SafeSubtract archivia il risultato.

Valore restituito

true se non si verificano errori, false se si verifica un errore.