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