22
33## Table of Contents
44
5- * [ Migrating to v4.0.0] ( #MigratingToVersion400 )
6- * [ Migrating to v3.0.0] ( #MigratingToVersion300 )
7- * [ Migrating to v2.3.0] ( #MigratingToVersion220 )
8- * [ Migrating to v2.2.0] ( #MigratingToVersion220 )
9- * [ Migrating to v2.1.0] ( #MigratingToVersion210 )
10- * [ Migrating to v2.0.0] ( #MigratingToVersion200 )
11- * [ Migrating to v1.9.0] ( #MigratingToVersion190 )
12- * [ Migrating to v1.8.0] ( #MigratingToVersion180 )
13-
14- <a name =" MigratingToVersion400 " ></a >
5+ * [ Migrating to v4.1.0] ( #migrating-to-v410 )
6+ * [ Migrating to v4.0.0] ( #migrating-to-v400 )
7+ * [ Migrating to v3.0.0] ( #migrating-to-v300 )
8+ * [ Migrating to v2.3.0] ( #migrating-to-v230 )
9+ * [ Migrating to v2.2.0] ( #migrating-to-v220 )
10+ * [ Migrating to v2.1.0] ( #migrating-to-v210 )
11+ * [ Migrating to v2.0.0] ( #migrating-to-v200 )
12+ * [ Migrating to v1.9.0] ( #migrating-to-v190 )
13+ * [ Migrating to v1.8.0] ( #migrating-to-v180 )
14+
15+ ## Migrating to v4.1.0
16+
17+ The ` uint8_t ZonedExtra::type() ` function is replaced with `Resolved
18+ ZonedExtra::resolved()` which returns an enum of type ` Resolved`. The new
19+ function has exactly the same behavior and semantics as
20+ ` ZonedDateTime::resolved() ` which simplifies the implementation and the usage of
21+ the library.
22+
23+ Here is the mapping from the old values to the new enum:
24+
25+ - ` kTypeNotFound ` -> ` Resolved::kError `
26+ - ` kTypeExact ` -> ` Resolved::kUnique `
27+ - ` kTypeGap ` -> ` Resolved::kGapEarlier ` or ` Resolved::kGapLater `
28+ - ` kTypeOverlap ` -> ` Resolved::kOverlapEarlier ` or ` Resolved::kOverlapLater `
29+
1530## Migrating to v4.0.0
1631
1732These changes were originally intended for 3.0.0, but I ran out of time, so I
@@ -93,7 +108,6 @@ the `resolved` parameter which is an enum type of `Resolved`. It has 5 options:
93108If the calling code does not care about how an ambiguity was resolved, then this
94109parameter can be ignored.
95110
96- <a name =" MigratingToVersion300 " ></a >
97111## Migrating to v3.0.0
98112
99113### Info Container Class
@@ -126,7 +140,6 @@ which may have leaked out is `ace_time::internal::kAbbrevSize` which is the size
126140of the string buffer needed to hold the longest TimeZone abbreviation (e.g.
127141"PST"). This constant is now at ` ace_time::kAbbrevSize ` .
128142
129- <a name =" MigratingToVersion230 " ></a >
130143## Migrating to v2.3.0
131144
132145The internal implementation details of various classes have changed
@@ -210,7 +223,6 @@ we can be confident that all algorithms (`BasicZoneProcessor`,
210223`zonedbx`, `zonedbc`) in the AceTime library are consistent with these third
211224party libraries.
212225
213- <a name="MigratingToVersion220"></a>
214226## Migrating to v2.2
215227
216228### Immutable TimeZone class
@@ -250,10 +262,8 @@ TimeZone newTz = TimeZone::forTimeOffset(
250262ZonedDateTime newDt = zdt.convertToTimeZone(newTz);
251263```
252264
253- <a name="MigratingToVersion210"></a >
254265## Migrating to v2.1
255266
256- <a name="UnifiedLinks"></a >
257267### Unified Links
258268
259269Over the years, I implemented 4 different versions of the Link entries:
@@ -307,7 +317,6 @@ only 2 methods which apply only to Link time zones:
307317 * Prints the name of the target Zone if the current zone is a link.
308318 * It prints nothing is ` isLink() ` is false.
309319
310- <a name="ZonedExtra"></a >
311320### ZonedExtra
312321
313322The ` ZonedExtra ` class was created to replace 3 ad-hoc query methods on the
@@ -333,10 +342,8 @@ The `ZonedExtra` object provides access to other meta-information about the time
333342zone at that particular time. See the [ ZonedExtra] ( USER_GUIDE.md#ZonedExtra )
334343section in the ` USER_GUIDE.md ` for more detailed information about this class.
335344
336- <a name="MigratingToVersion200"></a >
337345## Migrating to v2.0
338346
339- <a name="HighLevel200"></a >
340347### High Level
341348
342349The primary purpose of AceTime v2 is to extend the range of years supported by
@@ -390,7 +397,6 @@ increase of 2.5-3.5 kiB of flash memory would be negligible on those processors.
390397Some backwards incompatible changes were necessary from v1 to v2. These are
391398explained in detail in the next section.
392399
393- <a name="Details200"></a >
394400### Details
395401
396402AceTime v2 implements the following major changes and features:
@@ -491,7 +497,6 @@ number of options:
491497 The next time the device is rebooted, the date and time will use the
492498 new epoch year instead of the old epoch year.
493499
494- <a name="Motivation200"></a >
495500### Background Motivation
496501
497502Using 32-bit integer field for epochSeconds gives a range of about 136 years.
@@ -515,13 +520,11 @@ The updated AceTime v2 is designed to support a 100-year interval from
515520range needs to extended even further in the future, the " current epoch year" is
516521made adjustable by the client application.
517522
518- <a name="MigratingToVersion190"></a >
519523## Migrating to v1.9.0
520524
521525The `ZoneManager` hierarchy (containing `ManualZoneManager`, `BasicZoneManager`,
522526and `ExtendedZoneManager`) was refactored from v1.8.0 to v1.9.0 .
523527
524- <a name="ConfiguringZoneManagers"></a >
525528### Configuring the Zone Managers
526529
527530In v1.8 , the `ZoneManager` was an abstract interface class with 7 pure virtual
@@ -588,7 +591,6 @@ ExtendedoneManager zoneManager(
588591 zoneProcessorCache);
589592```
590593
591- <a name =" UsingZoneManagers " ></a >
592594### Using the Zone Managers
593595
594596In v1.8, the ` ZoneManager ` was the parent interface class of all polymorphic
@@ -652,7 +654,6 @@ It is assumed that most applications will hard code either the
652654` BasicZoneManager ` or the ` ExtendedZoneManager ` , and will not need this level
653655of configuration.
654656
655- <a name="LinkManagers"></a >
656657### Link Managers
657658
658659In v1.8, the ` LinkManager ` was an interface class with pure virtual methods:
@@ -684,7 +685,6 @@ The `BasicLinkManager` and `ExtendedLinkManager` should be used directly,
684685instead of through the ` LinkManager ` interface. Since Link Managers were
685686introduced only in v1.8, I expect almost no one to be affected by this.
686687
687- <a name="MigratingToVersion180"></a >
688688## Migrating to v1.8.0
689689
690690Three breaking changes were made from v1.7.5 to v1.8.0:
@@ -708,7 +708,6 @@ Three breaking changes were made from v1.7.5 to v1.8.0:
708708The following subsections show how to migrate client application from
709709AceTime v1.7.5 to AceTime v1.8.0.
710710
711- <a name="MigratingToAceTimeClock"></a >
712711### Migrating to AceTimeClock
713712
714713For AceTime v1.8.0, the clock classes under the ` ace_time::clock ` namespace have
@@ -738,7 +737,6 @@ using namespace ace_time;
738737using namespace ace_time::clock;
739738```
740739
741- <a name =" MigratingTheDS3231Clock " ></a >
742740### Migrating the DS3231Clock
743741
744742For AceTime v1.8.0, the ` DS3231Clock ` class was converted into a template class
@@ -834,7 +832,6 @@ consumption by 1500 bytes on an AVR processor. The flash consumption can be
834832reduced by 2000 bytes if the "fast" version `SimpleWireFastInterface` is used
835833instead.
836834
837- <a name="MigratingToLinkManagers"></a>
838835### Migrating to LinkManagers
839836
840837In v1.7.5, [thin links](USER_GUIDE.md#ThinLinks) were activated by adding the
0 commit comments