-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
merge 2.3.0 into master #115
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ZoneRegistrar is a higher level abtraction above the ZoneRegistry (array of ZoneInfo* pointers) providing find/search functionality, so it belongs in ./ace_time/. The raw data (the registry) is stored in PROGMEM memory, and accessed through the ZoneRegistryBroker, which belongs in ./zoneinfo/.
… with ZonedDateTime
…6_t) minutes, left over from refactoring to (int32_t) seconds
…DateTuple.h and DateTupleTest.ino
…ll DST transitions in TZDB
* move basic::ZoneXxx, extended::ZoneXxx, complete::ZoneXxx to infos.h * move basic::ZoneXxxBroker, extended::ZoneXxxBroker, complete::ZoneXxxBroker to brokers.h * regenearte zonedb*, to be dependent only on `zoneinfo/infos.h` * update src/ace_time so that they are mostly dependent only on `zoneinfo/brokers.h` * unfortunately, many classes and files still have dependencies to `zoneinfo/infos.h` * rename `ZoneInfo.h` to `ZoneInfoMid.h`, in preparation for `ZoneInfoLow.h` * rename `zoneinfo` namespace to `zoneinfomid` in preparation for `zoneinfolow` * rename `ZoneInfoHires.h` to `ZoneInfoHigh.h` for readability * rename `zoneinfohires` namepsace to `zoneinfohigh` for readability * rename `BrokersHires.h` to `BrokersHigh.h` for readability
…saves ~50 bytes on AVR
… returned by pgm_read_byte()
…lashStringHelper*'
…arnings on STM32duino
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Major Changes in v2.3: Add
CompleteZoneProcessor
,CompleteZoneManager
,and the
zonedbc
database to support all timezones, for all transitions definedin the IANA TZ database (
[1844,2087])
, and extending the validity of timezonecalculations from
[2000,10000)
to[0001,10000)
.Migration: MIGRATING.md
Changelog
to illustrate how to use a custom registry.
BasicZoneManager
to detect gaps.AceTimeValidation/validation
tests to pass.ZoneRule.letter
inBasicZoneProcessor
.zonedb
which enables 2 more zones:/Africa/Windhoek
,and
America/Belize
zonedb
by 150-200 bytes.BrokerFactory
toZoneInfoStore
for better self-documentation.not be affected.
ZoneContext
ZoneContext
,letters[]
,fragments[]
into PROGMEM.zonedbXxx::kTzDatabaseVersion
string into PROGMEM, and changetype to
const __FlashString*
.ZoneContextBroker
aroundZoneContext
, for consistencywith all other zoneinfo data structures. Merge
ZoneContext.h
intoZoneInfo.h
.startYearAccurate
anduntilYearAccurate
toZoneContext
whichdefine the interval of accurate transitions.
200-350 bytes of RAM on ESP8266.
zoneinfolow
,zoneinfomid
,zoneinfohigh
, supporting low, middle, and high timeresolutions.
zoneinfohigh
was created to supportCompleteZoneProcessor
,CompleteZoneManager
and thezonedbc
database.zoneinfomid
initially used inExtendedZoneProcessor
, but nowunused.
zoneinfo/ZonePolicy.h
intozoneinfo/ZoneInfo.h
.zoneinfo/ZoneInfo.inc
into templates, withsynthetic
typename S
selector. MergeZoneInfo.inc
intoZoneInfo.h
.CompleteZoneManager
,CompleteZoneProcessor
, andzonedbc
databasetimes offsets from UTC which require one-second resolution instead of
one-minute resolution. This requires changing many internal variables
from
int16_t
toint32_t
.TimeOffset
to support one-second resolution usingint32_t
.BasicZone::stdOffseMinutes()
toBasicZone::stdOffset()
which returns a
TimeOffset
object.ExtendedZone::stdOffseMinutes()
toExtendedZone::stdOffset()
which returns aTimeOffset
object.BasicZoneProcessor
using one-minute resolution because itsalgorithm has an inherent limitations which cannot handle many
timezones before 1972, so no need to convert
int16_t
toint32_t
fields.
CompleteZoneManager
,CompleteZoneProcessor
,CompleteZoneProcessorCache
,CompleteZone
zonedbc
database which is valid from[1800,10000)
, whichincludes all transitions in the TZDB since the first transition is
1844.
scope=complete
to access thezonedbc
database.ZoneContext.startYear()
andZoneContext.untilYear()
LocalDate::kMinYear
andLocalDate::kMaxYear
, mostlyfor formatting reasons (prevent negative
years, and years with more than 4 digits).
entire
int16_t
range.startYearAccurate()
anduntilYearAccurate()
limits.policies, the
startYearAccureate()
anduntilYearAccurate()
allowsfor graceful degradation of classes like
ZonedDateTime
for yearsoutside of this accuracy range.
src/tzonedb*
directoriessrc/zonedb*testing
for consistency with other acetime libraries