49 if( std::regex_search(timestr, match, pattern) ) {
50 constexpr bool DBG_OUT =
false;
51 if constexpr ( DBG_OUT ) {
52 std::cout <<
"XXX: " << timestr << std::endl;
53 std::cout <<
"XXX: match pos " << match.position() <<
", len " << match.length() <<
", sz " << match.size() <<
"\n";
54 for(
size_t i=0; i<match.size(); ++i) {
55 const std::string& ms = match[i];
56 std::cout <<
"- [" << i <<
"]: '" << ms <<
"', len " << ms.length() <<
"\n";
62 if( match.size() > 1 && match[1].length() > 0 ) {
63 h = std::stoi(match[1]);
65 if( match.size() > 2 && match[2].length() > 0 ) {
66 m = std::stoi(match[2]);
68 if( match.size() > 3 && match[3].length() > 0 ) {
69 s = std::stoi(match[3]);
70 if ( match.size() > 4 && 0 < match[4].length() && match[4].length() <= 9 ) {
71 const size_t ns_sdigits = match[4].length();
72 ns = std::stoul(match[4]) *
static_cast<uint64_t
>(std::pow(10, 9 - ns_sdigits));
75 constexpr uint64_t ns_per_ms = 1'000'000UL;
76 constexpr uint64_t ms_per_sec = 1'000UL;
77 constexpr uint64_t ms_per_min = ms_per_sec * 60UL;
78 constexpr uint64_t ms_per_h = ms_per_min * 60UL;
80 return h * ms_per_h + m * ms_per_min + s * ms_per_sec +
84 ERR_PRINT2(
"Caught unknown exception parsing %s", timestr.c_str());