Funkce jazyka SafeInt
Knihovna SafeInt poskytuje několik funkcí, které můžete použít bez vytvoření instance SafeInt třídy. Pokud chcete chránit jednu matematickou operaci před přetečením celého čísla, můžete tyto funkce použít. Pokud chcete chránit více matematických operací, měli byste vytvořit SafeInt
objekty. Je efektivnější vytvářet SafeInt
objekty, než používat tyto funkce vícekrát.
Tyto funkce umožňují porovnat nebo provádět matematické operace se dvěma různými typy parametrů, aniž byste je museli nejprve převést na stejný typ.
Každá z těchto funkcí má dva typy šablon: T
a U
. Každý z těchto typů může být logický, znakový nebo celočíselný typ. Celočíselné typy můžou být podepsané nebo nepodepsané a libovolná velikost od 8 bitů do 64 bitů.
Poznámka:
Nejnovější verze této knihovny se nachází na adrese https://github.com/dcleblanc/SafeInt.
V tomto oddílu
Function | Popis |
---|---|
SafeAdd | Sečte dvě čísla a chrání před přetečením. |
SafeCast | Přetypuje jeden typ parametru na jiný typ. |
SafeDivide | Vydělí dvě čísla a chrání před dělením nulou. |
SafeEquals, SafeGreaterThan, SafeGreaterThanEquals, SafeLessThan, SafeLessThanEquals, SafeNotEquals | Porovná dvě čísla. Tyto funkce umožňují porovnat dva různé typy čísel beze změny jejich typů. |
SafeModulus | Provede operaci modulu se dvěma čísly. |
SafeMultiply | Vynásobí dvě čísla a chrání před přetečením. |
SafeSubtract | Odečte dvě čísla a chrání před přetečením. |
Související oddíly
Oddíl | Popis |
---|---|
SafeInt | Třída SafeInt . |
SafeIntException | Třída výjimky specifická pro knihovnu SafeInt. |
SafeAdd
Sečte dvě čísla způsobem, který chrání před přetečením.
template<typename T, typename U>
inline bool SafeAdd (
T t,
U u,
T& result
) throw ();
Parametry
t
[v] První číslo, které se má přidat. Musí to být typ T.
u
[v] Druhé číslo, které chcete přidat. Musí to být typ U.
výsledek
[ven] Parametr, do kterého SafeAdd
se uloží výsledek.
Návratová hodnota
true
pokud nedojde k žádné chybě; false
pokud dojde k chybě.
SafeCast
Přetypuje jeden typ čísla na jiný typ.
template<typename T, typename U>
inline bool SafeCast (
const T From,
U& To
);
Parametry
Od
[v] Zdrojové číslo, které chcete převést. To musí být typu T
.
Na
[ven] Odkaz na nový typ čísla. To musí být typu U
.
Návratová hodnota
true
pokud nedojde k žádné chybě; false
pokud dojde k chybě.
SafeDivide
Vydělí dvě čísla způsobem, který chrání před dělením nulou.
template<typename T, typename U>
inline bool SafeDivide (
T t,
U u,
T& result
) throw ();
Parametry
t
[v] Dělo. Musí to být typ T.
u
[v] Dělitel. Musí to být typ U.
výsledek
[ven] Parametr, do kterého SafeDivide
se uloží výsledek.
Návratová hodnota
true
pokud nedojde k žádné chybě; false
pokud dojde k chybě.
SafeEquals
Porovná dvě čísla a určí, jestli jsou rovny.
template<typename T, typename U>
inline bool SafeEquals (
const T t,
const U u
) throw ();
Parametry
t
[v] První číslo, které se má porovnat. Musí to být typ T.
u
[v] Druhé číslo, které chcete porovnat. Musí to být typ U.
Návratová hodnota
true
pokud t a u jsou rovny; jinak false
.
Poznámky
Tato metoda se vylepšuje ==
, protože SafeEquals
umožňuje porovnat dva různé typy čísel.
SafeGreaterThan
Porovná dvě čísla.
template<typename T, typename U>
inline bool SafeGreaterThan (
const T t,
const U u
) throw ();
Parametry
t
[v] První číslo, které se má porovnat. To musí být typu T
.
u
[v] Druhé číslo, které chcete porovnat. To musí být typu U
.
Návratová hodnota
true
je-li t větší než u; jinak false
.
Poznámky
SafeGreaterThan
rozšiřuje běžný relační operátor tím, že umožňuje porovnat dva různé typy čísel.
SafeGreaterThanEquals
Porovná dvě čísla.
template <typename T, typename U>
inline bool SafeGreaterThanEquals (
const T t,
const U u
) throw ();
Parametry
t
[v] První číslo, které se má porovnat. To musí být typu T
.
u
[v] Druhé číslo, které chcete porovnat. To musí být typu U
.
Návratová hodnota
true
je-li t větší než nebo rovno u; jinak false
.
Poznámky
SafeGreaterThanEquals
vylepšuje standardní relační operátor, protože umožňuje porovnat dva různé typy čísel.
SafeLessThan
Určuje, zda je jedno číslo menší než jiné.
template<typename T, typename U>
inline bool SafeLessThan (
const T t,
const U u
) throw ();
Parametry
t
[v] První číslo. To musí být typu T
.
u
[v] Druhé číslo. To musí být typu U
.
Návratová hodnota
true
je-li t menší než u; jinak false
.
Poznámky
Tato metoda vylepšuje standardní relační operátor, protože SafeLessThan
umožňuje porovnat dva různé typy čísel.
SafeLessThanEquals
Porovná dvě čísla.
template <typename T, typename U>
inline bool SafeLessThanEquals (
const T t,
const U u
) throw ();
Parametry
t
[v] První číslo, které se má porovnat. To musí být typu T
.
u
[v] Druhé číslo, které chcete porovnat. To musí být typu U
.
Návratová hodnota
true
je-li t menší než nebo rovno u; jinak false
.
Poznámky
SafeLessThanEquals
rozšiřuje běžný relační operátor tím, že umožňuje porovnat dva různé typy čísel.
SafeModulus
Provede operaci modulu se dvěma čísly.
template<typename T, typename U>
inline bool SafeModulus (
const T t,
const U u,
T& result
) throw ();
Parametry
t
[v] Dělitel. To musí být typu T
.
u
[v] Dělo. To musí být typu U
.
výsledek
[ven] Parametr, do kterého SafeModulus
se uloží výsledek.
Návratová hodnota
true
pokud nedojde k žádné chybě; false
pokud dojde k chybě.
SafeMultiply
Vynásobí dvě čísla způsobem, který chrání před přetečením.
template<typename T, typename U>
inline bool SafeMultiply (
T t,
U u,
T& result
) throw ();
Parametry
t
[v] První číslo, které se má vynásobit. To musí být typu T
.
u
[v] Druhé číslo, které se má vynásobit. To musí být typu U
.
výsledek
[ven] Parametr, do kterého SafeMultiply
se uloží výsledek.
Návratová hodnota
true
pokud nedojde k žádné chybě; false
pokud dojde k chybě.
SafeNotEquals
Určuje, jestli se dvě čísla nerovnají.
template<typename T, typename U>
inline bool SafeNotEquals (
const T t,
const U u
) throw ();
Parametry
t
[v] První číslo, které se má porovnat. To musí být typu T
.
u
[v] Druhé číslo, které chcete porovnat. To musí být typu U
.
Návratová hodnota
true
pokud ne a u nejsou rovny; jinak false
.
Poznámky
Tato metoda se vylepšuje !=
, protože SafeNotEquals
umožňuje porovnat dva různé typy čísel.
SafeSubtract
Odečte dvě čísla způsobem, který chrání před přetečením.
template<typename T, typename U>
inline bool SafeSubtract (
T t,
U u,
T& result
) throw ();
Parametry
t
[v] První číslo v odčítání. To musí být typu T
.
u
[v] Číslo, které se má odečíst od t. To musí být typu U
.
výsledek
[ven] Parametr, do kterého SafeSubtract
se uloží výsledek.
Návratová hodnota
true
pokud nedojde k žádné chybě; false
pokud dojde k chybě.