2222// ******************************************************************************************************
2323
2424// ReSharper disable CppClangTidyClangDiagnosticExitTimeDestructors
25-
2625#include " Convert.h"
2726#include < iomanip>
2827#include < sstream>
@@ -44,7 +43,7 @@ using namespace boost::gregorian;
4443using namespace sttp ;
4544
4645const datetime_t DateTimeEpoch (date(1400 , 1 , 1 ), TimeSpan(0 , 0 , 0 ));
47- const auto DateTimeTicksPerSecond = TimeSpan::ticks_per_second();
46+ const int64_t DateTimeTicksPerSecond = TimeSpan::ticks_per_second();
4847
4948inline int GetRadix (const string& value)
5049{
@@ -181,18 +180,17 @@ datetime_t sttp::FromUnixTime(const time_t unixSOC, const uint16_t milliseconds)
181180
182181datetime_t sttp::FromTicks (const int64_t ticks)
183182{
184- static float64_t ticksPerSecondF = static_cast <float64_t >(Ticks::PerSecond);
185183 const datetime_t time = from_time_t ((ticks - Ticks::UnixBaseOffset) / Ticks::PerSecond);
186- const int64_t pticks = static_cast <int64_t >(ticks % Ticks::PerSecond / ticksPerSecondF * DateTimeTicksPerSecond); // NOLINT
184+ const int64_t pticks = static_cast <int64_t >(ticks % Ticks::PerSecond * DateTimeTicksPerSecond / Ticks::PerSecond);
187185 return time + TimeSpan (0 , 0 , 0 , pticks % DateTimeTicksPerSecond);
188186}
189187
190188int64_t sttp::ToTicks (const datetime_t & time)
191189{
192- static int64_t tickInterval = static_cast <int64_t >(pow (10LL , TimeSpan::num_fractional_digits ()));
190+ static const int64_t tickInterval = static_cast <int64_t >(pow (10LL , TimeSpan::num_fractional_digits ()));
193191 const TimeSpan offset = time - DateTimeEpoch;
194192 return Ticks::PTimeBaseOffset + offset.total_seconds () * Ticks::PerSecond +
195- static_cast <int64_t >(offset.fractional_seconds () / tickInterval * Ticks::PerSecond);
193+ static_cast <int64_t >(offset.fractional_seconds () * Ticks::PerSecond / tickInterval );
196194}
197195
198196bool sttp::TimestampIsReasonable (const int64_t value, const float64_t lagTime, const float64_t leadTime, const bool utc)
@@ -471,7 +469,7 @@ bool sttp::TryParseUInt64(const string& value, uint64_t& result, const uint64_t
471469{
472470 try
473471 {
474- result = stoull (value);
472+ result = stoull (value, nullptr , GetRadix (value) );
475473 return true ;
476474 }
477475 catch (...)
@@ -495,7 +493,7 @@ bool sttp::TryParseDouble(const string& value, float64_t& result, const float64_
495493 }
496494}
497495
498- bool sttp::TryParseDecimal (const string& value, decimal_t & result, const decimal_t defaultValue)
496+ bool sttp::TryParseDecimal (const string& value, decimal_t & result, const decimal_t defaultValue) // NOLINT
499497{
500498 try
501499 {
0 commit comments