Lines Matching defs:__input

68 static void __skip_optional_whitespace(istream& __input) {
69 while (chrono::__is_whitespace(__input.peek()))
70 __input.get();
73 static void __skip_mandatory_whitespace(istream& __input) {
74 if (!chrono::__is_whitespace(__input.get()))
77 chrono::__skip_optional_whitespace(__input);
82 static void __skip_line(istream& __input) {
83 while (!chrono::__is_eol(__input.peek())) {
84 __input.get();
86 __input.get();
89 static void __skip(istream& __input, char __suffix) {
90 if (std::tolower(__input.peek()) == __suffix)
91 __input.get();
94 static void __skip(istream& __input, string_view __suffix) {
96 if (std::tolower(__input.peek()) == __c)
97 __input.get();
100 static void __matches(istream& __input, char __expected) {
102 char __c = __input.get();
108 static void __matches(istream& __input, string_view __expected) {
111 char __actual = __input.get();
120 [[nodiscard]] static string __parse_string(istream& __input) {
123 int __c = __input.get();
128 __input.unget();
142 [[nodiscard]] static int64_t __parse_integral(istream& __input, bool __leading_zero_allowed) {
143 int64_t __result = __input.get();
153 if (__input.peek() < '0' || __input.peek() > '9')
171 __result += __input.get() - '0';
179 [[nodiscard]] static day __parse_day(istream& __input) {
180 unsigned __result = chrono::__parse_integral(__input, false);
186 [[nodiscard]] static weekday __parse_weekday(istream& __input) {
188 switch (std::tolower(__input.get())) {
190 chrono::__skip(__input, "riday");
194 chrono::__skip(__input, "onday");
198 switch (std::tolower(__input.get())) {
200 chrono::__skip(__input, "turday");
204 chrono::__skip(__input, "nday");
210 switch (std::tolower(__input.get())) {
212 chrono::__skip(__input, "ursday");
216 chrono::__skip(__input, "esday");
221 chrono::__skip(__input, "ednesday");
228 [[nodiscard]] static month __parse_month(istream& __input) {
230 switch (std::tolower(__input.get())) {
232 switch (std::tolower(__input.get())) {
234 chrono::__skip(__input, "ril");
238 chrono::__skip(__input, "gust");
244 chrono::__skip(__input, "ecember");
248 chrono::__skip(__input, "ebruary");
252 switch (std::tolower(__input.get())) {
254 chrono::__skip(__input, "nuary");
258 switch (std::tolower(__input.get())) {
260 chrono::__skip(__input, 'e');
264 chrono::__skip(__input, 'y');
271 if (std::tolower(__input.get()) == 'a')
272 switch (std::tolower(__input.get())) {
277 chrono::__skip(__input, "ch");
283 chrono::__skip(__input, "ovember");
287 chrono::__skip(__input, "ctober");
291 chrono::__skip(__input, "eptember");
297 [[nodiscard]] static year __parse_year_value(istream& __input) {
298 bool __negative = __input.peek() == '-';
300 __input.get();
302 int64_t __result = __parse_integral(__input, true);
313 [[nodiscard]] static year __parse_year(istream& __input) {
314 if (std::tolower(__input.peek()) != 'm') [[likely]]
315 return chrono::__parse_year_value(__input);
317 __input.get();
318 switch (std::tolower(__input.peek())) {
320 __input.get();
321 chrono::__skip(__input, 'n');
329 __input.get();
330 chrono::__skip(__input, 'x');
341 [[nodiscard]] static year __parse_to(istream& __input, year __only) {
342 if (std::tolower(__input.peek()) != 'o')
343 return chrono::__parse_year(__input);
345 __input.get();
346 chrono::__skip(__input, "nly");
350 [[nodiscard]] static __tz::__constrained_weekday::__comparison_t __parse_comparison(istream& __input) {
351 switch (__input.get()) {
353 chrono::__matches(__input, '=');
357 chrono::__matches(__input, '=');
363 [[nodiscard]] static __tz::__on __parse_on(istream& __input) {
364 if (std::isdigit(__input.peek()))
365 return chrono::__parse_day(__input);
367 if (std::tolower(__input.peek()) == 'l') {
368 chrono::__matches(__input, "last");
369 return weekday_last(chrono::__parse_weekday(__input));
373 chrono::__parse_weekday(__input), chrono::__parse_comparison(__input), chrono::__parse_day(__input)};
376 [[nodiscard]] static seconds __parse_duration(istream& __input) {
378 int __c = __input.peek();
381 __input.get();
384 if (!std::isdigit(__input.peek()))
388 __result += hours(__parse_integral(__input, true));
389 if (__input.peek() != ':')
392 __input.get();
393 __result += minutes(__parse_integral(__input, true));
394 if (__input.peek() != ':')
397 __input.get();
398 __result += seconds(__parse_integral(__input, true));
399 if (__input.peek() != '.')
402 __input.get();
403 (void)__parse_integral(__input, true); // Truncate the digits.
408 [[nodiscard]] static __tz::__clock __parse_clock(istream& __input) {
409 switch (__input.get()) { // case sensitive
421 __input.unget();
425 [[nodiscard]] static bool __parse_dst(istream& __input, seconds __offset) {
426 switch (__input.get()) { // case sensitive
434 __input.unget();
438 [[nodiscard]] static __tz::__at __parse_at(istream& __input) {
439 return {__parse_duration(__input), __parse_clock(__input)};
442 [[nodiscard]] static __tz::__save __parse_save(istream& __input) {
443 seconds __time = chrono::__parse_duration(__input);
444 return {__time, chrono::__parse_dst(__input, __time)};
447 [[nodiscard]] static string __parse_letters(istream& __input) {
448 string __result = __parse_string(__input);
453 [[nodiscard]] static __tz::__continuation::__rules_t __parse_rules(istream& __input) {
454 int __c = __input.peek();
457 __input.get();
458 if (chrono::__is_whitespace(__input.peek()))
460 __input.unget();
461 return chrono::__parse_save(__input);
465 return chrono::__parse_save(__input);
467 return chrono::__parse_string(__input);
470 [[nodiscard]] static __tz::__continuation __parse_continuation(__tz::__rules_storage_type& __rules, istream& __input) {
480 __result.__stdoff = chrono::__parse_duration(__input);
481 chrono::__skip_mandatory_whitespace(__input);
482 __result.__rules = chrono::__parse_rules(__input);
483 chrono::__skip_mandatory_whitespace(__input);
484 __result.__format = chrono::__parse_string(__input);
485 chrono::__skip_optional_whitespace(__input);
487 if (chrono::__is_eol(__input.peek()))
489 __result.__year = chrono::__parse_year(__input);
490 chrono::__skip_optional_whitespace(__input);
492 if (chrono::__is_eol(__input.peek()))
494 __result.__in = chrono::__parse_month(__input);
495 chrono::__skip_optional_whitespace(__input);
497 if (chrono::__is_eol(__input.peek()))
499 __result.__on = chrono::__parse_on(__input);
500 chrono::__skip_optional_whitespace(__input);
502 if (chrono::__is_eol(__input.peek()))
504 __result.__at = __parse_at(__input);
513 static string __parse_version(istream& __input) {
519 chrono::__matches(__input, '#');
520 chrono::__skip_optional_whitespace(__input);
521 chrono::__matches(__input, "version");
522 chrono::__skip_mandatory_whitespace(__input);
523 return chrono::__parse_string(__input);
548 static void __parse_rule(tzdb& __tzdb, __tz::__rules_storage_type& __rules, istream& __input) {
549 chrono::__skip_mandatory_whitespace(__input);
550 string __name = chrono::__parse_string(__input);
554 chrono::__skip_mandatory_whitespace(__input);
555 __rule.__from = chrono::__parse_year(__input);
556 chrono::__skip_mandatory_whitespace(__input);
557 __rule.__to = chrono::__parse_to(__input, __rule.__from);
558 chrono::__skip_mandatory_whitespace(__input);
559 chrono::__matches(__input, '-');
560 chrono::__skip_mandatory_whitespace(__input);
561 __rule.__in = chrono::__parse_month(__input);
562 chrono::__skip_mandatory_whitespace(__input);
563 __rule.__on = chrono::__parse_on(__input);
564 chrono::__skip_mandatory_whitespace(__input);
565 __rule.__at = __parse_at(__input);
566 chrono::__skip_mandatory_whitespace(__input);
567 __rule.__save = __parse_save(__input);
568 chrono::__skip_mandatory_whitespace(__input);
569 __rule.__letters = chrono::__parse_letters(__input);
570 chrono::__skip_line(__input);
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);
577 chrono::__skip_mandatory_whitespace(__input);
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() == '-');
589 static void __parse_link(tzdb& __tzdb, istream& __input) {
590 chrono::__skip_mandatory_whitespace(__input);
591 string __target = chrono::__parse_string(__input);
592 chrono::__skip_mandatory_whitespace(__input);
593 string __name = chrono::__parse_string(__input);
594 chrono::__skip_line(__input);
599 static void __parse_tzdata(tzdb& __db, __tz::__rules_storage_type& __rules, istream& __input) {
601 int __c = std::tolower(__input.get());
613 chrono::__skip_line(__input);
617 chrono::__skip(__input, "ule");
618 chrono::__parse_rule(__db, __rules, __input);
622 chrono::__skip(__input, "one");
623 chrono::__parse_zone(__db, __rules, __input);
627 chrono::__skip(__input, "ink");
628 chrono::__parse_link(__db, __input);
637 static void __parse_leap_seconds(vector<leap_second>& __leap_seconds, istream&& __input) {
649 switch (__input.peek()) {
656 __input.get();
660 chrono::__skip_line(__input);
664 sys_seconds __date = sys_seconds{seconds{chrono::__parse_integral(__input, false)}} - __offset;
665 chrono::__skip_mandatory_whitespace(__input);
666 seconds __value{chrono::__parse_integral(__input, false)};
667 chrono::__skip_line(__input);