33#include <boost/core/span.hpp>
43namespace ngen{
namespace serialization{
63 = (std::numeric_limits<int64_t>::min)();
76 std::size_t consumed = 0;
77 const long long v = std::stoll(s, &consumed);
78 while (consumed < s.size()
79 && std::isspace(
static_cast<unsigned char>(s[consumed]))) {
82 if (consumed == s.size()) {
83 return static_cast<int64_t
>(v);
85 }
catch (
const std::exception&) {
102 if (end !=
nullptr) {
103 while (*end !=
'\0' && std::isspace(
static_cast<unsigned char>(*end))) {
107 return static_cast<int64_t
>(::timegm(&tm));
150template <
typename PayloadT>
161 int64_t simulation_timestamp_,
163 int64_t checkpoint_epoch_ = 0)
int64_t parse_epoch_string(const std::string &s)
Parse s as a whole-string signed integer interpreted as Unix epoch seconds (e.g.
Definition record.hpp:74
int64_t parse_timestamp(const std::string &s)
Parse s as seconds-since-Unix-epoch.
Definition record.hpp:120
constexpr const char * TIMESTAMP_STRPTIME_FORMAT
Tests in parse_timestamp_Test.cpp pin both TIMESTAMP_STRPTIME_FORMAT and UNPARSEABLE_TIMESTAMP_SENTIN...
Definition record.hpp:54
constexpr int64_t UNPARSEABLE_TIMESTAMP_SENTINEL
Out-of-band value returned by parse_timestamp and its helpers when the input string cannot be resolve...
Definition record.hpp:63
int64_t parse_formatted_time(const std::string &s)
Parse s as a formatted timestamp matching TIMESTAMP_STRPTIME_FORMAT.
Definition record.hpp:99
Definition DomainLayer.hpp:13
Definition record.hpp:151
int64_t time_step
Definition record.hpp:153
int64_t checkpoint_epoch
Definition record.hpp:155
std::string id
Definition record.hpp:152
PayloadT payload
Definition record.hpp:156
RecordT(std::string id_, int64_t time_step_, int64_t simulation_timestamp_, PayloadT payload_, int64_t checkpoint_epoch_=0)
Definition record.hpp:159
int64_t simulation_timestamp
Definition record.hpp:154