libzypp
11.13.5
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
ParserProgress.h
Go to the documentation of this file.
1
/*---------------------------------------------------------------------\
2
| ____ _ __ __ ___ |
3
| |__ / \ / / . \ . \ |
4
| / / \ V /| _/ _/ |
5
| / /__ | | | | | | |
6
| /_____||_| |_| |_| |
7
| |
8
\---------------------------------------------------------------------*/
9
10
#ifndef ZYPP_ParserProgress_H
11
#define ZYPP_ParserProgress_H
12
13
#include "boost/shared_ptr.hpp"
14
#include "boost/function.hpp"
15
17
namespace
zypp
18
{
19
namespace
parser
20
{
21
22
class
ParserProgress
23
{
24
public
:
25
typedef
boost::shared_ptr<ParserProgress>
Ptr
;
26
33
ParserProgress
( boost::function<
void
(
long
int
)> fnc,
long
int
total_steps = 100 )
34
:
_fnc
(fnc),
_previous_progress
(0),
_total_steps
(total_steps)
35
{
36
37
};
38
39
~ParserProgress
()
40
{};
41
48
void
progress
(
long
int
p)
49
{
50
//std::cout << "real " << p << std::endl;
51
if
(
_total_steps
!= 100 )
52
{
53
long
int
current_done = p;
54
p = (
long
int)(((
double
) current_done/(
double
)
_total_steps
)*100);
55
}
56
57
if
(
_fnc
&& ( p !=
_previous_progress
))
58
{
59
_previous_progress
= p;
60
_fnc
(p);
61
}
62
}
63
64
void
setTotalSteps
(
long
int
total_steps )
65
{
66
_total_steps
= total_steps;
67
}
68
72
void
finish
()
73
{
74
int
p = 100;
75
if
(
_fnc
&& ( p !=
_previous_progress
))
76
{
77
_previous_progress
= p;
78
_fnc
(p);
79
}
80
}
81
85
void
start
()
86
{
87
int
p = 0;
88
if
(
_fnc
&& ( p !=
_previous_progress
))
89
{
90
_previous_progress
= p;
91
_fnc
(p);
92
}
93
}
94
95
private
:
96
boost::function<void (long int)>
_fnc
;
97
long
int
_previous_progress
;
98
long
int
_total_steps
;
99
};
100
101
}
// namespace parser
102
}
// namespace zypp
104
#endif // ZYPP_ParserProgress_H
zypp
parser
ParserProgress.h
Generated by
1.8.1