DefaultIntegral.h

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------\
00002 |                          ____ _   __ __ ___                          |
00003 |                         |__  / \ / / . \ . \                         |
00004 |                           / / \ V /|  _/  _/                         |
00005 |                          / /__ | | | | | |                           |
00006 |                         /_____||_| |_| |_|                           |
00007 |                                                                      |
00008 \---------------------------------------------------------------------*/
00012 #ifndef ZYPP_BASE_DEFAULTINTEGRAL_H
00013 #define ZYPP_BASE_DEFAULTINTEGRAL_H
00014 
00015 #include <iosfwd>
00016 #include <boost/static_assert.hpp>
00017 #include <boost/type_traits/is_integral.hpp>
00018 
00020 namespace zypp
00021 { 
00022 
00023 
00025   //
00026   //  CLASS NAME : DefaultIntegral<_Tp,_Initial>
00027   //
00039   template<class _Tp, _Tp _Initial>
00040     class DefaultIntegral
00041     {
00042     public:
00043       DefaultIntegral( _Tp val_r = _Initial )
00044       : _val( val_r )
00045       { BOOST_STATIC_ASSERT(boost::is_integral<_Tp>::value); }
00046 
00049       _Tp & get()       { return _val; }
00050       _Tp   get() const { return _val; }
00051 
00052       operator _Tp &()       { return get(); }
00053       operator _Tp  () const { return get(); }
00055 
00060       DefaultIntegral & operator=( _Tp rhs )  {  _val = rhs; return *this; }
00061       DefaultIntegral & operator+=( _Tp rhs ) { _val += rhs; return *this; }
00062       DefaultIntegral & operator-=( _Tp rhs ) { _val -= rhs; return *this; }
00063       DefaultIntegral & operator*=( _Tp rhs ) { _val *= rhs; return *this; }
00064       DefaultIntegral & operator/=( _Tp rhs ) { _val /= rhs; return *this; }
00065 
00066       DefaultIntegral & operator++(/*prefix*/) { ++_val; return *this; }
00067       DefaultIntegral & operator--(/*prefix*/) { ++_val; return *this; }
00068 
00069       DefaultIntegral operator++(int/*postfix*/) { return _val++; }
00070       DefaultIntegral operator--(int/*postfix*/) { return _val--; }
00072 
00073     private:
00074       _Tp _val;
00075     };
00076 
00078 } // namespace zypp
00080 #endif // ZYPP_BASE_DEFAULTINTEGRAL_H

Generated on Tue Nov 28 16:49:28 2006 for zypp by  doxygen 1.5.0