1use super::*;
6use crate::fieldsets::enums::*;
7use crate::provider::{neo::*, time_zones::tz, *};
8use icu_calendar::types::{DayOfMonth, DayOfYear, MonthInfo, RataDie, Weekday, YearInfo};
9use icu_provider::marker::NeverMarker;
10use icu_time::{
11 zone::{UtcOffset, ZoneNameTimestamp},
12 Hour, Minute, Nanosecond, Second, TimeZone,
13};
14
15impl UnstableSealed for DateFieldSet {}
16
17impl DateTimeNamesMarker for DateFieldSet {
18 type YearNames = datetime_marker_helper!(@names/year, yes);
19 type MonthNames = datetime_marker_helper!(@names/month, yes);
20 type WeekdayNames = datetime_marker_helper!(@names/weekday, yes);
21 type DayPeriodNames = datetime_marker_helper!(@names/dayperiod,);
22 type ZoneEssentials = datetime_marker_helper!(@names/zone/essentials,);
23 type ZoneLocations = datetime_marker_helper!(@names/zone/locations,);
24 type ZoneLocationsRoot = datetime_marker_helper!(@names/zone/locations_root,);
25 type ZoneExemplars = datetime_marker_helper!(@names/zone/exemplars,);
26 type ZoneExemplarsRoot = datetime_marker_helper!(@names/zone/exemplars_root,);
27 type ZoneGenericLong = datetime_marker_helper!(@names/zone/generic_long,);
28 type ZoneGenericShort = datetime_marker_helper!(@names/zone/generic_short,);
29 type ZoneStandardLong = datetime_marker_helper!(@names/zone/standard_long,);
30 type ZoneSpecificLong = datetime_marker_helper!(@names/zone/specific_long,);
31 type ZoneSpecificShort = datetime_marker_helper!(@names/zone/specific_short,);
32 type MetazoneLookup = datetime_marker_helper!(@names/zone/metazone_periods,);
33}
34
35impl DateInputMarkers for DateFieldSet {
36 type YearInput = datetime_marker_helper!(@input/year, yes);
37 type MonthInput = datetime_marker_helper!(@input/month, yes);
38 type DayOfMonthInput = datetime_marker_helper!(@input/day_of_month, yes);
39 type DayOfYearInput = datetime_marker_helper!(@input/day_of_year, yes);
40 type RataDieInput = datetime_marker_helper!(@input/rata_die, yes);
41 type DayOfWeekInput = datetime_marker_helper!(@input/day_of_week, yes);
42}
43
44impl<C: CldrCalendar> TypedDateDataMarkers<C> for DateFieldSet {
45 type DateSkeletonPatternsV1 = datetime_marker_helper!(@dates/typed, yes);
46 type YearNamesV1 = datetime_marker_helper!(@years/typed, yes);
47 type MonthNamesV1 = datetime_marker_helper!(@months/typed, yes);
48 type WeekdayNamesV1 = datetime_marker_helper!(@weekdays, yes);
49}
50
51impl DateDataMarkers for DateFieldSet {
52 type Skel = datetime_marker_helper!(@calmarkers, yes);
53 type Year = datetime_marker_helper!(@calmarkers, yes);
54 type Month = datetime_marker_helper!(@calmarkers, yes);
55 type WeekdayNamesV1 = datetime_marker_helper!(@weekdays, yes);
56}
57
58impl DateTimeMarkers for DateFieldSet {
59 type D = Self;
60 type T = ();
61 type Z = ();
62 type GluePatternV1 = datetime_marker_helper!(@glue,);
63}
64
65impl UnstableSealed for CalendarPeriodFieldSet {}
66
67impl DateTimeNamesMarker for CalendarPeriodFieldSet {
68 type YearNames = datetime_marker_helper!(@names/year, yes);
69 type MonthNames = datetime_marker_helper!(@names/month, yes);
70 type WeekdayNames = datetime_marker_helper!(@names/weekday,);
71 type DayPeriodNames = datetime_marker_helper!(@names/dayperiod,);
72 type ZoneEssentials = datetime_marker_helper!(@names/zone/essentials,);
73 type ZoneLocations = datetime_marker_helper!(@names/zone/locations,);
74 type ZoneLocationsRoot = datetime_marker_helper!(@names/zone/locations_root,);
75 type ZoneExemplars = datetime_marker_helper!(@names/zone/exemplars,);
76 type ZoneExemplarsRoot = datetime_marker_helper!(@names/zone/exemplars_root,);
77 type ZoneGenericLong = datetime_marker_helper!(@names/zone/generic_long,);
78 type ZoneGenericShort = datetime_marker_helper!(@names/zone/generic_short,);
79 type ZoneStandardLong = datetime_marker_helper!(@names/zone/standard_long,);
80 type ZoneSpecificLong = datetime_marker_helper!(@names/zone/specific_long,);
81 type ZoneSpecificShort = datetime_marker_helper!(@names/zone/specific_short,);
82 type MetazoneLookup = datetime_marker_helper!(@names/zone/metazone_periods,);
83}
84
85impl DateInputMarkers for CalendarPeriodFieldSet {
86 type YearInput = datetime_marker_helper!(@input/year, yes);
87 type MonthInput = datetime_marker_helper!(@input/month, yes);
88 type DayOfMonthInput = datetime_marker_helper!(@input/day_of_month,);
89 type DayOfWeekInput = datetime_marker_helper!(@input/day_of_week,);
90 type DayOfYearInput = datetime_marker_helper!(@input/day_of_year,);
91 type RataDieInput = datetime_marker_helper!(@input/rata_die,);
92}
93
94impl<C: CldrCalendar> TypedDateDataMarkers<C> for CalendarPeriodFieldSet {
95 type DateSkeletonPatternsV1 = datetime_marker_helper!(@dates/typed, yes);
96 type YearNamesV1 = datetime_marker_helper!(@years/typed, yes);
97 type MonthNamesV1 = datetime_marker_helper!(@months/typed, yes);
98 type WeekdayNamesV1 = datetime_marker_helper!(@weekdays,);
99}
100
101impl DateDataMarkers for CalendarPeriodFieldSet {
102 type Skel = datetime_marker_helper!(@calmarkers, yes);
103 type Year = datetime_marker_helper!(@calmarkers, yes);
104 type Month = datetime_marker_helper!(@calmarkers, yes);
105 type WeekdayNamesV1 = datetime_marker_helper!(@weekdays,);
106}
107
108impl DateTimeMarkers for CalendarPeriodFieldSet {
109 type D = Self;
110 type T = ();
111 type Z = ();
112 type GluePatternV1 = datetime_marker_helper!(@glue,);
113}
114
115impl UnstableSealed for TimeFieldSet {}
116
117impl DateTimeNamesMarker for TimeFieldSet {
118 type YearNames = datetime_marker_helper!(@names/year,);
119 type MonthNames = datetime_marker_helper!(@names/month,);
120 type WeekdayNames = datetime_marker_helper!(@names/weekday,);
121 type DayPeriodNames = datetime_marker_helper!(@names/dayperiod, yes);
122 type ZoneEssentials = datetime_marker_helper!(@names/zone/essentials,);
123 type ZoneLocations = datetime_marker_helper!(@names/zone/locations,);
124 type ZoneLocationsRoot = datetime_marker_helper!(@names/zone/locations_root,);
125 type ZoneExemplars = datetime_marker_helper!(@names/zone/exemplars,);
126 type ZoneExemplarsRoot = datetime_marker_helper!(@names/zone/exemplars_root,);
127 type ZoneGenericLong = datetime_marker_helper!(@names/zone/generic_long,);
128 type ZoneGenericShort = datetime_marker_helper!(@names/zone/generic_short,);
129 type ZoneStandardLong = datetime_marker_helper!(@names/zone/standard_long,);
130 type ZoneSpecificLong = datetime_marker_helper!(@names/zone/specific_long,);
131 type ZoneSpecificShort = datetime_marker_helper!(@names/zone/specific_short,);
132 type MetazoneLookup = datetime_marker_helper!(@names/zone/metazone_periods,);
133}
134
135impl TimeMarkers for TimeFieldSet {
136 type DayPeriodNamesV1 = datetime_marker_helper!(@dayperiods, yes);
137 type TimeSkeletonPatternsV1 = datetime_marker_helper!(@times, yes);
138 type HourInput = datetime_marker_helper!(@input/hour, yes);
139 type MinuteInput = datetime_marker_helper!(@input/minute, yes);
140 type SecondInput = datetime_marker_helper!(@input/second, yes);
141 type NanosecondInput = datetime_marker_helper!(@input/Nanosecond, yes);
142}
143
144impl DateTimeMarkers for TimeFieldSet {
145 type D = ();
146 type T = Self;
147 type Z = ();
148 type GluePatternV1 = datetime_marker_helper!(@glue,);
149}
150
151impl UnstableSealed for DateAndTimeFieldSet {}
152
153impl DateTimeNamesMarker for DateAndTimeFieldSet {
154 type YearNames = datetime_marker_helper!(@names/year, yes);
155 type MonthNames = datetime_marker_helper!(@names/month, yes);
156 type WeekdayNames = datetime_marker_helper!(@names/weekday, yes);
157 type DayPeriodNames = datetime_marker_helper!(@names/dayperiod, yes);
158 type ZoneEssentials = datetime_marker_helper!(@names/zone/essentials,);
159 type ZoneLocations = datetime_marker_helper!(@names/zone/locations,);
160 type ZoneLocationsRoot = datetime_marker_helper!(@names/zone/locations_root,);
161 type ZoneExemplars = datetime_marker_helper!(@names/zone/exemplars,);
162 type ZoneExemplarsRoot = datetime_marker_helper!(@names/zone/exemplars_root,);
163 type ZoneGenericLong = datetime_marker_helper!(@names/zone/generic_long,);
164 type ZoneGenericShort = datetime_marker_helper!(@names/zone/generic_short,);
165 type ZoneStandardLong = datetime_marker_helper!(@names/zone/standard_long,);
166 type ZoneSpecificLong = datetime_marker_helper!(@names/zone/specific_long,);
167 type ZoneSpecificShort = datetime_marker_helper!(@names/zone/specific_short,);
168 type MetazoneLookup = datetime_marker_helper!(@names/zone/metazone_periods,);
169}
170
171impl DateTimeMarkers for DateAndTimeFieldSet {
172 type D = DateFieldSet;
173 type T = TimeFieldSet;
174 type Z = ();
175 type GluePatternV1 = datetime_marker_helper!(@glue, yes);
176}
177
178impl UnstableSealed for ZoneFieldSet {}
179
180impl DateTimeNamesMarker for ZoneFieldSet {
181 type YearNames = datetime_marker_helper!(@names/year,);
182 type MonthNames = datetime_marker_helper!(@names/month,);
183 type WeekdayNames = datetime_marker_helper!(@names/weekday,);
184 type DayPeriodNames = datetime_marker_helper!(@names/dayperiod,);
185 type ZoneEssentials = datetime_marker_helper!(@names/zone/essentials, yes);
186 type ZoneLocations = datetime_marker_helper!(@names/zone/locations, yes);
187 type ZoneLocationsRoot = datetime_marker_helper!(@names/zone/locations_root, yes);
188 type ZoneExemplars = datetime_marker_helper!(@names/zone/exemplars, yes);
189 type ZoneExemplarsRoot = datetime_marker_helper!(@names/zone/exemplars_root, yes);
190 type ZoneGenericLong = datetime_marker_helper!(@names/zone/generic_long, yes);
191 type ZoneStandardLong = datetime_marker_helper!(@names/zone/standard_long, yes);
192 type ZoneGenericShort = datetime_marker_helper!(@names/zone/generic_short, yes);
193 type ZoneSpecificLong = datetime_marker_helper!(@names/zone/specific_long, yes);
194 type ZoneSpecificShort = datetime_marker_helper!(@names/zone/specific_short, yes);
195 type MetazoneLookup = datetime_marker_helper!(@names/zone/metazone_periods, yes);
196}
197
198impl ZoneMarkers for ZoneFieldSet {
199 type TimeZoneIdInput = datetime_marker_helper!(@input/timezone/id, yes);
200 type TimeZoneOffsetInput = datetime_marker_helper!(@input/timezone/offset, yes);
201 type TimeZoneNameTimestampInput = datetime_marker_helper!(@input/timezone/timestamp, yes);
202 type EssentialsV1 = datetime_marker_helper!(@data/zone/essentials, yes);
203 type LocationsV1 = datetime_marker_helper!(@data/zone/locations, yes);
204 type LocationsRootV1 = datetime_marker_helper!(@data/zone/locations_root, yes);
205 type ExemplarCitiesV1 = datetime_marker_helper!(@data/zone/exemplars, yes);
206 type ExemplarCitiesRootV1 = datetime_marker_helper!(@data/zone/exemplars_root, yes);
207 type GenericLongV1 = datetime_marker_helper!(@data/zone/generic_long, yes);
208 type GenericShortV1 = datetime_marker_helper!(@data/zone/generic_short, yes);
209 type StandardLongV1 = datetime_marker_helper!(@data/zone/standard_long, yes);
210 type SpecificLongV1 = datetime_marker_helper!(@data/zone/specific_long, yes);
211 type SpecificShortV1 = datetime_marker_helper!(@data/zone/specific_short, yes);
212 type MetazonePeriodV1 = datetime_marker_helper!(@data/zone/metazone_periods, yes);
213}
214
215impl DateTimeMarkers for ZoneFieldSet {
216 type D = ();
217 type T = ();
218 type Z = Self;
219 type GluePatternV1 = datetime_marker_helper!(@glue,);
220}
221
222impl UnstableSealed for CompositeDateTimeFieldSet {}
223
224impl DateTimeNamesMarker for CompositeDateTimeFieldSet {
225 type YearNames = datetime_marker_helper!(@names/year, yes);
226 type MonthNames = datetime_marker_helper!(@names/month, yes);
227 type WeekdayNames = datetime_marker_helper!(@names/weekday, yes);
228 type DayPeriodNames = datetime_marker_helper!(@names/dayperiod, yes);
229 type ZoneEssentials = datetime_marker_helper!(@names/zone/essentials,);
230 type ZoneLocations = datetime_marker_helper!(@names/zone/locations,);
231 type ZoneLocationsRoot = datetime_marker_helper!(@names/zone/locations_root,);
232 type ZoneExemplars = datetime_marker_helper!(@names/zone/exemplars,);
233 type ZoneExemplarsRoot = datetime_marker_helper!(@names/zone/exemplars_root,);
234 type ZoneGenericLong = datetime_marker_helper!(@names/zone/generic_long,);
235 type ZoneGenericShort = datetime_marker_helper!(@names/zone/generic_short,);
236 type ZoneStandardLong = datetime_marker_helper!(@names/zone/standard_long,);
237 type ZoneSpecificLong = datetime_marker_helper!(@names/zone/specific_long,);
238 type ZoneSpecificShort = datetime_marker_helper!(@names/zone/specific_short,);
239 type MetazoneLookup = datetime_marker_helper!(@names/zone/metazone_periods,);
240}
241
242impl DateTimeMarkers for CompositeDateTimeFieldSet {
243 type D = DateFieldSet;
244 type T = TimeFieldSet;
245 type Z = ();
246 type GluePatternV1 = datetime_marker_helper!(@glue, yes);
247}
248
249impl UnstableSealed for CompositeFieldSet {}
250
251impl DateTimeNamesMarker for CompositeFieldSet {
252 type YearNames = datetime_marker_helper!(@names/year, yes);
253 type MonthNames = datetime_marker_helper!(@names/month, yes);
254 type WeekdayNames = datetime_marker_helper!(@names/weekday, yes);
255 type DayPeriodNames = datetime_marker_helper!(@names/dayperiod, yes);
256 type ZoneEssentials = datetime_marker_helper!(@names/zone/essentials, yes);
257 type ZoneLocations = datetime_marker_helper!(@names/zone/locations, yes);
258 type ZoneLocationsRoot = datetime_marker_helper!(@names/zone/locations_root, yes);
259 type ZoneExemplars = datetime_marker_helper!(@names/zone/exemplars, yes);
260 type ZoneExemplarsRoot = datetime_marker_helper!(@names/zone/exemplars_root, yes);
261 type ZoneGenericLong = datetime_marker_helper!(@names/zone/generic_long, yes);
262 type ZoneGenericShort = datetime_marker_helper!(@names/zone/generic_short, yes);
263 type ZoneStandardLong = datetime_marker_helper!(@names/zone/standard_long, yes);
264 type ZoneSpecificLong = datetime_marker_helper!(@names/zone/specific_long, yes);
265 type ZoneSpecificShort = datetime_marker_helper!(@names/zone/specific_short, yes);
266 type MetazoneLookup = datetime_marker_helper!(@names/zone/metazone_periods, yes);
267}
268
269impl DateTimeMarkers for CompositeFieldSet {
270 type D = DateFieldSet;
271 type T = TimeFieldSet;
272 type Z = ZoneFieldSet;
273 type GluePatternV1 = datetime_marker_helper!(@glue, yes);
274}