libzypp: zypp/parser/ParserProgress.h Source File

libzypp 17.25.10

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
Definition: ParserProgress.h:23
zypp::parser::ParserProgress::_fnc
boost::function< void(long int)> _fnc
Definition: ParserProgress.h:96
zypp::parser::ParserProgress::Ptr
boost::shared_ptr< ParserProgress > Ptr
Definition: ParserProgress.h:25
zypp::parser::ParserProgress::_total_steps
long int _total_steps
Definition: ParserProgress.h:98
zypp::parser::ParserProgress::~ParserProgress
~ParserProgress()
Definition: ParserProgress.h:39
zypp::parser::ParserProgress::ParserProgress
ParserProgress(boost::function< void(long int)> fnc, long int total_steps=100)
initializes a progress objetc, with a callback functor if you are not reporting percentage,...
Definition: ParserProgress.h:33
zypp::parser::ParserProgress::_previous_progress
long int _previous_progress
Definition: ParserProgress.h:97
zypp::parser::ParserProgress::setTotalSteps
void setTotalSteps(long int total_steps)
Definition: ParserProgress.h:64
zypp::parser::ParserProgress::start
void start()
report progress started
Definition: ParserProgress.h:85
zypp::parser::ParserProgress::progress
void progress(long int p)
report progress, which in most cases executes the functor associated with this progress object to upd...
Definition: ParserProgress.h:48
zypp::parser::ParserProgress::finish
void finish()
report progress finished
Definition: ParserProgress.h:72
zypp
Easy-to use interface to the ZYPP dependency resolver.
Definition: CodePitfalls.doc:2