diff -r cf4d45ad2da9 -r 3b1563e95ea7 src/simulator/time.cc --- a/src/simulator/time.cc Fri Nov 03 09:17:13 2006 +0100 +++ b/src/simulator/time.cc Fri Nov 03 09:22:07 2006 +0100 @@ -24,177 +24,80 @@ namespace ns3 { Time::Time () - : m_ns (0) -{} -Time::Time (Time const &o) - : m_ns (o.m_ns) -{} -Time & -Time::operator = (Time const &o) -{ - m_ns = o.m_ns; - return *this; -} -Time::Time (int64_t ns) - : m_ns (ns) + : TimeUnit<1> () {} - - -bool -Time::IsNegative (void) const -{ - return m_ns <= 0; -} - -bool -Time::IsPositive (void) const -{ - return m_ns >= 0; -} - -bool -Time::IsStrictlyNegative (void) const -{ - return m_ns < 0; -} -bool -Time::IsStrictlyPositive (void) const -{ - return m_ns > 0; -} -bool -Time::IsZero (void) const -{ - return m_ns == 0; -} - -Time -Time::operator += (Time const &o) -{ - m_ns += o.m_ns; - return *this; -} - -Time -Time::operator -= (Time const &o) -{ - m_ns -= o.m_ns; - return *this; -} +Time::Time (TimeUnit<1> time) + : TimeUnit<1> (time) +{} double Time::ApproximateToSeconds (void) const { - double s = m_ns; - s /= 1000000000; - return s; + HighPrecision seconds = GetHighPrecision (); + seconds.Div (HighPrecision (1000000000, 0)); + return seconds.GetDouble (); } -int64_t +int32_t Time::ApproximateToMilliSeconds (void) const { - int64_t ms = m_ns; - ms /= 1000000; - return ms; + HighPrecision ms = GetHighPrecision (); + ms.Div (HighPrecision (1000000, 0)); + return (int32_t) ms.GetHigh (); } int64_t Time::ApproximateToMicroSeconds (void) const { - int64_t us = m_ns; - us /= 1000; - return us; + HighPrecision us = GetHighPrecision (); + us.Div (HighPrecision (1000, 0)); + return us.GetHigh (); } int64_t Time::ApproximateToNanoSeconds (void) const { - return m_ns; + return GetHighPrecision ().GetHigh (); } -/* To decrease the number of keystrokes - */ -static uint64_t -GetNs (Time const &time) -{ - return time.ApproximateToNanoSeconds (); -} - -Time Scale (Time const &time, double scale) -{ - return NanoSeconds ((int64_t) (GetNs (time) * scale)); -} -Time Abs (Time const &time) -{ - int64_t retval = GetNs (time); - retval = (retval<0)?(-retval):(retval); - return NanoSeconds (retval); -} -Time Max (Time const &ta, Time const &tb) -{ - int64_t a = GetNs (ta); - int64_t b = GetNs (tb); - int64_t retval = (a>b)?(a):(b); - return NanoSeconds (retval); -} -Time Min (Time const &ta, Time const &tb) -{ - int64_t a = GetNs (ta); - int64_t b = GetNs (tb); - int64_t retval = (a (Time const &lhs, Time const &rhs) -{ - return GetNs (lhs) > GetNs (rhs); -} -bool operator >= (Time const &lhs, Time const &rhs) -{ - return GetNs (lhs) >= GetNs (rhs); -} +Seconds::Seconds () + : TimeUnit<1> () +{} +Seconds::Seconds (double seconds) + : TimeUnit<1> (HighPrecision (seconds * 1000000000.0)) +{} +MilliSeconds::MilliSeconds () + : TimeUnit<1> () +{} +MilliSeconds::MilliSeconds (uint32_t ms) + : TimeUnit<1> (HighPrecision (ms * 1000000, 0)) +{} +MicroSeconds::MicroSeconds () + : TimeUnit<1> () +{} +MicroSeconds::MicroSeconds (uint32_t us) + : TimeUnit<1> (HighPrecision (us * 1000, 0)) +{} +NanoSeconds::NanoSeconds () + : TimeUnit<1> () +{} +NanoSeconds::NanoSeconds (uint32_t ns) + : TimeUnit<1> (HighPrecision (ns, 0)) +{} Now::Now () : Time (Simulator::Now ()) {} -Seconds::Seconds (double s) - : Time ((int64_t)(s * 1000000000)) + +Scalar::Scalar () + : TimeUnit<0> () {} -MilliSeconds::MilliSeconds (int32_t ms) - : Time ((int64_t)(ms * 1000000)) +Scalar::Scalar (TimeUnit<0> scalar) + : TimeUnit<0> (scalar) {} -MicroSeconds::MicroSeconds (int32_t us) - : Time ((int64_t)(us * 1000)) + +Scalar::Scalar (double scalar) + : TimeUnit<0> (HighPrecision (scalar)) {} -NanoSeconds::NanoSeconds (int64_t ns) - : Time (ns) -{} - + +}; // namespace ns3 - -}; // namespace ns3