| 571 | } |
| 572 | |
| 573 | static void __parse_zone(tzdb& __tzdb, __tz::__rules_storage_type& __rules, istream& __input) { |
| 574 | chrono::__skip_mandatory_whitespace(__input); |
| 575 | auto __p = std::make_unique<time_zone::__impl>(chrono::__parse_string(__input), __rules); |
| 576 | vector<__tz::__continuation>& __continuations = __p->__continuations(); |
| 577 | chrono::__skip_mandatory_whitespace(__input); |
| 578 | |
| 579 | do { |
| 580 | // The first line must be valid, continuations are optional. |
| 581 | __continuations.emplace_back(__parse_continuation(__rules, __input)); |
| 582 | chrono::__skip_line(__input); |
| 583 | chrono::__skip_optional_whitespace(__input); |
| 584 | } while (std::isdigit(__input.peek()) || __input.peek() == '-'); |
| 585 | |
| 586 | __tzdb.zones.emplace_back(time_zone::__create(std::move(__p))); |
| 587 | } |
| 588 | |
| 589 | static void __parse_link(tzdb& __tzdb, istream& __input) { |
| 590 | chrono::__skip_mandatory_whitespace(__input); |
no test coverage detected