Skip to content

Commit

Permalink
Add caching for the rest of the islamic calendars (‫عید مبارک!!‬) (#4785
Browse files Browse the repository at this point in the history
)

Fixes #3933

Uses work from #4770 on the
remaining 3 calendars


عید مبارک!!
  • Loading branch information
Manishearth authored Apr 19, 2024
1 parent 827128d commit cb7e915
Show file tree
Hide file tree
Showing 22 changed files with 1,353 additions and 195 deletions.
4 changes: 2 additions & 2 deletions components/calendar/benches/convert.rs
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ fn convert_benches(c: &mut Criterion) {
bench_calendar(
&mut group,
"calendar/islamic/civil",
icu::calendar::islamic::IslamicCivil::new_always_calculating(),
icu::calendar::islamic::IslamicCivil::new(),
);

#[cfg(feature = "bench")]
Expand All @@ -103,7 +103,7 @@ fn convert_benches(c: &mut Criterion) {
bench_calendar(
&mut group,
"calendar/islamic/tabular",
icu::calendar::islamic::IslamicTabular::new_always_calculating(),
icu::calendar::islamic::IslamicTabular::new(),
);

group.finish();
Expand Down
8 changes: 4 additions & 4 deletions components/calendar/benches/date.rs
Original file line number Diff line number Diff line change
Expand Up @@ -222,13 +222,13 @@ fn date_benches(c: &mut Criterion) {
&mut group,
"calendar/islamic/civil",
&fxs,
icu::calendar::islamic::IslamicCivil::new_always_calculating(),
icu::calendar::islamic::IslamicCivil::new(),
|y, m, d| {
Date::try_new_islamic_civil_date_with_calendar(
y,
m,
d,
icu::calendar::islamic::IslamicCivil::new_always_calculating(),
icu::calendar::islamic::IslamicCivil::new(),
)
.unwrap()
},
Expand All @@ -239,13 +239,13 @@ fn date_benches(c: &mut Criterion) {
&mut group,
"calendar/islamic/tabular",
&fxs,
icu::calendar::islamic::IslamicTabular::new_always_calculating(),
icu::calendar::islamic::IslamicTabular::new(),
|y, m, d| {
Date::try_new_islamic_tabular_date_with_calendar(
y,
m,
d,
icu::calendar::islamic::IslamicTabular::new_always_calculating(),
icu::calendar::islamic::IslamicTabular::new(),
)
.unwrap()
},
Expand Down
8 changes: 4 additions & 4 deletions components/calendar/benches/datetime.rs
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ fn datetime_benches(c: &mut Criterion) {
&mut group,
"calendar/islamic/civil",
&fxs,
icu::calendar::islamic::IslamicCivil::new_always_calculating(),
icu::calendar::islamic::IslamicCivil::new(),
|y, m, d, h, min, s| {
DateTime::try_new_islamic_civil_datetime_with_calendar(
y,
Expand All @@ -195,7 +195,7 @@ fn datetime_benches(c: &mut Criterion) {
h,
min,
s,
icu::calendar::islamic::IslamicCivil::new_always_calculating(),
icu::calendar::islamic::IslamicCivil::new(),
)
.unwrap()
},
Expand All @@ -206,7 +206,7 @@ fn datetime_benches(c: &mut Criterion) {
&mut group,
"calendar/islamic/tabular",
&fxs,
icu::calendar::islamic::IslamicTabular::new_always_calculating(),
icu::calendar::islamic::IslamicTabular::new(),
|y, m, d, h, min, s| {
DateTime::try_new_islamic_tabular_datetime_with_calendar(
y,
Expand All @@ -215,7 +215,7 @@ fn datetime_benches(c: &mut Criterion) {
h,
min,
s,
icu::calendar::islamic::IslamicTabular::new_always_calculating(),
icu::calendar::islamic::IslamicTabular::new(),
)
.unwrap()
},
Expand Down
32 changes: 21 additions & 11 deletions components/calendar/src/any_calendar.rs
Original file line number Diff line number Diff line change
Expand Up @@ -590,7 +590,9 @@ impl AnyCalendar {
AnyCalendar::IslamicObservational(IslamicObservational::new())
}
AnyCalendarKind::IslamicTabular => AnyCalendar::IslamicTabular(IslamicTabular),
AnyCalendarKind::IslamicUmmAlQura => AnyCalendar::IslamicUmmAlQura(IslamicUmmAlQura),
AnyCalendarKind::IslamicUmmAlQura => {
AnyCalendar::IslamicUmmAlQura(IslamicUmmAlQura::new())
}
AnyCalendarKind::Iso => AnyCalendar::Iso(Iso),
AnyCalendarKind::Japanese => AnyCalendar::Japanese(Japanese::new()),
AnyCalendarKind::JapaneseExtended => {
Expand Down Expand Up @@ -632,7 +634,9 @@ impl AnyCalendar {
IslamicObservational::try_new_with_any_provider(provider)?,
),
AnyCalendarKind::IslamicTabular => AnyCalendar::IslamicTabular(IslamicTabular),
AnyCalendarKind::IslamicUmmAlQura => AnyCalendar::IslamicUmmAlQura(IslamicUmmAlQura),
AnyCalendarKind::IslamicUmmAlQura => AnyCalendar::IslamicUmmAlQura(
IslamicUmmAlQura::try_new_with_any_provider(provider)?,
),
AnyCalendarKind::Iso => AnyCalendar::Iso(Iso),
AnyCalendarKind::Japanese => {
AnyCalendar::Japanese(Japanese::try_new_with_any_provider(provider)?)
Expand Down Expand Up @@ -677,7 +681,9 @@ impl AnyCalendar {
IslamicObservational::try_new_with_buffer_provider(provider)?,
),
AnyCalendarKind::IslamicTabular => AnyCalendar::IslamicTabular(IslamicTabular),
AnyCalendarKind::IslamicUmmAlQura => AnyCalendar::IslamicUmmAlQura(IslamicUmmAlQura),
AnyCalendarKind::IslamicUmmAlQura => AnyCalendar::IslamicUmmAlQura(
IslamicUmmAlQura::try_new_with_buffer_provider(provider)?,
),
AnyCalendarKind::Iso => AnyCalendar::Iso(Iso),
AnyCalendarKind::Japanese => {
AnyCalendar::Japanese(Japanese::try_new_with_buffer_provider(provider)?)
Expand All @@ -698,6 +704,7 @@ impl AnyCalendar {
+ DataProvider<crate::provider::ChineseCacheV1Marker>
+ DataProvider<crate::provider::DangiCacheV1Marker>
+ DataProvider<crate::provider::IslamicObservationalCacheV1Marker>
+ DataProvider<crate::provider::IslamicUmmAlQuraCacheV1Marker>
+ ?Sized,
{
Ok(match kind {
Expand All @@ -719,7 +726,9 @@ impl AnyCalendar {
AnyCalendar::IslamicObservational(IslamicObservational::try_new_unstable(provider)?)
}
AnyCalendarKind::IslamicTabular => AnyCalendar::IslamicTabular(IslamicTabular),
AnyCalendarKind::IslamicUmmAlQura => AnyCalendar::IslamicUmmAlQura(IslamicUmmAlQura),
AnyCalendarKind::IslamicUmmAlQura => {
AnyCalendar::IslamicUmmAlQura(IslamicUmmAlQura::try_new_unstable(provider)?)
}
AnyCalendarKind::Iso => AnyCalendar::Iso(Iso),
AnyCalendarKind::Japanese => {
AnyCalendar::Japanese(Japanese::try_new_unstable(provider)?)
Expand Down Expand Up @@ -771,6 +780,7 @@ impl AnyCalendar {
+ DataProvider<crate::provider::ChineseCacheV1Marker>
+ DataProvider<crate::provider::DangiCacheV1Marker>
+ DataProvider<crate::provider::IslamicObservationalCacheV1Marker>
+ DataProvider<crate::provider::IslamicUmmAlQuraCacheV1Marker>
+ ?Sized,
{
let kind = AnyCalendarKind::from_data_locale_with_fallback(locale);
Expand Down Expand Up @@ -1042,7 +1052,7 @@ impl AnyCalendarKind {
AnyCalendarKind::IslamicCivil => IslamicCivil.debug_name(),
AnyCalendarKind::IslamicObservational => IslamicObservational::DEBUG_NAME,
AnyCalendarKind::IslamicTabular => IslamicTabular.debug_name(),
AnyCalendarKind::IslamicUmmAlQura => IslamicUmmAlQura.debug_name(),
AnyCalendarKind::IslamicUmmAlQura => IslamicUmmAlQura::DEBUG_NAME,
AnyCalendarKind::Iso => Iso.debug_name(),
AnyCalendarKind::Japanese => Japanese::DEBUG_NAME,
AnyCalendarKind::JapaneseExtended => JapaneseExtended::DEBUG_NAME,
Expand Down Expand Up @@ -1221,10 +1231,10 @@ impl IntoAnyCalendar for Indian {

impl IntoAnyCalendar for IslamicCivil {
fn to_any(self) -> AnyCalendar {
AnyCalendar::IslamicCivil(IslamicCivil)
AnyCalendar::IslamicCivil(self)
}
fn to_any_cloned(&self) -> AnyCalendar {
AnyCalendar::IslamicCivil(IslamicCivil)
AnyCalendar::IslamicCivil(*self)
}
fn date_to_any(&self, d: &Self::DateInner) -> AnyDateInner {
AnyDateInner::IslamicCivil(*d)
Expand All @@ -1245,10 +1255,10 @@ impl IntoAnyCalendar for IslamicObservational {

impl IntoAnyCalendar for IslamicTabular {
fn to_any(self) -> AnyCalendar {
AnyCalendar::IslamicTabular(IslamicTabular)
AnyCalendar::IslamicTabular(self)
}
fn to_any_cloned(&self) -> AnyCalendar {
AnyCalendar::IslamicTabular(IslamicTabular)
AnyCalendar::IslamicTabular(*self)
}
fn date_to_any(&self, d: &Self::DateInner) -> AnyDateInner {
AnyDateInner::IslamicTabular(*d)
Expand All @@ -1257,10 +1267,10 @@ impl IntoAnyCalendar for IslamicTabular {

impl IntoAnyCalendar for IslamicUmmAlQura {
fn to_any(self) -> AnyCalendar {
AnyCalendar::IslamicUmmAlQura(IslamicUmmAlQura)
AnyCalendar::IslamicUmmAlQura(self)
}
fn to_any_cloned(&self) -> AnyCalendar {
AnyCalendar::IslamicUmmAlQura(IslamicUmmAlQura)
AnyCalendar::IslamicUmmAlQura(self.clone())
}
fn date_to_any(&self, d: &Self::DateInner) -> AnyDateInner {
AnyDateInner::IslamicUmmAlQura(*d)
Expand Down
Loading

0 comments on commit cb7e915

Please sign in to comment.