00001 #ifndef __STDAIR_BAS_PROGRESSSTATUS_HPP 00002 #define __STDAIR_BAS_PROGRESSSTATUS_HPP 00003 00004 // ////////////////////////////////////////////////////////////////////// 00005 // Import section 00006 // ////////////////////////////////////////////////////////////////////// 00007 // STL 00008 #include <string> 00009 // Boost Progress 00010 #include <boost/progress.hpp> 00011 // StdAir 00012 #include <stdair/stdair_basic_types.hpp> 00013 #include <stdair/basic/StructAbstract.hpp> 00014 00015 namespace stdair { 00016 00025 struct ProgressStatus : public StructAbstract { 00026 public: 00027 // //////////////// Getters ///////////////// 00029 const Count_T& count() const { 00030 return _currentNb; 00031 } 00032 00034 const Count_T& getCurrentNb() const { 00035 return _currentNb; 00036 } 00037 00039 const Count_T& getExpectedNb() const { 00040 return _expectedNb; 00041 } 00042 00044 const Count_T& getActualNb() const { 00045 return _actualNb; 00046 } 00047 00049 const ProgressPercentage_T progress() const { 00050 if (_actualNb == 0) { 00051 return 100.0; 00052 } 00053 return (static_cast<Percentage_T> (_currentNb) 00054 / static_cast<Percentage_T> (_actualNb)); 00055 } 00056 00057 00058 // //////////////// Setters ///////////////// 00060 void setCurrentNb (const Count_T& iCurrentNb) { 00061 _currentNb = iCurrentNb; 00062 } 00063 00065 void setExpectedNb (const Count_T& iExpectedNb) { 00066 _expectedNb = iExpectedNb; 00067 } 00068 00070 void setActualNb (const Count_T& iActualNb) { 00071 _actualNb = iActualNb; 00072 } 00073 00075 void reset(); 00076 00078 Count_T operator+= (Count_T iIncrement) { 00079 _currentNb += iIncrement; 00080 return _currentNb; 00081 } 00082 00084 Count_T operator++() { 00085 ++_currentNb; 00086 return _currentNb; 00087 } 00088 00089 00090 public: 00091 // //////////////// Display Support Methods ///////////////// 00093 const std::string describe() const; 00094 00095 00096 public: 00104 ProgressStatus (const Count_T& iCurrentNb, const Count_T& iExpectedNb, 00105 const Count_T& iActualNb); 00106 00115 ProgressStatus (const Count_T& iExpectedNb, const Count_T& iActualNb); 00116 00125 ProgressStatus (const Count_T& iActualNb); 00126 00132 ProgressStatus(); 00133 00137 ProgressStatus (const ProgressStatus&); 00138 00139 private: 00140 // //////////////// Attributes ///////////////// 00142 Count_T _currentNb; 00143 00145 Count_T _expectedNb; 00146 00148 Count_T _actualNb; 00149 }; 00150 00151 } 00152 #endif // __STDAIR_BAS_PROGRESSSTATUS_HPP