libzypp  17.25.0
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 
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 
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  {
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  {
78  _fnc(p);
79  }
80  }
81 
85  void start()
86  {
87  int p = 0;
88  if (_fnc && ( p != _previous_progress ))
89  {
91  _fnc(p);
92  }
93  }
94 
95  private:
96  boost::function<void (long int)> _fnc;
98  long int _total_steps;
99  };
100 
101 } // namespace parser
102 } // namespace zypp
104 #endif // ZYPP_ParserProgress_H
zypp::parser::ParserProgress::_total_steps
long int _total_steps
Definition: ParserProgress.h:98
zypp::parser::ParserProgress::_fnc
boost::function< void(long int)> _fnc
Definition: ParserProgress.h:96
zypp::parser::ParserProgress
Definition: ParserProgress.h:22
zypp::parser::ParserProgress::_previous_progress
long int _previous_progress
Definition: ParserProgress.h:97
zypp::parser::ParserProgress::Ptr
boost::shared_ptr< ParserProgress > Ptr
Definition: ParserProgress.h:25
zypp::parser::ParserProgress::start
void start()
report progress started
Definition: ParserProgress.h:85
zypp
Easy-to use interface to the ZYPP dependency resolver.
Definition: CodePitfalls.doc:1
zypp::parser::ParserProgress::~ParserProgress
~ParserProgress()
Definition: ParserProgress.h:39
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::parser::ParserProgress::setTotalSteps
void setTotalSteps(long int total_steps)
Definition: ParserProgress.h:64
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