Sdílet prostřednictvím


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

trueje-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

trueje-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ě.