Skip to content

Commit

Permalink
Improve uuid_clock::from_sys, to_sys
Browse files Browse the repository at this point in the history
  • Loading branch information
pdimov committed May 4, 2024
1 parent b20a0ba commit 64d070b
Showing 1 changed file with 6 additions and 7 deletions.
13 changes: 6 additions & 7 deletions include/boost/uuid/uuid_clock.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ class uuid_clock

static time_point now() noexcept;

static time_point from_sys( std::chrono::system_clock::time_point const& tp ) noexcept;
static std::chrono::system_clock::time_point to_sys( time_point const& tp ) noexcept;
template<class Duration> static time_point from_sys( std::chrono::time_point<std::chrono::system_clock, Duration> const& tp ) noexcept;
static std::chrono::time_point<std::chrono::system_clock, duration> to_sys( time_point const& tp ) noexcept;

static time_point from_timestamp( std::uint64_t timestamp ) noexcept;
static std::uint64_t to_timestamp( time_point const& tp ) noexcept;
Expand All @@ -37,7 +37,8 @@ inline uuid_clock::time_point uuid_clock::now() noexcept
return from_sys( std::chrono::system_clock::now() );
}

inline uuid_clock::time_point uuid_clock::from_sys( std::chrono::system_clock::time_point const& tp ) noexcept
template<class Duration>
inline uuid_clock::time_point uuid_clock::from_sys( std::chrono::time_point<std::chrono::system_clock, Duration> const& tp ) noexcept
{
using days = std::chrono::duration< std::int32_t, std::ratio<86400> >;
constexpr auto epoch_diff = days( 141427 );
Expand All @@ -47,14 +48,12 @@ inline uuid_clock::time_point uuid_clock::from_sys( std::chrono::system_clock::t
return uuid_clock::time_point( uuid_since );
}

inline std::chrono::system_clock::time_point uuid_clock::to_sys( time_point const& tp ) noexcept
inline std::chrono::time_point<std::chrono::system_clock, uuid_clock::duration> uuid_clock::to_sys( time_point const& tp ) noexcept
{
using days = std::chrono::duration< std::int32_t, std::ratio<86400> >;
constexpr auto epoch_diff = days( 141427 );

auto sys_since = std::chrono::duration_cast<std::chrono::system_clock::duration>( tp.time_since_epoch() - epoch_diff );

return std::chrono::system_clock::time_point( sys_since );
return std::chrono::time_point<std::chrono::system_clock, duration>( tp.time_since_epoch() - epoch_diff );
}

inline uuid_clock::time_point uuid_clock::from_timestamp( std::uint64_t timestamp ) noexcept
Expand Down

0 comments on commit 64d070b

Please sign in to comment.