30 #if !defined(_MSC_VER) || (_MSC_VER >= 1900) 58 #if defined(_MSC_VER) && (_MSC_VER < 1900) 59 pair() : month_day_(
date::jan / 1), weekday_(0U) {}
62 : month_day_(month_day), weekday_(weekday) {}
69 enum Type {
month_day, month_last_dow, lteq, gteq};
73 #if !defined(_MSC_VER) || (_MSC_VER >= 1900) 81 pair month_day_weekday_;
83 #if !defined(_MSC_VER) || (_MSC_VER >= 1900) 91 #endif // !defined(_MSC_VER) || (_MSC_VER >= 1900) 95 U& operator=(
const pair& x);
98 std::chrono::hours h_{0};
99 std::chrono::minutes m_{0};
100 std::chrono::seconds s_{0};
115 to_sys(
date::year y, std::chrono::seconds offset, std::chrono::seconds save)
const;
120 std::chrono::seconds offset, std::chrono::minutes prev_save)
const;
155 std::chrono::minutes save_{0};
160 explicit Rule(
const std::string& s);
163 const std::string&
name()
const {
return name_;}
164 const std::string&
abbrev()
const {
return abbrev_;}
169 const std::chrono::minutes&
save()
const {
return save_;}
171 static void split_overlaps(std::vector<Rule>& rules);
189 static void split_overlaps(std::vector<Rule>& rules, std::size_t i, std::size_t& e);
190 static bool overlaps(
const Rule& x,
const Rule& y);
191 static void split(std::vector<Rule>& rules, std::size_t i, std::size_t k,
222 enum tag {has_rule, has_save, is_empty};
227 #if !defined(_MSC_VER) || (_MSC_VER >= 1900) 239 U& operator=(
const U&) =
delete;
248 std::chrono::minutes initial_save_{};
263 std::int32_t tt_gmtoff;
264 unsigned char tt_isdst;
265 unsigned char tt_abbrind;
266 unsigned char pad[2];
269 static_assert(
sizeof(ttinfo) == 8,
"");
271 struct expanded_ttinfo
273 std::chrono::seconds offset;
281 const expanded_ttinfo* info;
283 transition(
sys_seconds tp,
const expanded_ttinfo* i =
nullptr)
290 operator<<(std::ostream& os,
const transition& t)
292 using namespace date;
294 using date::operator<<;
295 os << t.timepoint <<
"Z ";
296 if (t.info->offset >= seconds{0})
299 if (t.info->is_dst > 0)
303 os << t.info->abbrev;
308 #endif // USE_OS_TZDB 314 #if defined(_MSC_VER) && (_MSC_VER < 1900) 318 #endif // TZ_PRIVATE_H
MonthDayTime until_date_
Definition: tz_private.h:244
const MonthDayTime & mdt() const
Definition: tz_private.h:166
std::string format_
Definition: tz_private.h:242
bool operator<=(const Rule &x, const Rule &y)
Definition: tz_private.h:197
std::chrono::minutes save_
Definition: tz_private.h:234
sys_time< std::chrono::seconds > sys_seconds
Definition: date.h:164
U(const U &)
Definition: tz_private.h:238
Definition: tz_private.h:228
tag
Definition: tz_private.h:222
sys_time< days > sys_days
Definition: date.h:163
sys_seconds until_utc_
Definition: tz_private.h:245
~U()
Definition: tz_private.h:236
bool operator>(const Rule &x, const Rule &y)
Definition: tz_private.h:196
bool operator>=(const Rule &x, const Rule &y)
Definition: tz_private.h:198
local_seconds until_std_
Definition: tz_private.h:246
std::string initial_abbrev_
Definition: tz_private.h:249
static CONSTCD11 year min() NOEXCEPT
Definition: date.h:1560
std::string rule_
Definition: tz_private.h:233
tz zone() const
Definition: tz_private.h:110
tz
Definition: tz_private.h:45
CONSTDATA date::month jan
Definition: date.h:1836
CONSTCD11 time_of_day< std::chrono::duration< Rep, Period > > make_time(const std::chrono::duration< Rep, Period > &d)
Definition: date.h:4264
bool operator<(const Rule &x, const Rule &y)
Definition: tz.cpp:1164
bool operator==(const Rule &x, const Rule &y)
Definition: tz.cpp:1155
const std::string & abbrev() const
Definition: tz_private.h:164
const date::year & ending_year() const
Definition: tz_private.h:168
Definition: tz_private.h:220
local_time< std::chrono::seconds > local_seconds
Definition: date.h:171
local_seconds until_loc_
Definition: tz_private.h:247
std::istream & operator>>(std::istream &is, MonthDayTime &x)
Definition: tz.cpp:946
U()
Definition: tz_private.h:237
static CONSTCD11 year max() NOEXCEPT
Definition: date.h:1568
const date::year & starting_year() const
Definition: tz_private.h:167
const std::string & name() const
Definition: tz_private.h:163
const std::chrono::minutes & save() const
Definition: tz_private.h:169
std::ostream & operator<<(std::ostream &os, const MonthDayTime &x)
Definition: tz.cpp:1040
std::chrono::seconds gmtoff_
Definition: tz_private.h:224
Definition: tz_private.h:148
Definition: tz_private.h:53
bool operator!=(const Rule &x, const Rule &y)
Definition: tz_private.h:195