StdAir Logo  0.45.0
C++ Standard Airline IT Object Library
ProgressStatus.hpp
Go to the documentation of this file.
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