SafeInt — Funkcje
Biblioteka SafeInt udostępnia kilka funkcji, których można użyć bez tworzenia wystąpienia klasy SafeInt. Jeśli chcesz chronić pojedynczą operację matematyczną przed przepełnieniem liczb całkowitych, możesz użyć tych funkcji. Jeśli chcesz chronić wiele operacji matematycznych, należy utworzyć SafeInt
obiekty. Wydajniejsze jest tworzenie SafeInt
obiektów niż wielokrotne używanie tych funkcji.
Te funkcje umożliwiają porównywanie lub wykonywanie operacji matematycznych na dwóch różnych typach parametrów bez konieczności wcześniejszego konwertowania ich na ten sam typ.
Każda z tych funkcji ma dwa typy szablonów: T
i U
. Każdy z tych typów może być typem logicznym, znakowym lub całkowitym. Typy całkowite mogą być podpisane lub niepodpisane, a dowolny rozmiar z 8 bitów do 64 bitów.
Uwaga
Najnowsza wersja tej biblioteki znajduje się w https://github.com/dcleblanc/SafeIntlokalizacji .
W tej sekcji
Function | opis |
---|---|
SafeAdd | Dodaje dwie liczby i chroni przed przepełnieniem. |
SafeCast | Rzutuje jeden typ parametru na inny typ. |
SafeDivide | Dzieli dwie liczby i chroni przed podziałem przez zero. |
SafeEquals, SafeGreaterThan, SafeGreaterThanEquals, SafeLessThan, SafeLessThanEquals, SafeNotEquals | Porównuje dwie liczby. Te funkcje umożliwiają porównywanie dwóch różnych typów liczb bez zmieniania ich typów. |
SafeModulus | Wykonuje operację modulu na dwóch liczbach. |
SafeMultiply | Mnoży dwie liczby razem i chroni przed przepełnieniem. |
SafeSubtract | Odejmuje dwie liczby i chroni przed przepełnieniem. |
Sekcje pokrewne
Sekcja | opis |
---|---|
SafeInt | Klasa SafeInt . |
SafeIntException | Klasa wyjątku specyficzna dla biblioteki SafeInt. |
SafeAdd
Dodaje dwie liczby w sposób, który chroni przed przepełnieniem.
template<typename T, typename U>
inline bool SafeAdd (
T t,
U u,
T& result
) throw ();
Parametry
t
[in] Pierwsza liczba do dodania. Musi to być typ T.
u
[in] Druga liczba do dodania. Musi to być typ U.
wynik
[out] Parametr, w którym SafeAdd
przechowuje wynik.
Wartość zwracana
true
jeśli nie wystąpi błąd; false
jeśli wystąpi błąd.
SafeCast
Rzutuje jeden typ liczby na inny typ.
template<typename T, typename U>
inline bool SafeCast (
const T From,
U& To
);
Parametry
Od
[in] Numer źródłowy do przekonwertowania. Musi to być typ T
.
Do
[out] Odwołanie do nowego typu numeru. Musi to być typ U
.
Wartość zwracana
true
jeśli nie wystąpi błąd; false
jeśli wystąpi błąd.
SafeDivide
Dzieli dwie liczby w sposób, który chroni przed podziałem przez zero.
template<typename T, typename U>
inline bool SafeDivide (
T t,
U u,
T& result
) throw ();
Parametry
t
[in] Dywidenda. Musi to być typ T.
u
[in] Dzielnika. Musi to być typ U.
wynik
[out] Parametr, w którym SafeDivide
przechowuje wynik.
Wartość zwracana
true
jeśli nie wystąpi błąd; false
jeśli wystąpi błąd.
SafeEquals
Porównuje dwie liczby, aby określić, czy są równe.
template<typename T, typename U>
inline bool SafeEquals (
const T t,
const U u
) throw ();
Parametry
t
[in] Pierwsza liczba do porównania. Musi to być typ T.
u
[in] Druga liczba do porównania. Musi to być typ U.
Wartość zwracana
true
jeśli t i u są równe; w przeciwnym razie false
.
Uwagi
Metoda zwiększa się, ==
ponieważ SafeEquals
umożliwia porównywanie dwóch różnych typów liczb.
SafeGreaterThan
Porównuje dwie liczby.
template<typename T, typename U>
inline bool SafeGreaterThan (
const T t,
const U u
) throw ();
Parametry
t
[in] Pierwsza liczba do porównania. Musi to być typ T
.
u
[in] Druga liczba do porównania. Musi to być typ U
.
Wartość zwracana
true
jeśli wartość t jest większa niż u; w przeciwnym razie false
.
Uwagi
SafeGreaterThan
rozszerza zwykły operator porównania, umożliwiając porównywanie dwóch różnych typów liczb.
SafeGreaterThanEquals
Porównuje dwie liczby.
template <typename T, typename U>
inline bool SafeGreaterThanEquals (
const T t,
const U u
) throw ();
Parametry
t
[in] Pierwsza liczba do porównania. Musi to być typ T
.
u
[in] Druga liczba do porównania. Musi to być typ U
.
Wartość zwracana
true
jeśli wartość t jest większa niż lub równa u; w przeciwnym razie false
.
Uwagi
SafeGreaterThanEquals
zwiększa standardowy operator porównania, ponieważ umożliwia porównywanie dwóch różnych typów liczb.
SafeLessThan
Określa, czy jedna liczba jest mniejsza niż inna.
template<typename T, typename U>
inline bool SafeLessThan (
const T t,
const U u
) throw ();
Parametry
t
[in] Pierwsza liczba. Musi to być typ T
.
u
[in] Druga liczba. Musi to być typ U
.
Wartość zwracana
true
jeśli wartość t jest mniejsza niż u; w przeciwnym razie false
.
Uwagi
Ta metoda zwiększa standardowy operator porównania, ponieważ SafeLessThan
umożliwia porównywanie dwóch różnych typów liczb.
SafeLessThanEquals
Porównuje dwie liczby.
template <typename T, typename U>
inline bool SafeLessThanEquals (
const T t,
const U u
) throw ();
Parametry
t
[in] Pierwsza liczba do porównania. Musi to być typ T
.
u
[in] Druga liczba do porównania. Musi to być typ U
.
Wartość zwracana
true
jeśli wartość t jest mniejsza niż lub równa u; w przeciwnym razie false
.
Uwagi
SafeLessThanEquals
rozszerza zwykły operator porównania, umożliwiając porównywanie dwóch różnych typów liczb.
SafeModulus
Wykonuje operację modulu na dwóch liczbach.
template<typename T, typename U>
inline bool SafeModulus (
const T t,
const U u,
T& result
) throw ();
Parametry
t
[in] Dzielnika. Musi to być typ T
.
u
[in] Dywidenda. Musi to być typ U
.
wynik
[out] Parametr, w którym SafeModulus
przechowuje wynik.
Wartość zwracana
true
jeśli nie wystąpi błąd; false
jeśli wystąpi błąd.
SafeMultiply
Mnoży dwie liczby w sposób, który chroni przed przepełnieniem.
template<typename T, typename U>
inline bool SafeMultiply (
T t,
U u,
T& result
) throw ();
Parametry
t
[in] Pierwsza liczba do pomnożenia. Musi to być typ T
.
u
[in] Druga liczba do pomnożenia. Musi to być typ U
.
wynik
[out] Parametr, w którym SafeMultiply
przechowuje wynik.
Wartość zwracana
true
jeśli nie wystąpi błąd; false
jeśli wystąpi błąd.
SafeNotEquals
Określa, czy dwie liczby nie są równe.
template<typename T, typename U>
inline bool SafeNotEquals (
const T t,
const U u
) throw ();
Parametry
t
[in] Pierwsza liczba do porównania. Musi to być typ T
.
u
[in] Druga liczba do porównania. Musi to być typ U
.
Wartość zwracana
true
jeśli nie i u nie są równe; w przeciwnym razie false
.
Uwagi
Metoda zwiększa się, !=
ponieważ SafeNotEquals
umożliwia porównywanie dwóch różnych typów liczb.
SafeSubtract
Odejmuje dwie liczby w sposób, który chroni przed przepełnieniem.
template<typename T, typename U>
inline bool SafeSubtract (
T t,
U u,
T& result
) throw ();
Parametry
t
[in] Pierwsza liczba w odejmach. Musi to być typ T
.
u
[in] Liczba do odejmowania od t. Musi to być typ U
.
wynik
[out] Parametr, w którym SafeSubtract
przechowuje wynik.
Wartość zwracana
true
jeśli nie wystąpi błąd; false
jeśli wystąpi błąd.