sim_time.hpp

00001 
00002 #ifndef SIM_TIME_H
00003 #define SIM_TIME_H
00004 
00005 #include <iostream>
00006 using namespace std;
00007 
00008 #include <boost/shared_ptr.hpp>
00009 
00013 class SimTime {
00014 public:
00015 
00020    SimTime();
00026    SimTime(double simTime);
00027 
00032    inline void setTimeInMicroSeconds(double timeInMicroSeconds);
00033 
00038    inline void setTimeInMilliSeconds(double timeInMilliSeconds);
00039 
00044    inline void setTimeInSeconds(double timeInSeconds);
00045 
00051    inline void setTimeInMinutes(double timeInMinutes);
00052 
00058    inline double getTimeInMicroSeconds() const;
00059 
00065    inline double getTimeInMilliSeconds() const;
00066 
00071    inline double getTimeInSeconds() const;
00072 
00077    inline double getTimeInMinutes() const;
00078 
00083    inline void setTime(double timeInSeconds);
00084 
00089    inline double getTime() const;
00090 
00096    inline bool isValid() const;
00097 
00099 
00100    inline SimTime& operator+= (const SimTime& rhs);
00101    inline SimTime& operator-= (const SimTime& rhs);
00102    inline bool operator< (const SimTime& rhs) const;
00103    inline bool operator<= (const SimTime& rhs) const;
00104    inline bool operator> (const SimTime& rhs) const;
00105    inline bool operator>= (const SimTime& rhs) const;
00107 
00108 private:
00109    double m_time;
00110 };
00111 typedef boost::shared_ptr<SimTime> SimTimePtr;
00112 
00114 // Inline Functions
00116 
00117 inline void SimTime::setTimeInMicroSeconds(double timeInMicroSeconds)
00118 {
00119    assert(timeInMicroSeconds >= 0.0);
00120    m_time = (timeInMicroSeconds / 1000000.0);
00121 }
00122 
00123 inline void SimTime::setTimeInMilliSeconds(double timeInMilliSeconds)
00124 {
00125    assert(timeInMilliSeconds >= 0.0);
00126    m_time = (timeInMilliSeconds / 1000.0);
00127 }
00128 
00129 inline void SimTime::setTimeInSeconds(double timeInSeconds)
00130 {
00131    assert(timeInSeconds >= 0.0);
00132    m_time = timeInSeconds;
00133 }
00134 
00135 inline void SimTime::setTimeInMinutes(double timeInMinutes)
00136 {
00137    assert(timeInMinutes >= 0.0);
00138    m_time = (60.0 * timeInMinutes);
00139 }
00140 
00141 inline double SimTime::getTimeInMicroSeconds() const
00142 {
00143    return (1000000.0 * m_time);
00144 }
00145 
00146 inline double SimTime::getTimeInMilliSeconds() const
00147 {
00148    return (1000.0 * m_time);
00149 }
00150 
00151 inline double SimTime::getTimeInSeconds() const
00152 {
00153    return m_time;
00154 }
00155 
00156 inline double SimTime::getTimeInMinutes() const
00157 {
00158    return (m_time / 60.0);
00159 }
00160 
00161 inline void SimTime::setTime(double timeInSeconds) 
00162 {
00163    setTimeInSeconds(timeInSeconds);
00164 }
00165 
00166 inline double SimTime::getTime() const
00167 {
00168    return getTimeInSeconds();
00169 }
00170 
00171 inline bool SimTime::isValid() const 
00172 {
00173    // Right now, our only requirement is that
00174    // the time is not negative.
00175    return (m_time >= 0.0);
00176 }
00177 
00179 // Overloaded Operators
00181 
00182 inline SimTime& SimTime::operator+= (const SimTime& rhs) 
00183 {
00184    m_time += rhs.m_time;
00185    return *this;
00186 }
00187 
00188 inline SimTime& SimTime::operator-= (const SimTime& rhs) 
00189 {
00190    m_time -= rhs.m_time;
00191    return *this;
00192 }
00193 
00194 inline bool SimTime::operator< (const SimTime& rhs) const 
00195 {
00196    return m_time < rhs.m_time;
00197 }
00198 
00199 inline bool SimTime::operator<= (const SimTime& rhs) const 
00200 {
00201    return m_time <= rhs.m_time;
00202 }
00203 
00204 inline bool SimTime::operator> (const SimTime& rhs) const 
00205 {
00206    return m_time > rhs.m_time;
00207 }
00208 
00209 inline bool SimTime::operator>= (const SimTime& rhs) const 
00210 {
00211    return m_time >= rhs.m_time;
00212 }
00213 
00214 // Note that this can't be included in the class definition, so we
00215 // define it here so that files that include sim_time.hpp can 
00216 // use it.
00217 inline SimTime operator+ (const SimTime& lhs, const SimTime& rhs)
00218 {
00219    SimTime returnVal = lhs;
00220    return returnVal += rhs;
00221 }
00222 
00223 inline SimTime operator- (const SimTime& lhs, const SimTime& rhs)
00224 {
00225    SimTime returnVal = lhs;
00226    return returnVal -= rhs;
00227 }
00228 
00229 inline ostream& operator<< (ostream& s, const SimTime& st)
00230 {
00231    return s<< st.getTimeInSeconds();
00232 }
00233 
00234 #endif // SIM_TIME_H
00235 

Generated on Tue Dec 12 17:04:39 2006 for rfidsim by  doxygen 1.4.7