My Project
 All Classes Files Functions Variables Enumerations Enumerator Friends Macros Pages
Delay.h
Go to the documentation of this file.
1 #ifndef GCP_UTIL_DELAY_H
2 #define GCP_UTIL_DELAY_H
3 
11 #include <iostream>
12 
13 namespace gcp {
14  namespace util {
15 
19  class Delay {
20  public:
21 
25  Delay();
26 
30  virtual ~Delay();
31 
35  void setDelayInMeters(double delayInMeters) {
36  nanoSeconds_ = delayInMeters / lightSpeed_ * nanoSecPerSec_;
37  }
38 
42  void setDelayRateInMeters(double delayRateInMeters) {
43  dNanoSeconds_ = delayRateInMeters / lightSpeed_ * nanoSecPerSec_;
44  }
45 
49  void setDelayInNanoSeconds(double delayInNanoSec) {
50  nanoSeconds_ = delayInNanoSec;
51  }
52 
56  void setDelayRateInNanoSeconds(double delayRateInNanoSec) {
57  dNanoSeconds_ = delayRateInNanoSec;
58  }
59 
63  inline double meters() {
64  return nanoSeconds_ / nanoSecPerSec_ * lightSpeed_;
65  }
66 
70  inline double metersPerSecond() {
71  return dNanoSeconds_ / nanoSecPerSec_ * lightSpeed_;
72  }
73 
77  inline double seconds() {
78  return nanoSeconds_ / nanoSecPerSec_;
79  }
80 
84  inline double nanoSeconds() {
85  return nanoSeconds_;
86  }
87 
91  inline double nanoSecondsPerSecond() {
92  return dNanoSeconds_;
93  }
94 
98  inline double secondsPerSecond() {
99  return dNanoSeconds_ / nanoSecPerSec_;
100  }
101 
105  Delay operator+(Delay& delay);
106  Delay& operator+=(Delay& delay);
107  Delay& operator+=(Delay delay);
108 
112  Delay operator-(Delay& delay);
113  Delay& operator-=(Delay& delay);
114  Delay& operator-=(Delay delay);
115 
119  friend std::ostream& operator<<(std::ostream& os, Delay delay);
120 
121  inline void flipDelay() {
122  nanoSeconds_ *= -1;
123  }
124 
125  inline void flipRate() {
126  dNanoSeconds_ *= -1;
127  }
128 
129  private:
130 
134  static const double lightSpeed_;
135  static const double nanoSecPerSec_;
136 
137  double nanoSeconds_;
138  double dNanoSeconds_;
139 
140  }; // End class Delay
141 
142  std::ostream& operator<<(std::ostream& os, Delay delay);
143 
144  } // End namespace util
145 } // End namespace gcp
146 
147 
148 
149 
150 #endif // End #ifndef GCP_UTIL_DELAY_H
Definition: Delay.h:19
Delay operator-(Delay &delay)
Definition: Delay.cc:39
void setDelayRateInMeters(double delayRateInMeters)
Definition: Delay.h:42
void setDelayInNanoSeconds(double delayInNanoSec)
Definition: Delay.h:49
Delay()
Definition: Delay.cc:14
double nanoSecondsPerSecond()
Definition: Delay.h:91
double nanoSeconds()
Definition: Delay.h:84
void setDelayInMeters(double delayInMeters)
Definition: Delay.h:35
virtual ~Delay()
Definition: Delay.cc:23
void setDelayRateInNanoSeconds(double delayRateInNanoSec)
Definition: Delay.h:56
Delay & operator+=(Delay &delay)
Definition: Delay.cc:50
double seconds()
Definition: Delay.h:77
Delay operator+(Delay &delay)
Definition: Delay.cc:28
double secondsPerSecond()
Definition: Delay.h:98
double meters()
Definition: Delay.h:63
double metersPerSecond()
Definition: Delay.h:70
friend std::ostream & operator<<(std::ostream &os, Delay delay)
Delay & operator-=(Delay &delay)
Definition: Delay.cc:60