OverflowSafeInt< T, T_MAX, T_MIN > Class Template Reference

Overflow safe template for integers, i.e. More...

#include <overflowsafe_type.hpp>

Public Member Functions

 OverflowSafeInt (const OverflowSafeInt &other)
 OverflowSafeInt (const int64 int_)
FORCEINLINE OverflowSafeIntoperator= (const OverflowSafeInt &other)
FORCEINLINE OverflowSafeInt operator- () const
FORCEINLINE OverflowSafeIntoperator+= (const OverflowSafeInt &other)
 Safe implementation of addition.
FORCEINLINE OverflowSafeInt operator+ (const OverflowSafeInt &other) const
FORCEINLINE OverflowSafeInt operator+ (const int other) const
FORCEINLINE OverflowSafeInt operator+ (const uint other) const
FORCEINLINE OverflowSafeIntoperator-= (const OverflowSafeInt &other)
FORCEINLINE OverflowSafeInt operator- (const OverflowSafeInt &other) const
FORCEINLINE OverflowSafeInt operator- (const int other) const
FORCEINLINE OverflowSafeInt operator- (const uint other) const
FORCEINLINE OverflowSafeIntoperator++ ()
FORCEINLINE OverflowSafeIntoperator-- ()
FORCEINLINE OverflowSafeInt operator++ (int)
FORCEINLINE OverflowSafeInt operator-- (int)
FORCEINLINE OverflowSafeIntoperator*= (const int factor)
 Safe implementation of multiplication.
FORCEINLINE OverflowSafeInt operator* (const int64 factor) const
FORCEINLINE OverflowSafeInt operator* (const int factor) const
FORCEINLINE OverflowSafeInt operator* (const uint factor) const
FORCEINLINE OverflowSafeInt operator* (const uint16 factor) const
FORCEINLINE OverflowSafeInt operator* (const byte factor) const
FORCEINLINE OverflowSafeIntoperator/= (const int64 divisor)
FORCEINLINE OverflowSafeInt operator/ (const OverflowSafeInt &divisor) const
FORCEINLINE OverflowSafeInt operator/ (const int divisor) const
FORCEINLINE OverflowSafeInt operator/ (const uint divisor) const
FORCEINLINE OverflowSafeIntoperator%= (const int divisor)
FORCEINLINE OverflowSafeInt operator% (const int divisor) const
FORCEINLINE OverflowSafeIntoperator<<= (const int shift)
FORCEINLINE OverflowSafeInt operator<< (const int shift) const
FORCEINLINE OverflowSafeIntoperator>>= (const int shift)
FORCEINLINE OverflowSafeInt operator>> (const int shift) const
FORCEINLINE bool operator== (const OverflowSafeInt &other) const
FORCEINLINE bool operator!= (const OverflowSafeInt &other) const
FORCEINLINE bool operator> (const OverflowSafeInt &other) const
FORCEINLINE bool operator>= (const OverflowSafeInt &other) const
FORCEINLINE bool operator< (const OverflowSafeInt &other) const
FORCEINLINE bool operator<= (const OverflowSafeInt &other) const
FORCEINLINE bool operator== (const int other) const
FORCEINLINE bool operator!= (const int other) const
FORCEINLINE bool operator> (const int other) const
FORCEINLINE bool operator>= (const int other) const
FORCEINLINE bool operator< (const int other) const
FORCEINLINE bool operator<= (const int other) const
FORCEINLINE operator int64 () const

Private Attributes

m_value
 The non-overflow safe backend to store the value in.

Detailed Description

template<class T, T T_MAX, T T_MIN>
class OverflowSafeInt< T, T_MAX, T_MIN >

Overflow safe template for integers, i.e.

integers that will never overflow you multiply the maximum value with 2, or add 2, or substract somethng from the minimum value, etc.

Parameters:
T the type these integers are stored with.
T_MAX the maximum value for the integers.
T_MIN the minimum value for the integers.

Definition at line 25 of file overflowsafe_type.hpp.


Member Function Documentation

template<class T, T T_MAX, T T_MIN>
FORCEINLINE OverflowSafeInt& OverflowSafeInt< T, T_MAX, T_MIN >::operator*= ( const int  factor  )  [inline]

Safe implementation of multiplication.

Parameters:
factor the factor to multiply this with.
Note:
when the multiplication would yield more than T_MAX (or less than T_MIN), it will be T_MAX (respectively T_MIN).

Definition at line 77 of file overflowsafe_type.hpp.

template<class T, T T_MAX, T T_MIN>
FORCEINLINE OverflowSafeInt& OverflowSafeInt< T, T_MAX, T_MIN >::operator+= ( const OverflowSafeInt< T, T_MAX, T_MIN > &  other  )  [inline]

Safe implementation of addition.

Parameters:
other the amount to add
Note:
when the addition would yield more than T_MAX (or less than T_MIN), it will be T_MAX (respectively T_MIN).

Definition at line 46 of file overflowsafe_type.hpp.


Field Documentation

template<class T, T T_MAX, T T_MIN>
T OverflowSafeInt< T, T_MAX, T_MIN >::m_value [private]

The non-overflow safe backend to store the value in.

Definition at line 29 of file overflowsafe_type.hpp.

Referenced by OverflowSafeInt< int64, INT64_MAX, INT64_MIN >::operator*=(), and OverflowSafeInt< int64, INT64_MAX, INT64_MIN >::operator+=().


The documentation for this class was generated from the following file:

Generated on Sun Jun 5 04:21:18 2011 for OpenTTD by  doxygen 1.6.1