Gazebo Transport

API Reference

13.4.0
QualifiedTime.hh
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2018 Open Source Robotics Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16 */
17 #ifndef GZ_TRANSPORT_LOG_QUALIFIEDTIME_HH_
18 #define GZ_TRANSPORT_LOG_QUALIFIEDTIME_HH_
19 
20 #include <chrono>
21 #include <cstdint>
22 #include <memory>
23 
24 #include <gz/transport/config.hh>
25 #include <gz/transport/log/Export.hh>
26 
27 namespace gz
28 {
29  namespace transport
30  {
31  namespace log
32  {
33  // Inline bracket to help doxygen filtering.
34  inline namespace GZ_TRANSPORT_VERSION_NAMESPACE {
35  //
44  class GZ_TRANSPORT_LOG_VISIBLE QualifiedTime
45  {
48  public: enum class Qualifier : int64_t
49  {
53  INCLUSIVE = 0,
54 
59  EXCLUSIVE
60  };
61 
75 
81  public: QualifiedTime(const Time &_time,
82  Qualifier _qualifier = Qualifier::INCLUSIVE);
83 
90  public: template <typename Rep, typename Period>
92  Qualifier _qualifier = Qualifier::INCLUSIVE)
93  : QualifiedTime(static_cast<const Time &>(_time), _qualifier) { }
94 
99  public: QualifiedTime(/* Indeterminate */);
100 
103  public: QualifiedTime(const QualifiedTime &_other);
104 
108  public: QualifiedTime &operator=(const QualifiedTime &_other);
109 
112  public: QualifiedTime(QualifiedTime &&_old) = default; // NOLINT
113 
117  QualifiedTime &&) = default; // NOLINT(build/c++11)
118 
124  public: bool operator==(const QualifiedTime &_other) const;
125 
129  public: bool operator!=(const QualifiedTime &_other) const;
130 
140  public: bool IsIndeterminate() const;
141 
147  public: const Time *GetTime() const;
148 
154  public: const Qualifier *GetQualifier() const;
155 
161  public: void SetTime(const Time &_time,
162  Qualifier _qualifier = Qualifier::INCLUSIVE);
163 
166  public: void Clear();
167 
169  public: ~QualifiedTime();
170 
172  private: class Implementation;
173 
174 #ifdef _WIN32
175 // Disable warning C4251 which is triggered by
176 // std::*
177 #pragma warning(push)
178 #pragma warning(disable: 4251)
179 #endif
182  private: std::unique_ptr<Implementation,
183  void (*)(Implementation*)> dataPtr;
184 #ifdef _WIN32
185 #pragma warning(pop)
186 #endif
187  };
188 
193  class GZ_TRANSPORT_LOG_VISIBLE QualifiedTimeRange
194  {
202  const QualifiedTime &_begin,
203  const QualifiedTime &_end);
204 
207  public: QualifiedTimeRange(const QualifiedTimeRange &_other);
208 
213 
216  public: QualifiedTimeRange(QualifiedTimeRange &&_old); // NOLINT
217 
221  QualifiedTimeRange &&) = default; // NOLINT(build/c++11)
222 
227  public: bool operator==(const QualifiedTimeRange &_other) const;
228 
232  public: bool operator!=(const QualifiedTimeRange &_other) const;
233 
237  public: static QualifiedTimeRange From(const QualifiedTime &_begin);
238 
243  public: static QualifiedTimeRange Until(const QualifiedTime &_end);
244 
247  public: static QualifiedTimeRange AllTime();
248 
251  public: const QualifiedTime &Beginning() const;
252 
255  public: const QualifiedTime &Ending() const;
256 
266  public: bool SetBeginning(const QualifiedTime &_begin);
267 
277  public: bool SetEnding(const QualifiedTime &_end);
278 
288  public: bool SetRange(const QualifiedTime &_begin,
289  const QualifiedTime &_end);
290 
295  public: bool Valid() const;
296 
299 
301  private: class Implementation;
302 
303 #ifdef _WIN32
304 // Disable warning C4251 which is triggered by
305 // std::*
306 #pragma warning(push)
307 #pragma warning(disable: 4251)
308 #endif
311  private: std::unique_ptr<Implementation,
312  void(*)(Implementation*)> dataPtr;
313 #ifdef _WIN32
314 #pragma warning(pop)
315 #endif
316  };
317  }
318  }
319  }
320 }
321 
322 #endif