mirror of
https://github.com/ToruNiina/toml11.git
synced 2025-09-18 10:28:09 +08:00
fix #166: reorder local/gmtime wrapper for MSVC
This commit is contained in:
@@ -21,22 +21,7 @@ namespace toml
|
|||||||
namespace detail
|
namespace detail
|
||||||
{
|
{
|
||||||
// TODO: find more sophisticated way to handle this
|
// TODO: find more sophisticated way to handle this
|
||||||
#if (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 1) || defined(_XOPEN_SOURCE) || defined(_BSD_SOURCE) || defined(_SVID_SOURCE) || defined(_POSIX_SOURCE)
|
#if defined(_MSC_VER)
|
||||||
inline std::tm localtime_s(const std::time_t* src)
|
|
||||||
{
|
|
||||||
std::tm dst;
|
|
||||||
const auto result = ::localtime_r(src, &dst);
|
|
||||||
if (!result) { throw std::runtime_error("localtime_r failed."); }
|
|
||||||
return dst;
|
|
||||||
}
|
|
||||||
inline std::tm gmtime_s(const std::time_t* src)
|
|
||||||
{
|
|
||||||
std::tm dst;
|
|
||||||
const auto result = ::gmtime_r(src, &dst);
|
|
||||||
if (!result) { throw std::runtime_error("gmtime_r failed."); }
|
|
||||||
return dst;
|
|
||||||
}
|
|
||||||
#elif defined(_MSC_VER)
|
|
||||||
inline std::tm localtime_s(const std::time_t* src)
|
inline std::tm localtime_s(const std::time_t* src)
|
||||||
{
|
{
|
||||||
std::tm dst;
|
std::tm dst;
|
||||||
@@ -51,6 +36,21 @@ inline std::tm gmtime_s(const std::time_t* src)
|
|||||||
if (result) { throw std::runtime_error("gmtime_s failed."); }
|
if (result) { throw std::runtime_error("gmtime_s failed."); }
|
||||||
return dst;
|
return dst;
|
||||||
}
|
}
|
||||||
|
#elif (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 1) || defined(_XOPEN_SOURCE) || defined(_BSD_SOURCE) || defined(_SVID_SOURCE) || defined(_POSIX_SOURCE)
|
||||||
|
inline std::tm localtime_s(const std::time_t* src)
|
||||||
|
{
|
||||||
|
std::tm dst;
|
||||||
|
const auto result = ::localtime_r(src, &dst);
|
||||||
|
if (!result) { throw std::runtime_error("localtime_r failed."); }
|
||||||
|
return dst;
|
||||||
|
}
|
||||||
|
inline std::tm gmtime_s(const std::time_t* src)
|
||||||
|
{
|
||||||
|
std::tm dst;
|
||||||
|
const auto result = ::gmtime_r(src, &dst);
|
||||||
|
if (!result) { throw std::runtime_error("gmtime_r failed."); }
|
||||||
|
return dst;
|
||||||
|
}
|
||||||
#else // fallback. not threadsafe
|
#else // fallback. not threadsafe
|
||||||
inline std::tm localtime_s(const std::time_t* src)
|
inline std::tm localtime_s(const std::time_t* src)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user