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. |
Sezioni correlate
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.