author | Raj Bhattacharjea <raj.b@gatech.edu> |
Thu, 26 Apr 2007 11:36:05 -0400 | |
changeset 439 | fed13fb45eef |
parent 372 | c242f488ef0b |
child 675 | a5878de7d71c |
permissions | -rw-r--r-- |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
144
diff
changeset
|
1 |
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ |
25
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
2 |
/* |
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
3 |
* Copyright (c) 2005,2006 INRIA |
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
4 |
* All rights reserved. |
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
5 |
* |
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
6 |
* This program is free software; you can redistribute it and/or modify |
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
7 |
* it under the terms of the GNU General Public License version 2 as |
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
8 |
* published by the Free Software Foundation; |
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
9 |
* |
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
10 |
* This program is distributed in the hope that it will be useful, |
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
11 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
12 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
13 |
* GNU General Public License for more details. |
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
14 |
* |
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
15 |
* You should have received a copy of the GNU General Public License |
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
16 |
* along with this program; if not, write to the Free Software |
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
17 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
18 |
* |
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
19 |
* Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr> |
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
20 |
*/ |
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
21 |
#ifndef TIME_H |
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
22 |
#define TIME_H |
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
23 |
|
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
24 |
#include <stdint.h> |
286
57e6a2006962
convert use of <cassert> to "ns3/assert.h"
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
215
diff
changeset
|
25 |
#include "ns3/assert.h" |
209
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
26 |
#include <ostream> |
156
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
27 |
#include "high-precision.h" |
25
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
28 |
|
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
29 |
namespace ns3 { |
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
30 |
|
159
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
31 |
/** |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
32 |
* \brief keep track of time unit. |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
33 |
* |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
34 |
* This template class is used to keep track of the value |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
35 |
* of a specific time unit: the type TimeUnit<1> is used to |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
36 |
* keep track of seconds, the type TimeUnit<2> is used to keep |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
37 |
* track of seconds squared, the type TimeUnit<-1> is used to |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
38 |
* keep track of 1/seconds, etc. |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
39 |
* |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
40 |
* This base class defines all the functionality shared by all |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
41 |
* these time unit objects: it defines all the classic arithmetic |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
42 |
* operators +, -, *, /, and all the classic comparison operators: |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
43 |
* ==, !=, <, >, <=, >=. It is thus easy to add, substract, or |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
44 |
* multiply multiple TimeUnit objects. The return type of any such |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
45 |
* arithmetic expression is always a TimeUnit object. |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
46 |
* |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
47 |
* The ns3::Scalar, ns3::Time, ns3::TimeSquare, and ns3::TimeInvert classes |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
48 |
* are aliases for the TimeUnit<0>, TimeUnit<1>, TimeUnit<2> and TimeUnit<-1> |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
49 |
* types respectively. |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
50 |
* |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
51 |
* For example: |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
52 |
* \code |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
53 |
* Time<1> t1 = Seconds (10.0); |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
54 |
* Time<1> t2 = Seconds (10.0); |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
55 |
* Time<2> t3 = t1 * t2; |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
56 |
* Time<0> t4 = t1 / t2; |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
57 |
* Time<3> t5 = t3 * t1; |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
58 |
* Time<-2> t6 = t1 / t5; |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
59 |
* TimeSquare t7 = t3; |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
60 |
* Scalar s = t4; |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
61 |
* \endcode |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
62 |
* |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
63 |
* If you try to assign the result of an expression which does not |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
64 |
* match the type of the variable it is assigned to, you will get a |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
65 |
* compiler error. For example, the following will not compile: |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
66 |
* \code |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
67 |
* Time<1> = Seconds (10.0) * Seconds (1.5); |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
68 |
* \endcode |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
69 |
* |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
70 |
* You can also use the following non-member functions to manipulate |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
71 |
* any of these ns3::TimeUnit object: |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
72 |
* - \ref ns3-Time-Abs ns3::Abs |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
73 |
* - \ref ns3-Time-Max ns3::Max |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
74 |
* - \ref ns3-Time-Min ns3::Min |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
75 |
*/ |
156
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
76 |
template <int N> |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
77 |
class TimeUnit |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
78 |
{ |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
79 |
public: |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
80 |
TimeUnit (); |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
81 |
TimeUnit (TimeUnit const &o); |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
82 |
TimeUnit operator = (TimeUnit const &o); |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
83 |
TimeUnit (HighPrecision data); |
159
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
84 |
|
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
85 |
/** |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
86 |
* \return true if the time is zero, false otherwise. |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
87 |
*/ |
156
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
88 |
bool IsZero (void) const; |
159
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
89 |
/** |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
90 |
* \return true if the time is negative or zero, false otherwise. |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
91 |
*/ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
144
diff
changeset
|
92 |
bool IsNegative (void) const; |
159
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
93 |
/** |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
94 |
* \return true if the time is positive or zero, false otherwise. |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
95 |
*/ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
144
diff
changeset
|
96 |
bool IsPositive (void) const; |
159
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
97 |
/** |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
98 |
* \return true if the time is strictly negative, false otherwise. |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
99 |
*/ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
144
diff
changeset
|
100 |
bool IsStrictlyNegative (void) const; |
159
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
101 |
/** |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
102 |
* \return true if the time is strictly positive, false otherwise. |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
103 |
*/ |
150
663120712cd9
fix coding style
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
144
diff
changeset
|
104 |
bool IsStrictlyPositive (void) const; |
143
552ff26b4224
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
131
diff
changeset
|
105 |
|
170
9f68cb694f40
implement 128 bit arithmetic with cairo's internal types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
163
diff
changeset
|
106 |
/** |
9f68cb694f40
implement 128 bit arithmetic with cairo's internal types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
163
diff
changeset
|
107 |
* This is really an internal method exported for the needs of |
9f68cb694f40
implement 128 bit arithmetic with cairo's internal types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
163
diff
changeset
|
108 |
* the implementation. Please, Do not try to use this method, ever. |
9f68cb694f40
implement 128 bit arithmetic with cairo's internal types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
163
diff
changeset
|
109 |
* |
9f68cb694f40
implement 128 bit arithmetic with cairo's internal types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
163
diff
changeset
|
110 |
* \return the ns3::HighPrecision object which holds the value |
9f68cb694f40
implement 128 bit arithmetic with cairo's internal types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
163
diff
changeset
|
111 |
* stored in this Time<N> type. |
9f68cb694f40
implement 128 bit arithmetic with cairo's internal types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
163
diff
changeset
|
112 |
*/ |
215
462cdd13a69e
optimize Time::Get methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
212
diff
changeset
|
113 |
HighPrecision const &GetHighPrecision (void) const; |
209
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
114 |
HighPrecision *PeekHighPrecision (void); |
170
9f68cb694f40
implement 128 bit arithmetic with cairo's internal types
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
163
diff
changeset
|
115 |
|
156
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
116 |
private: |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
117 |
HighPrecision m_data; |
25
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
118 |
}; |
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
119 |
|
156
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
120 |
template <int N> |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
121 |
TimeUnit<N>::TimeUnit () |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
122 |
: m_data () |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
123 |
{} |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
124 |
template <int N> |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
125 |
TimeUnit<N>::TimeUnit (TimeUnit const &o) |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
126 |
: m_data (o.m_data) |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
127 |
{} |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
128 |
template <int N> |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
129 |
TimeUnit<N> |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
130 |
TimeUnit<N>::operator = (TimeUnit const &o) |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
131 |
{ |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
132 |
m_data = o.m_data; |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
133 |
return *this; |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
134 |
} |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
135 |
template <int N> |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
136 |
TimeUnit<N>::TimeUnit (HighPrecision data) |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
137 |
: m_data (data) |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
138 |
{} |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
139 |
|
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
140 |
template <int N> |
215
462cdd13a69e
optimize Time::Get methods
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
212
diff
changeset
|
141 |
HighPrecision const & |
156
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
142 |
TimeUnit<N>::GetHighPrecision (void) const |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
143 |
{ |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
144 |
return m_data; |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
145 |
} |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
146 |
template <int N> |
209
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
147 |
HighPrecision * |
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
148 |
TimeUnit<N>::PeekHighPrecision (void) |
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
149 |
{ |
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
150 |
return &m_data; |
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
151 |
} |
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
152 |
template <int N> |
156
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
153 |
bool |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
154 |
TimeUnit<N>::IsZero (void) const |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
155 |
{ |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
156 |
return m_data.Compare (HighPrecision::Zero ()) == 0; |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
157 |
} |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
158 |
template <int N> |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
159 |
bool |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
160 |
TimeUnit<N>::IsNegative (void) const |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
161 |
{ |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
162 |
return m_data.Compare (HighPrecision::Zero ()) <= 0; |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
163 |
} |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
164 |
template <int N> |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
165 |
bool |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
166 |
TimeUnit<N>::IsPositive (void) const |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
167 |
{ |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
168 |
return m_data.Compare (HighPrecision::Zero ()) >= 0; |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
169 |
} |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
170 |
template <int N> |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
171 |
bool |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
172 |
TimeUnit<N>::IsStrictlyNegative (void) const |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
173 |
{ |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
174 |
return m_data.Compare (HighPrecision::Zero ()) < 0; |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
175 |
} |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
176 |
template <int N> |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
177 |
bool |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
178 |
TimeUnit<N>::IsStrictlyPositive (void) const |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
179 |
{ |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
180 |
return m_data.Compare (HighPrecision::Zero ()) > 0; |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
181 |
} |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
182 |
|
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
183 |
template <int N> |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
184 |
bool |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
185 |
operator == (TimeUnit<N> const &lhs, TimeUnit<N> const &rhs) |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
186 |
{ |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
187 |
return lhs.GetHighPrecision ().Compare (rhs.GetHighPrecision ()) == 0; |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
188 |
} |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
189 |
template <int N> |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
190 |
bool |
209
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
191 |
operator != (TimeUnit<N> const &lhs, TimeUnit<N> const &rhs) |
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
192 |
{ |
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
193 |
return lhs.GetHighPrecision ().Compare (rhs.GetHighPrecision ()) != 0; |
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
194 |
} |
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
195 |
template <int N> |
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
196 |
bool |
156
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
197 |
operator <= (TimeUnit<N> const &lhs, TimeUnit<N> const &rhs) |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
198 |
{ |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
199 |
return lhs.GetHighPrecision ().Compare (rhs.GetHighPrecision ()) <= 0; |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
200 |
} |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
201 |
template <int N> |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
202 |
bool |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
203 |
operator >= (TimeUnit<N> const &lhs, TimeUnit<N> const &rhs) |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
204 |
{ |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
205 |
return lhs.GetHighPrecision ().Compare (rhs.GetHighPrecision ()) >= 0; |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
206 |
} |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
207 |
template <int N> |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
208 |
bool |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
209 |
operator < (TimeUnit<N> const &lhs, TimeUnit<N> const &rhs) |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
210 |
{ |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
211 |
return lhs.GetHighPrecision ().Compare (rhs.GetHighPrecision ()) < 0; |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
212 |
} |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
213 |
template <int N> |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
214 |
bool |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
215 |
operator > (TimeUnit<N> const &lhs, TimeUnit<N> const &rhs) |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
216 |
{ |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
217 |
return lhs.GetHighPrecision ().Compare (rhs.GetHighPrecision ()) > 0; |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
218 |
} |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
219 |
template <int N> |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
220 |
TimeUnit<N> operator + (TimeUnit<N> const &lhs, TimeUnit<N> const &rhs) |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
221 |
{ |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
222 |
HighPrecision retval = lhs.GetHighPrecision (); |
192
cdb44e98954c
fix warnings for optimized build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
170
diff
changeset
|
223 |
retval.Add (rhs.GetHighPrecision ()); |
156
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
224 |
return TimeUnit<N> (retval); |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
225 |
} |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
226 |
template <int N> |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
227 |
TimeUnit<N> operator - (TimeUnit<N> const &lhs, TimeUnit<N> const &rhs) |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
228 |
{ |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
229 |
HighPrecision retval = lhs.GetHighPrecision (); |
192
cdb44e98954c
fix warnings for optimized build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
170
diff
changeset
|
230 |
retval.Sub (rhs.GetHighPrecision ()); |
156
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
231 |
return TimeUnit<N> (retval); |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
232 |
} |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
233 |
template <int N1, int N2> |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
234 |
TimeUnit<N1+N2> operator * (TimeUnit<N1> const &lhs, TimeUnit<N2> const &rhs) |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
235 |
{ |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
236 |
HighPrecision retval = lhs.GetHighPrecision (); |
192
cdb44e98954c
fix warnings for optimized build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
170
diff
changeset
|
237 |
retval.Mul (rhs.GetHighPrecision ()); |
156
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
238 |
return TimeUnit<N1+N2> (retval); |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
239 |
} |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
240 |
template <int N1, int N2> |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
241 |
TimeUnit<N1-N2> operator / (TimeUnit<N1> const &lhs, TimeUnit<N2> const &rhs) |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
242 |
{ |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
243 |
HighPrecision retval = lhs.GetHighPrecision (); |
192
cdb44e98954c
fix warnings for optimized build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
170
diff
changeset
|
244 |
retval.Div (rhs.GetHighPrecision ()); |
156
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
245 |
return TimeUnit<N1-N2> (retval); |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
246 |
} |
209
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
247 |
template <int N> |
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
248 |
TimeUnit<N> &operator += (TimeUnit<N> &lhs, TimeUnit<N> const &rhs) { |
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
249 |
HighPrecision *lhsv = lhs.PeekHighPrecision (); |
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
250 |
lhsv->Add (rhs.GetHighPrecision ()); |
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
251 |
return lhs; |
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
252 |
} |
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
253 |
template <int N> |
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
254 |
TimeUnit<N> &operator -= (TimeUnit<N> &lhs, TimeUnit<N> const &rhs) { |
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
255 |
HighPrecision *lhsv = lhs.PeekHighPrecision (); |
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
256 |
lhsv->Sub (rhs.GetHighPrecision ()); |
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
257 |
return lhs; |
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
258 |
} |
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
259 |
|
156
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
260 |
|
159
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
261 |
/** |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
262 |
* \anchor ns3-Time-Abs |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
263 |
* \relates ns3::TimeUnit |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
264 |
* \param time the input value |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
265 |
* \returns the absolute value of the input value. |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
266 |
*/ |
156
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
267 |
template <int N> |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
268 |
TimeUnit<N> Abs (TimeUnit<N> const &time) |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
269 |
{ |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
270 |
return TimeUnit<N> (Abs (time.GetHighPrecision ())); |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
271 |
} |
159
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
272 |
/** |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
273 |
* \anchor ns3-Time-Max |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
274 |
* \relates ns3::TimeUnit |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
275 |
* \param ta the first value |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
276 |
* \param tb the seconds value |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
277 |
* \returns the max of the two input values. |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
278 |
*/ |
156
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
279 |
template <int N> |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
280 |
TimeUnit<N> Max (TimeUnit<N> const &ta, TimeUnit<N> const &tb) |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
281 |
{ |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
282 |
HighPrecision a = ta.GetHighPrecision (); |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
283 |
HighPrecision b = tb.GetHighPrecision (); |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
284 |
return TimeUnit<N> (Max (a, b)); |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
285 |
} |
159
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
286 |
/** |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
287 |
* \anchor ns3-Time-Min |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
288 |
* \relates ns3::TimeUnit |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
289 |
* \param ta the first value |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
290 |
* \param tb the seconds value |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
291 |
* \returns the min of the two input values. |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
292 |
*/ |
156
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
293 |
template <int N> |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
294 |
TimeUnit<N> Min (TimeUnit<N> const &ta, TimeUnit<N> const &tb) |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
295 |
{ |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
296 |
HighPrecision a = ta.GetHighPrecision (); |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
297 |
HighPrecision b = tb.GetHighPrecision (); |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
298 |
return TimeUnit<N> (Max (a, b)); |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
299 |
} |
151
8395af452e55
add Scale/Min/Max/Abs non-member functions
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
150
diff
changeset
|
300 |
|
339
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
301 |
// Explicit instatiation of the TimeUnit template for N=1, with a few |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
302 |
// additional methods that should not be available for N!=1 |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
303 |
// \class TimeUnit<1> |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
304 |
|
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
305 |
template <> |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
306 |
class TimeUnit<1> |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
307 |
{ |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
308 |
// -*- New methods -*- |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
309 |
public: |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
310 |
|
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
311 |
/** |
372
c242f488ef0b
Added back corrected version of TimeUnit(string)
Raj@rajib-bhattacharjeas-computer.local
parents:
367
diff
changeset
|
312 |
* \brief String constructor |
c242f488ef0b
Added back corrected version of TimeUnit(string)
Raj@rajib-bhattacharjeas-computer.local
parents:
367
diff
changeset
|
313 |
* Construct TimeUnit<1> object from common time expressions like " |
c242f488ef0b
Added back corrected version of TimeUnit(string)
Raj@rajib-bhattacharjeas-computer.local
parents:
367
diff
changeset
|
314 |
* 1ms" or "10s". Supported units include: |
c242f488ef0b
Added back corrected version of TimeUnit(string)
Raj@rajib-bhattacharjeas-computer.local
parents:
367
diff
changeset
|
315 |
* - s (seconds) |
c242f488ef0b
Added back corrected version of TimeUnit(string)
Raj@rajib-bhattacharjeas-computer.local
parents:
367
diff
changeset
|
316 |
* - ms (milliseconds) |
c242f488ef0b
Added back corrected version of TimeUnit(string)
Raj@rajib-bhattacharjeas-computer.local
parents:
367
diff
changeset
|
317 |
* - us (microseconds) |
c242f488ef0b
Added back corrected version of TimeUnit(string)
Raj@rajib-bhattacharjeas-computer.local
parents:
367
diff
changeset
|
318 |
* - ns (nanoseconds) |
c242f488ef0b
Added back corrected version of TimeUnit(string)
Raj@rajib-bhattacharjeas-computer.local
parents:
367
diff
changeset
|
319 |
* |
c242f488ef0b
Added back corrected version of TimeUnit(string)
Raj@rajib-bhattacharjeas-computer.local
parents:
367
diff
changeset
|
320 |
* There can be no white space between the numerical portion |
c242f488ef0b
Added back corrected version of TimeUnit(string)
Raj@rajib-bhattacharjeas-computer.local
parents:
367
diff
changeset
|
321 |
* and the units. Any otherwise malformed string causes a fatal error to |
c242f488ef0b
Added back corrected version of TimeUnit(string)
Raj@rajib-bhattacharjeas-computer.local
parents:
367
diff
changeset
|
322 |
* occur. |
c242f488ef0b
Added back corrected version of TimeUnit(string)
Raj@rajib-bhattacharjeas-computer.local
parents:
367
diff
changeset
|
323 |
* \param s The string to parse into a TimeUnit<1> |
c242f488ef0b
Added back corrected version of TimeUnit(string)
Raj@rajib-bhattacharjeas-computer.local
parents:
367
diff
changeset
|
324 |
*/ |
c242f488ef0b
Added back corrected version of TimeUnit(string)
Raj@rajib-bhattacharjeas-computer.local
parents:
367
diff
changeset
|
325 |
TimeUnit<1>(const std::string& s); |
c242f488ef0b
Added back corrected version of TimeUnit(string)
Raj@rajib-bhattacharjeas-computer.local
parents:
367
diff
changeset
|
326 |
/** |
339
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
327 |
* \returns an approximation in seconds of the time stored in this |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
328 |
* instance. |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
329 |
*/ |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
330 |
double GetSeconds (void) const; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
331 |
/** |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
332 |
* \returns an approximation in milliseconds of the time stored in this |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
333 |
* instance. |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
334 |
*/ |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
335 |
int32_t GetMilliSeconds (void) const; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
336 |
/** |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
337 |
* \returns an approximation in microseconds of the time stored in this |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
338 |
* instance. |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
339 |
*/ |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
340 |
int64_t GetMicroSeconds (void) const; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
341 |
/** |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
342 |
* \returns an approximation in nanoseconds of the time stored in this |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
343 |
* instance. |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
344 |
*/ |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
345 |
int64_t GetNanoSeconds (void) const; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
346 |
|
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
347 |
// -*- The rest is the the same as in the generic template class -*- |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
348 |
public: |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
349 |
TimeUnit () |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
350 |
: m_data () |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
351 |
{} |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
352 |
TimeUnit (TimeUnit const &o) |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
353 |
: m_data (o.m_data) {} |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
354 |
TimeUnit operator = (TimeUnit const &o) { |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
355 |
m_data = o.m_data; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
356 |
return *this; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
357 |
} |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
358 |
TimeUnit (HighPrecision data) |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
359 |
: m_data (data) {} |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
360 |
bool IsZero (void) const { |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
361 |
return m_data.Compare (HighPrecision::Zero ()) == 0; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
362 |
} |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
363 |
bool IsNegative (void) const { |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
364 |
return m_data.Compare (HighPrecision::Zero ()) <= 0; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
365 |
} |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
366 |
bool IsPositive (void) const { |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
367 |
return m_data.Compare (HighPrecision::Zero ()) >= 0; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
368 |
} |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
369 |
bool IsStrictlyNegative (void) const { |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
370 |
return m_data.Compare (HighPrecision::Zero ()) < 0; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
371 |
} |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
372 |
bool IsStrictlyPositive (void) const { |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
373 |
return m_data.Compare (HighPrecision::Zero ()) > 0; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
374 |
} |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
375 |
HighPrecision const &GetHighPrecision (void) const { |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
376 |
return m_data; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
377 |
} |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
378 |
HighPrecision *PeekHighPrecision (void) { |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
379 |
return &m_data; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
380 |
} |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
381 |
private: |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
382 |
HighPrecision m_data; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
383 |
}; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
384 |
|
159
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
385 |
/** |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
386 |
* \brief keep track of seconds. |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
387 |
* |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
388 |
* This is an instance of type ns3::TimeUnit<1>: it is |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
389 |
* the return value of the ns3::Simulator::Now method |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
390 |
* and is needed for the Simulator::Schedule methods |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
391 |
* |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
392 |
* Time instances can be created through any of the following classes: |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
393 |
* - ns3::Seconds |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
394 |
* - ns3::MilliSeconds |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
395 |
* - ns3::MicroSeconds |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
396 |
* - ns3::NanoSeconds |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
397 |
* - ns3::Now |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
398 |
* |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
399 |
* Time instances can be added, substracted, multipled and divided using |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
400 |
* the standard C++ operators (if you make sure to obey the rules |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
401 |
* of the ns3::TimeUnit class template) |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
402 |
* To scale a Time instance, you can multiply it with an instance of |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
403 |
* the ns3::Scalar class. |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
404 |
* Time instances can also be manipulated through the following non-member |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
405 |
* functions: |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
406 |
* - \ref ns3-Time-Abs ns3::Abs |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
407 |
* - \ref ns3-Time-Max ns3::Max |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
408 |
* - \ref ns3-Time-Min ns3::Min |
339
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
409 |
* |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
410 |
* The Time class has the following additional methods not available in |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
411 |
* the generic TimeUnit template: |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
412 |
* |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
413 |
* \code |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
414 |
* double GetSeconds (void) const; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
415 |
* \endcode |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
416 |
* returns an approximation in seconds of the time stored in this |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
417 |
* instance. |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
418 |
* |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
419 |
* \code |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
420 |
* int32_t GetMilliSeconds (void) const; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
421 |
* \endcode |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
422 |
* returns an approximation in milliseconds of the time stored in this |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
423 |
* instance. |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
424 |
* |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
425 |
* \code |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
426 |
* int64_t GetMicroSeconds (void) const; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
427 |
* \endcode |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
428 |
* returns an approximation in microseconds of the time stored in this |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
429 |
* instance. |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
430 |
* |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
431 |
* \code |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
432 |
* int64_t GetNanoSeconds (void) const; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
433 |
* \endcode |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
434 |
* returns an approximation in nanoseconds of the time stored in this |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
435 |
* instance. |
159
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
436 |
*/ |
339
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
437 |
typedef TimeUnit<1> Time; |
209
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
438 |
|
143
552ff26b4224
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
131
diff
changeset
|
439 |
|
209
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
440 |
std::ostream& operator<< (std::ostream& os, Time const& time); |
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
441 |
|
159
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
442 |
/** |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
443 |
* \brief create ns3::Time instances in units of seconds. |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
444 |
* |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
445 |
* For example: |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
446 |
* \code |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
447 |
* Time t = Seconds (2.0); |
162
5b398ac221c7
make Time relative instead of Absolute
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
159
diff
changeset
|
448 |
* Simulator::Schedule (NanoSeconds (5.0), ...); |
159
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
449 |
* \endcode |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
450 |
*/ |
209
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
451 |
Time Seconds (double seconds); |
156
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
452 |
|
159
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
453 |
/** |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
454 |
* \brief create ns3::Time instances in units of milliseconds. |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
455 |
* |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
456 |
* For example: |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
457 |
* \code |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
458 |
* Time t = MilliSeconds (2); |
162
5b398ac221c7
make Time relative instead of Absolute
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
159
diff
changeset
|
459 |
* Simulator::Schedule (MilliSeconds (5), ...); |
159
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
460 |
* \endcode |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
461 |
*/ |
209
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
462 |
Time MilliSeconds (uint32_t ms); |
159
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
463 |
/** |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
464 |
* \brief create ns3::Time instances in units of microseconds. |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
465 |
* |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
466 |
* For example: |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
467 |
* \code |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
468 |
* Time t = MicroSeconds (2); |
162
5b398ac221c7
make Time relative instead of Absolute
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
159
diff
changeset
|
469 |
* Simulator::Schedule (MicroSeconds (5), ...); |
159
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
470 |
* \endcode |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
471 |
*/ |
209
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
472 |
Time MicroSeconds (uint64_t us); |
159
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
473 |
/** |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
474 |
* \brief create ns3::Time instances in units of nanoseconds. |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
475 |
* |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
476 |
* For example: |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
477 |
* \code |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
478 |
* Time t = NanoSeconds (2); |
162
5b398ac221c7
make Time relative instead of Absolute
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
159
diff
changeset
|
479 |
* Simulator::Schedule (NanoSeconds (5), ...); |
159
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
480 |
* \endcode |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
481 |
*/ |
209
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
482 |
Time NanoSeconds (uint64_t ns); |
156
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
483 |
|
159
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
484 |
/** |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
485 |
* \brief create an ns3::Time instance which contains the |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
486 |
* current simulation time. |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
487 |
* |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
488 |
* This is really a shortcut for the ns3::Simulator::Now method. |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
489 |
* It is typically used as shown below to schedule an event |
209
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
490 |
* which expires at the absolute time "2 seconds": |
159
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
491 |
* \code |
209
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
492 |
* Simulator::Schedule (Seconds (2.0) - Now (), &my_function); |
159
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
493 |
* \endcode |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
494 |
*/ |
209
8b343b9727d7
fix EventId::IsExpired and Simulator::IsExpired, add EventId::IsRunning, add relevant tests, replace Seconds, MilliSeconds, MicroSeconds, and, NanoSeconds classes by functions named similarly
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
199
diff
changeset
|
495 |
Time Now (void); |
143
552ff26b4224
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
131
diff
changeset
|
496 |
|
339
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
497 |
|
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
498 |
// Explicit instatiation of the TimeUnit template for N=0, with a few |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
499 |
// additional methods that should not be available for N != 0 |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
500 |
template <> |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
501 |
class TimeUnit<0> |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
502 |
{ |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
503 |
// -*- New methods -*- |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
504 |
public: |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
505 |
double GetDouble (void) const; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
506 |
TimeUnit<0> (double scalar); |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
507 |
|
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
508 |
// -*- The rest is the the same as in the generic template class -*- |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
509 |
public: |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
510 |
TimeUnit () |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
511 |
: m_data () |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
512 |
{}; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
513 |
TimeUnit (TimeUnit const &o) |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
514 |
: m_data (o.m_data) {} |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
515 |
TimeUnit operator = (TimeUnit const &o) { |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
516 |
m_data = o.m_data; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
517 |
return *this; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
518 |
} |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
519 |
TimeUnit (HighPrecision data) |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
520 |
: m_data (data) {} |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
521 |
bool IsZero (void) const { |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
522 |
return m_data.Compare (HighPrecision::Zero ()) == 0; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
523 |
} |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
524 |
bool IsNegative (void) const { |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
525 |
return m_data.Compare (HighPrecision::Zero ()) <= 0; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
526 |
} |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
527 |
bool IsPositive (void) const { |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
528 |
return m_data.Compare (HighPrecision::Zero ()) >= 0; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
529 |
} |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
530 |
bool IsStrictlyNegative (void) const { |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
531 |
return m_data.Compare (HighPrecision::Zero ()) < 0; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
532 |
} |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
533 |
bool IsStrictlyPositive (void) const { |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
534 |
return m_data.Compare (HighPrecision::Zero ()) > 0; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
535 |
} |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
536 |
HighPrecision const &GetHighPrecision (void) const { |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
537 |
return m_data; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
538 |
} |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
539 |
HighPrecision *PeekHighPrecision (void) { |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
540 |
return &m_data; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
541 |
} |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
542 |
private: |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
543 |
HighPrecision m_data; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
544 |
}; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
545 |
|
159
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
546 |
/** |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
547 |
* \brief hold scalar values |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
548 |
* |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
549 |
* This class is used both to construct scalar values to multiply |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
550 |
* ns3::Time instances and to hold the return value of |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
551 |
* an expression which returns a scalar. For example, the |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
552 |
* following code will output on your terminal 1.5: |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
553 |
* \code |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
554 |
* Scalar s0 = Scalar (1.5); |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
555 |
* Time t1 = Seconds (10.0) * s0; |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
556 |
* Time t2 = Seconds (10.0) * Scalar (2.5); |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
557 |
* Scalar s1 = Seconds (15.0) / Seconds (10.0); |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
558 |
* std::cout << s1.GetDouble () << std::endl; |
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
559 |
* \endcode |
339
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
560 |
* |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
561 |
* The Scalar class has the following additional methods not available in |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
562 |
* the generic TimeUnit template: |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
563 |
* \code |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
564 |
* double GetDouble (void) const; |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
565 |
* \endcode |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
566 |
* returns the C double contained in the Scalar instance |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
567 |
* |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
568 |
* \code |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
569 |
* Scalar(double scalar); |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
570 |
* \endcode |
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
571 |
* Constructs a Scalar instance from a C double. |
159
e2c8e211039e
add doxygen dox for Time classes
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
158
diff
changeset
|
572 |
*/ |
339
0ce0402e419f
make TimeUnit<1>.GetSeconds() work, and similar for scalars. Patch by Gustavo Carneiro.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
286
diff
changeset
|
573 |
typedef TimeUnit<0> Scalar; |
156
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
574 |
|
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
575 |
typedef TimeUnit<-1> TimeInvert; |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
576 |
typedef TimeUnit<2> TimeSquare; |
3b1563e95ea7
new Time implementation
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
151
diff
changeset
|
577 |
|
25
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
578 |
|
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
579 |
}; // namespace ns3 |
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
580 |
|
9b3bb088c560
first cut at george's ideas on api
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff
changeset
|
581 |
#endif /* TIME_H */ |