OpenWalnut
1.3.1
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
src
core
common
WProgress.cpp
1
//---------------------------------------------------------------------------
2
//
3
// Project: OpenWalnut ( http://www.openwalnut.org )
4
//
5
// Copyright 2009 OpenWalnut Community, BSV@Uni-Leipzig and CNCF@MPI-CBS
6
// For more information see http://www.openwalnut.org/copying
7
//
8
// This file is part of OpenWalnut.
9
//
10
// OpenWalnut is free software: you can redistribute it and/or modify
11
// it under the terms of the GNU Lesser General Public License as published by
12
// the Free Software Foundation, either version 3 of the License, or
13
// (at your option) any later version.
14
//
15
// OpenWalnut is distributed in the hope that it will be useful,
16
// but WITHOUT ANY WARRANTY; without even the implied warranty of
17
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
// GNU Lesser General Public License for more details.
19
//
20
// You should have received a copy of the GNU Lesser General Public License
21
// along with OpenWalnut. If not, see <http://www.gnu.org/licenses/>.
22
//
23
//---------------------------------------------------------------------------
24
25
#include <algorithm>
26
#include <cmath>
27
#include <string>
28
29
#include "../common/WCondition.h"
30
31
#include "WProgress.h"
32
33
WProgress::WProgress
( std::string name,
size_t
count )
34
: m_name( name ),
35
m_max( count - 1 ),
36
m_count( 0 ),
37
m_pending( true ),
38
m_determined( true )
39
{
40
if
( count == 0 )
41
{
42
m_max
= 0;
43
m_determined
=
false
;
44
}
45
}
46
47
WProgress::~WProgress
()
48
{
49
// clean up
50
}
51
52
void
WProgress::update
()
53
{
54
// This updates the internal state. But as this class updates its state directly -> do nothing here
55
}
56
57
void
WProgress::finish
()
58
{
59
m_pending
=
false
;
60
m_count
=
m_max
;
61
}
62
63
WProgress
&
WProgress::operator++
()
64
{
65
return
*
this
+ 1;
66
}
67
68
float
WProgress::getProgress
()
69
{
70
return
isDetermined
() ? 100.0 * (
static_cast<
float
>
(
m_count
) / static_cast< float >(
m_max
) ) : 0.0;
71
}
72
73
bool
WProgress::isPending
()
74
{
75
return
m_pending
;
76
}
77
78
std::string
WProgress::getName
()
const
79
{
80
return
m_name
;
81
}
82
83
bool
WProgress::isDetermined
()
84
{
85
return
m_determined
;
86
}
87
88
WProgress
&
WProgress::operator+
(
size_t
steps )
89
{
90
if
(
isDetermined
() )
91
{
92
m_count
= std::min(
m_max
,
m_count
+ steps );
93
}
94
95
return
*
this
;
96
}
97
98
void
WProgress::increment
(
size_t
steps )
99
{
100
operator+
( steps );
101
}
Generated by
1.8.4