...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::date_time::wrapping_int — A wrapping integer used to support time durations (WARNING: only instantiate with a signed type).
template<typename int_type_, int_type_ wrap_val> class wrapping_int { public: // types typedef int_type_ int_type; // construct/copy/destruct wrapping_int(int_type); // public static functions static int_type wrap_value() ; // public member functions int_type as_int() const; operator int_type() const; int_type add(int_type) ; int_type subtract(int_type) ; // private member functions int_type calculate_wrap(int_type) ; };
In composite date and time types this type is used to wrap at the day boundary. Ex: A wrapping_int<short, 10> will roll over after nine, and roll under below zero. This gives a range of [0,9]
NOTE: it is strongly recommended that wrapping_int2 be used instead of wrapping_int as wrapping_int is to be depricated at some point soon.
Also Note that warnings will occur if instantiated with an unsigned type. Only a signed type should be used!
wrapping_int
public member functionsint_type as_int() const;
operator int_type() const;
int_type add(int_type v) ;
The sign of the returned value will indicate which direction the wraps went. Ex: add a negative number and wrapping under could occur, this would be indicated by a negative return value. If wrapping over took place, a positive value would be returned
int_type subtract(int_type v) ;
The sign of the returned value will indicate which direction the wraps went (positive indicates wrap under, negative indicates wrap over). Ex: subtract a negative number and wrapping over could occur, this would be indicated by a negative return value. If wrapping under took place, a positive value would be returned.