SafeInt, fonctions

La bibliothèque SafeInt fournit plusieurs fonctions que vous pouvez utiliser sans créer d’instance de la classe SafeInt. Vous pouvez utiliser ces fonctions si vous souhaitez protéger une seule opération mathématique contre les dépassements d’entiers. Si vous souhaitez protéger plusieurs opérations mathématiques, vous devez créer des objets SafeInt. Il est plus efficace de créer SafeInt des objets que d’utiliser ces fonctions plusieurs fois.

Ces fonctions permettent de comparer ou d’effectuer des opérations mathématiques sur deux types de paramètres sans avoir à les convertir vers le même type.

Chacune de ces fonctions dispose de deux types de modèle : T et U. Chacun de ces types peut être un type booléen, de caractère ou intégral. Les types de données intégral peuvent être signés ou non signés et de toutes tailles, comprises entre 8 bits et 64 bits.

Remarque

La dernière version de cette bibliothèque se trouve dans https://github.com/dcleblanc/SafeInt.

Dans cette section

Fonction Description
SafeAdd Ajoute deux nombres et protège contre le dépassement de capacité.
SafeCast Convertit un type de paramètre en un autre type.
SafeDivide Divise deux nombres et protège contre la division par zéro.
SafeEquals, SafeGreaterThan, SafeGreaterThanEquals, SafeLessThan, SafeLessThanEquals, SafeNotEquals Compare deux nombres. Ces fonctions permettent de comparer deux types de nombres différents sans modifier leurs types.
SafeModulus Effectue l’opération de modulo sur deux nombres.
SafeMultiply Multiplie deux nombres et protège contre le dépassement de capacité.
SafeSubtract Soustrait deux nombres et protège contre le dépassement de capacité.
Section Description
SafeInt La classe SafeInt.
SafeIntException La classe d’exception spécifique à la bibliothèque SafeInt.

SafeAdd

Ajoute deux nombres afin de protéger contre le dépassement de capacité.

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

Paramètres

t
[in] Premier nombre à ajouter. Il doit être de type T.

u
[in] Deuxième nombre à ajouter. Il doit être de type U.

result
[out] Le paramètre dans lequel SafeAdd stocke le résultat.

Valeur de retour

true si aucune erreur ne se produit ; false si une erreur se produit.

SafeCast

Convertit un type de nombre en un autre type.

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

Paramètres

From
[in] Le nombre de la source à convertir. Il doit être de type T.

Pour
[out] Une référence au nouveau type du nombre. Il doit être de type U.

Valeur de retour

true si aucune erreur ne se produit ; false si une erreur se produit.

SafeDivide

Divise deux nombres afin de protéger contre la division par zéro.

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

Paramètres

t
[in] Dividende. Il doit être de type T.

u
[in] Diviseur. Il doit être de type U.

result
[out] Le paramètre dans lequel SafeDivide stocke le résultat.

Valeur de retour

true si aucune erreur ne se produit ; false si une erreur se produit.

SafeEquals

Compare deux nombres pour déterminer s’ils sont égaux.

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

Paramètres

t
[in] Premier nombre à comparer. Il doit être de type T.

u
[in] Deuxième nombre à comparer. Il doit être de type U.

Valeur de retour

true si t et u sont égaux ; sinon false.

Notes

La méthode améliore == car SafeEquals vous permet de comparer deux types de nombres différents.

SafeGreaterThan

Compare deux nombres.

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

Paramètres

t
[in] Premier nombre à comparer. Il doit être de type T.

u
[in] Deuxième nombre à comparer. Il doit être de type U.

Valeur de retour

true si t est supérieur à u ; sinon false.

Notes

SafeGreaterThan étend l’opérateur de comparaison régulier en vous permettant de comparer deux types de nombres différents.

SafeGreaterThanEquals

Compare deux nombres.

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

Paramètres

t
[in] Premier nombre à comparer. Il doit être de type T.

u
[in] Deuxième nombre à comparer. Il doit être de type U.

Valeur de retour

true si t est supérieur ou égal à u ; sinon false.

Notes

SafeGreaterThanEquals améliore l’opérateur de comparaison standard en vous permettant de comparer deux types de nombres différents.

SafeLessThan

Détermine si un nombre est inférieur à un autre.

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

Paramètres

t
[in] Premier nombre. Il doit être de type T.

u
[in] Deuxième nombre. Il doit être de type U.

Valeur de retour

true si t est inférieur à u ; sinon false.

Notes

La méthode améliore l’opérateur de comparaison standard car SafeLessThan vous permet de comparer deux types de nombres différents.

SafeLessThanEquals

Compare deux nombres.

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

Paramètres

t
[in] Premier nombre à comparer. Il doit être de type T.

u
[in] Deuxième nombre à comparer. Il doit être de type U.

Valeur de retour

true si t est inférieur ou égal à u ; sinon false.

Notes

SafeLessThanEquals étend l’opérateur de comparaison régulier en vous permettant de comparer deux types de nombres différents.

SafeModulus

Effectue l’opération de modulo sur deux nombres.

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

Paramètres

t
[in] Diviseur. Il doit être de type T.

u
[in] Dividende. Il doit être de type U.

result
[out] Le paramètre dans lequel SafeModulus stocke le résultat.

Valeur de retour

true si aucune erreur ne se produit ; false si une erreur se produit.

SafeMultiply

Multiplie deux nombres afin de protéger contre le dépassement de capacité.

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

Paramètres

t
[in] Premier nombre à multiplier. Il doit être de type T.

u
[in] Second nombre à multiplier. Il doit être de type U.

result
[out] Le paramètre dans lequel SafeMultiply stocke le résultat.

Valeur de retour

true si aucune erreur ne se produit ; false si une erreur se produit.

SafeNotEquals

Détermine si deux nombres ne sont pas égaux.

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

Paramètres

t
[in] Premier nombre à comparer. Il doit être de type T.

u
[in] Deuxième nombre à comparer. Il doit être de type U.

Valeur de retour

true si ce n’est pas le cas et u ne sont pas égaux ; sinon false.

Notes

La méthode améliore != car SafeNotEquals vous permet de comparer deux types de nombres différents.

SafeSubtract

Soustrait deux nombres afin de protéger contre le dépassement de capacité.

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

Paramètres

t
[in] Le premier nombre de la soustraction. Il doit être de type T.

u
[in] Le nombre à soustraire de t. Il doit être de type U.

result
[out] Le paramètre dans lequel SafeSubtract stocke le résultat.

Valeur de retour

true si aucune erreur ne se produit ; false si une erreur se produit.