24 #include "attribute.h"
25 #include "attribute-helper.h"
166 inline Time &operator = (
const Time &o)
174 inline Time(
const Time &o)
177 explicit inline Time (
double v)
178 : m_data (lround (v))
180 explicit inline Time (
int v)
183 explicit inline Time (
long int v)
186 explicit inline Time (
long long int v)
189 explicit inline Time (
unsigned int v)
192 explicit inline Time (
unsigned long int v)
195 explicit inline Time (
unsigned long long int v)
215 explicit Time (
const std::string & s);
253 inline int Compare (
const Time &o)
const
255 return (m_data < o.m_data) ? -1 : (m_data == o.m_data) ? 0 : 1;
315 inline double GetDouble (
void)
const
319 inline int64_t GetInteger (
void)
const
349 struct Information *info = PeekInformation (timeUnit);
352 value *= info->factor;
356 value /= info->factor;
369 struct Information *info = PeekInformation (timeUnit);
390 return From (int64x64_t (value), timeUnit);
401 return To (timeUnit).GetDouble ();
403 static inline Time From (
const int64x64_t &from,
enum Unit timeUnit)
405 struct Information *info = PeekInformation (timeUnit);
408 int64x64_t retval = from;
411 retval *= info->timeFrom;
415 retval.MulByInvert (info->timeFrom);
417 return Time (retval);
419 inline int64x64_t To (
enum Unit timeUnit)
const
421 struct Information *info = PeekInformation (timeUnit);
422 int64x64_t retval = int64x64_t (m_data);
425 retval *= info->timeTo;
429 retval.MulByInvert (info->timeTo);
433 inline operator int64x64_t ()
const
435 return int64x64_t (m_data);
437 explicit inline Time (
const int64x64_t &value)
438 : m_data (value.GetHigh ())
440 inline static Time From (
const int64x64_t &value)
460 static inline struct Resolution *PeekResolution (
void)
465 static inline struct Information *PeekInformation (
enum Unit timeUnit)
467 return &(PeekResolution ()->info[timeUnit]);
470 static struct Resolution GetNsResolution (void);
473 friend bool operator == (
const Time &lhs,
const Time &rhs);
474 friend bool operator != (
const Time &lhs,
const Time &rhs);
475 friend bool operator <= (
const Time &lhs,
const Time &rhs);
476 friend bool operator >= (
const Time &lhs,
const Time &rhs);
477 friend bool operator < (
const Time &lhs,
const Time &rhs);
478 friend bool operator > (
const Time &lhs,
const Time &rhs);
479 friend Time operator + (
const Time &lhs,
const Time &rhs);
480 friend Time operator - (
const Time &lhs,
const Time &rhs);
481 friend Time &operator += (Time &lhs,
const Time &rhs);
482 friend Time &operator -= (Time &lhs,
const Time &rhs);
483 friend Time Abs (
const Time &time);
484 friend Time Max (
const Time &ta,
const Time &tb);
485 friend Time Min (
const Time &ta,
const Time &tb);
491 operator == (
const Time &lhs,
const Time &rhs)
493 return lhs.m_data == rhs.m_data;
496 operator != (
const Time &lhs,
const Time &rhs)
498 return lhs.m_data != rhs.m_data;
501 operator <= (
const Time &lhs,
const Time &rhs)
503 return lhs.m_data <= rhs.m_data;
506 operator >= (
const Time &lhs,
const Time &rhs)
508 return lhs.m_data >= rhs.m_data;
511 operator < (
const Time &lhs,
const Time &rhs)
513 return lhs.m_data < rhs.m_data;
516 operator > (
const Time &lhs,
const Time &rhs)
518 return lhs.m_data > rhs.m_data;
520 inline Time operator + (
const Time &lhs,
const Time &rhs)
522 return Time (lhs.m_data + rhs.m_data);
524 inline Time operator - (
const Time &lhs,
const Time &rhs)
526 return Time (lhs.m_data - rhs.m_data);
528 inline Time &operator += (Time &lhs,
const Time &rhs)
530 lhs.m_data += rhs.m_data;
533 inline Time &operator -= (Time &lhs,
const Time &rhs)
535 lhs.m_data -= rhs.m_data;
545 inline Time Abs (
const Time &time)
547 return Time ((time.m_data < 0) ? -time.m_data : time.m_data);
556 inline Time Max (
const Time &ta,
const Time &tb)
558 return Time ((ta.m_data < tb.m_data) ? tb : ta);
567 inline Time Min (
const Time &ta,
const Time &tb)
569 return Time ((ta.m_data > tb.m_data) ? tb : ta);
573 std::ostream&
operator<< (std::ostream& os,
const Time & time);
574 std::istream&
operator>> (std::istream& is, Time & time);
663 inline Time
Seconds (int64x64_t seconds)
665 return Time::From (seconds, Time::S);
669 return Time::From (ms, Time::MS);
673 return Time::From (us, Time::US);
677 return Time::From (ns, Time::NS);
681 return Time::From (ps, Time::PS);
685 return Time::From (fs, Time::FS);
689 inline Time TimeStep (uint64_t ts)
Time NanoSeconds(uint64_t ns)
create ns3::Time instances in units of nanoseconds.
std::istream & operator>>(std::istream &is, Angles &a)
bool IsPositive(void) const
double ToDouble(enum Unit timeUnit) const
int64_t ToInteger(enum Unit timeUnit) const
int64_t GetFemtoSeconds(void) const
Time PicoSeconds(uint64_t ps)
create ns3::Time instances in units of picoseconds.
static Time FromDouble(double value, enum Unit timeUnit)
double GetSeconds(void) const
static enum Unit GetResolution(void)
int64_t GetMicroSeconds(void) const
bool IsStrictlyPositive(void) const
std::ostream & operator<<(std::ostream &os, const Angles &a)
bool IsNegative(void) const
#define ATTRIBUTE_CHECKER_DEFINE(type)
#define ATTRIBUTE_VALUE_DEFINE(type)
int64_t GetTimeStep(void) const
Time FemtoSeconds(uint64_t fs)
create ns3::Time instances in units of femtoseconds.
int64_t GetNanoSeconds(void) const
static Time FromInteger(uint64_t value, enum Unit timeUnit)
int64_t GetPicoSeconds(void) const
Time Seconds(double seconds)
create ns3::Time instances in units of seconds.
#define ATTRIBUTE_ACCESSOR_DEFINE(type)
bool IsStrictlyNegative(void) const
static void SetResolution(enum Unit resolution)
Time MilliSeconds(uint64_t ms)
create ns3::Time instances in units of milliseconds.
int64_t GetMilliSeconds(void) const
Time MicroSeconds(uint64_t us)
create ns3::Time instances in units of microseconds.