libzypp
17.14.0
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
DefaultIntegral.h
Go to the documentation of this file.
1
/*---------------------------------------------------------------------\
2
| ____ _ __ __ ___ |
3
| |__ / \ / / . \ . \ |
4
| / / \ V /| _/ _/ |
5
| / /__ | | | | | | |
6
| /_____||_| |_| |_| |
7
| |
8
\---------------------------------------------------------------------*/
12
#ifndef ZYPP_BASE_DEFAULTINTEGRAL_H
13
#define ZYPP_BASE_DEFAULTINTEGRAL_H
14
15
#include <iosfwd>
16
#include <boost/static_assert.hpp>
17
#include <boost/type_traits/is_integral.hpp>
18
20
namespace
zypp
21
{
22
23
25
//
26
// CLASS NAME : DefaultIntegral<Tp,TInitial>
27
//
40
template
<
class
Tp, Tp TInitial>
41
class
DefaultIntegral
42
{
43
public
:
44
typedef
Tp
value_type
;
45
46
public
:
47
DefaultIntegral
( Tp val_r = TInitial )
48
:
_val
( val_r )
49
{ BOOST_STATIC_ASSERT(boost::is_integral<Tp>::value); }
50
53
Tp &
get
() {
return
_val
; }
54
Tp
get
()
const
{
return
_val
; }
55
56
operator
Tp &() {
return
get
(); }
57
operator
Tp ()
const
{
return
get
(); }
59
61
constexpr Tp
initial
()
const
{
return
TInitial; }
62
64
DefaultIntegral
&
reset
() {
_val
= TInitial;
return
*
this
; }
65
70
DefaultIntegral
&
operator=
( Tp rhs ) {
_val
= rhs;
return
*
this
; }
71
DefaultIntegral
&
operator+=
( Tp rhs ) {
_val
+= rhs;
return
*
this
; }
72
DefaultIntegral
&
operator-=
( Tp rhs ) {
_val
-= rhs;
return
*
this
; }
73
DefaultIntegral
&
operator*=
( Tp rhs ) {
_val
*= rhs;
return
*
this
; }
74
DefaultIntegral
&
operator/=
( Tp rhs ) {
_val
/= rhs;
return
*
this
; }
75
76
DefaultIntegral
&
operator++
(
/*prefix*/
) { ++
_val
;
return
*
this
; }
77
DefaultIntegral
&
operator--
(
/*prefix*/
) { --
_val
;
return
*
this
; }
78
79
DefaultIntegral
operator++
(
int
/*postfix*/
) {
return
_val
++; }
80
DefaultIntegral
operator--
(
int
/*postfix*/
) {
return
_val
--; }
82
83
private
:
84
Tp
_val
;
85
};
86
88
typedef
DefaultIntegral<bool,true>
TrueBool
;
89
91
typedef
DefaultIntegral<bool,false>
FalseBool
;
92
94
template
<
typename
TIntegral>
95
using
ZeroInit
=
DefaultIntegral<TIntegral,TIntegral(0)>
;
96
97
template
<
class
Tp, Tp TInitial>
98
std::string
asString
(
const
DefaultIntegral<Tp,TInitial>
& obj )
99
{
return
asString
( obj.
get
() ); }
100
102
}
// namespace zypp
104
#endif // ZYPP_BASE_DEFAULTINTEGRAL_H
zypp
base
DefaultIntegral.h
Generated by
1.8.2