On Mon, 14 Jul 2025 at 16:52, Tomasz Kaminski <tkami...@redhat.com> wrote: > > > > On Mon, Jul 14, 2025 at 1:47 PM Jonathan Wakely <jwak...@redhat.com> wrote: >> >> On Mon, 14 Jul 2025 at 11:10, Jonathan Wakely <jwak...@redhat.com> wrote: >> > >> > On Mon, 14 Jul 2025 at 11:08, Björn Schäpers <g...@hazardy.de> wrote: >> > > >> > > Am 14.07.2025 um 10:20 schrieb Tomasz Kaminski: >> > > > >> > > > >> > > > On Tue, Jul 8, 2025 at 10:48 PM Björn Schäpers wrote: >> > > > + const auto raw_index = information.Bias / 60; >> > > > + >> > > > + // The bias added to the local time equals UTC. And >> > > > GMT+X corrosponds >> > > > + // to UTC-X, the sign is negated. Thus we can use the >> > > > hourly bias as >> > > > + // an index into an array. >> > > > + if (raw_index < 0 && raw_index >= -14) >> > > > + { >> > > > + static array<string_view, 14> table{ >> > > > + "Etc/GMT-1", "Etc/GMT-2", "Etc/GMT-3", >> > > > "Etc/GMT-4", >> > > > + "Etc/GMT-5", "Etc/GMT-6", "Etc/GMT-7", >> > > > "Etc/GMT-8", >> > > > + "Etc/GMT-9", "Etc/GMT-10", "Etc/GMT-11", >> > > > "Etc/GMT-12", >> > > > + "Etc/GMT-13", "Etc/GMT-14" >> > > > + }; >> > > > + return table[-raw_index - 1]; >> > > > + } >> > > > + else if (raw_index > 0 && raw_index <= 12) >> > > > + { >> > > > + static array<string_view, 14> table{ >> > > > >> > > > This table has size 14, but only 12 entries. I do not think there are >> > > > zones >> > > > past +12, >> > > > but I believe size and entries should match. >> > > >> > > That is totally correct and this a classic copy and paste error. >> > > @Jonathan: Should I correct that (and the other things you mentioned), >> > > or are >> > > you doing that? >> > >> > I can do it before I push it (probably later today). >> >> Hmm, we could reduce the number of guard variables for static >> constructors by using a single array here, and indexing into it with >> raw_index + 14. > > Or just made them constexpr.
Yes, then they'll be initiualized before we even need them, and there's no cost to check the static init guard variable. >> >> This code is only for Windows, so we're not talking constrained >> microcontrollers where we need to save resources. That can be in a >> follow-up commit, if we decide it's worth doing. >> >> > > >> > > > >> > > > + "Etc/GMT+1", "Etc/GMT+2", "Etc/GMT+3", >> > > > "Etc/GMT+4", >> > > > + "Etc/GMT+5", "Etc/GMT+6", "Etc/GMT+7", >> > > > "Etc/GMT+8", >> > > > + "Etc/GMT+9", "Etc/GMT+10", "Etc/GMT+11", >> > > > "Etc/GMT+12" >> > > > + }; >> > > > + return table[raw_index - 1]; >> > > > + } >> > > > + return {}; >> > > > + } >>