[PATCH] D25416: Add Chrono.h - std::chrono support header

Pavel Labath via llvm-commits llvm-commits at lists.llvm.org
Sun Oct 9 19:20:01 PDT 2016


labath created this revision.
labath added reviewers: zturner, mehdi_amini.
labath added a subscriber: llvm-commits.
Herald added subscribers: modocache, mgorny, beanz.

std::chrono mostly covers the functionality of llvm::sys::TimeValue and
lldb_private::TimeValue. This header adds additional utility functions, which
make the usage of the library and porting code from TimeValues easier:

- conversion between std::chrono types and legacy C types (time_t, struct timeval, struct timespec).
- string converision
- a TimePoint typedef which defines a system_clock timepoint with nanosecond precision.

Rationale behind some of the design decisions:

- precision of system_clock is implementation defined - using a well-defined precision helps maintain consistency between platforms, makes it interact better with existing TimeValue classes, and avoids cases there a time point is implicitly convertible to a specific precision on some platforms but not on others.
- system_clock::to_time_t only accepts time_points with the default system precision (even though time_t has only second precision on all platforms we support). To avoid the need for explicit casts, I have added a toTimeT() wrapper function. toTimePoint(time_t) was not strictly necessary, but I have added it for symmetry.
- the duration version of toTimeVal() only accepts durations with microsecond precision (forcing the user to explicitly cast if he has a nanosecond duration), but the time point version, casts away the precision implicitly. The rationalle behind that is that for time points the extra precision is not likely to be important, while one may concievably care about the extra precision for durations.


https://reviews.llvm.org/D25416

Files:
  include/llvm/Support/Chrono.h
  include/llvm/Support/TimeValue.h
  lib/Support/CMakeLists.txt
  lib/Support/Chrono.cpp
  lib/Support/Unix/Chrono.inc
  unittests/Support/CMakeLists.txt
  unittests/Support/Chrono.cpp
  unittests/Support/TimeValueTest.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D25416.74090.patch
Type: text/x-patch
Size: 11280 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161010/f64dd720/attachment.bin>


More information about the llvm-commits mailing list