From 6ace4000bf9127c43fe1ce4c5c49015e0467deaa Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Tue, 7 Dec 2021 08:40:06 -0500 Subject: LibJS+LibUnicode: Supply field type in CalendarPattern's for-each method Some callers will want different behavior depending on what field is being provided to the callback. --- Userland/Libraries/LibUnicode/DateTimeFormat.h | 36 ++++++++++++++++++-------- 1 file changed, 25 insertions(+), 11 deletions(-) (limited to 'Userland/Libraries/LibUnicode/DateTimeFormat.h') diff --git a/Userland/Libraries/LibUnicode/DateTimeFormat.h b/Userland/Libraries/LibUnicode/DateTimeFormat.h index 37209de79c..25c2453c85 100644 --- a/Userland/Libraries/LibUnicode/DateTimeFormat.h +++ b/Userland/Libraries/LibUnicode/DateTimeFormat.h @@ -31,20 +31,34 @@ enum class CalendarPatternStyle : u8 { }; struct CalendarPattern { + enum class Field { + Era, + Year, + Month, + Weekday, + Day, + DayPeriod, + Hour, + Minute, + Second, + FractionalSecondDigits, + TimeZoneName, + }; + template void for_each_calendar_field_zipped_with(CalendarPattern const& other, Callback&& callback) { - callback(era, other.era); - callback(year, other.year); - callback(month, other.month); - callback(weekday, other.weekday); - callback(day, other.day); - callback(day_period, other.day_period); - callback(hour, other.hour); - callback(minute, other.minute); - callback(second, other.second); - callback(fractional_second_digits, other.fractional_second_digits); - callback(time_zone_name, other.time_zone_name); + callback(era, other.era, Field::Era); + callback(year, other.year, Field::Year); + callback(month, other.month, Field::Month); + callback(weekday, other.weekday, Field::Weekday); + callback(day, other.day, Field::Day); + callback(day_period, other.day_period, Field::DayPeriod); + callback(hour, other.hour, Field::Hour); + callback(minute, other.minute, Field::Minute); + callback(second, other.second, Field::Second); + callback(fractional_second_digits, other.fractional_second_digits, Field::FractionalSecondDigits); + callback(time_zone_name, other.time_zone_name, Field::TimeZoneName); } String pattern {}; -- cgit v1.2.3