Add PrintToStream methods for std::chrono::nanoseconds
Change-Id: Ia43c752258c7b18e53c70ac0fa8d1518e893b03c
Signed-off-by: James Kuszmaul <james.kuszmaul@bluerivertech.com>
diff --git a/aos/time/time.cc b/aos/time/time.cc
index 361616c..6ba9543 100644
--- a/aos/time/time.cc
+++ b/aos/time/time.cc
@@ -23,6 +23,26 @@
namespace chrono = ::std::chrono;
+namespace {
+
+void PrintToStream(std::ostream &stream, chrono::nanoseconds duration) {
+ chrono::seconds seconds = chrono::duration_cast<chrono::seconds>(duration);
+ if (duration < chrono::nanoseconds(0)) {
+ stream << "-" << -seconds.count() << "." << std::setfill('0')
+ << std::setw(9)
+ << chrono::duration_cast<chrono::nanoseconds>(seconds - duration)
+ .count()
+ << "sec";
+ } else {
+ stream << seconds.count() << "." << std::setfill('0') << std::setw(9)
+ << chrono::duration_cast<chrono::nanoseconds>(duration - seconds)
+ .count()
+ << "sec";
+ }
+}
+
+} // namespace
+
#ifdef __linux__
namespace std {
@@ -57,27 +77,7 @@
std::ostream &operator<<(std::ostream &stream,
const aos::monotonic_clock::time_point &now) {
- if (now < monotonic_clock::epoch()) {
- std::chrono::seconds seconds =
- std::chrono::duration_cast<std::chrono::seconds>(
- now.time_since_epoch());
-
- stream << "-" << -seconds.count() << "." << std::setfill('0')
- << std::setw(9)
- << std::chrono::duration_cast<std::chrono::nanoseconds>(
- seconds - now.time_since_epoch())
- .count()
- << "sec";
- } else {
- std::chrono::seconds seconds =
- std::chrono::duration_cast<std::chrono::seconds>(
- now.time_since_epoch());
- stream << seconds.count() << "." << std::setfill('0') << std::setw(9)
- << std::chrono::duration_cast<std::chrono::nanoseconds>(
- now.time_since_epoch() - seconds)
- .count()
- << "sec";
- }
+ PrintToStream(stream, now.time_since_epoch());
return stream;
}