AceTime  1.7.5
Date and time classes for Arduino that support timezones from the TZ Database, and a system clock that can synchronize from an NTP server or an RTC chip.
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
ace_time::extended::TransitionTemplate< ZEB, ZPB, ZRB > Struct Template Reference

Represents an interval of time where the time zone obeyed a certain UTC offset and DST delta. More...

#include <ExtendedZoneProcessor.h>

Collaboration diagram for ace_time::extended::TransitionTemplate< ZEB, ZPB, ZRB >:
Collaboration graph
[legend]

Public Member Functions

const char * format () const
 
const char * letter () const
 Return the letter string. More...
 
void log () const
 Used only for debugging.
 

Static Public Member Functions

static void logHourMinute (int16_t minutes)
 Print minutes as [+/-]hh:mm.
 

Public Attributes

const MatchingEraTemplate< ZEB > * match
 The match which generated this Transition.
 
ZRB rule
 The Zone transition rule that matched for the the given year. More...
 
DateTuple transitionTime
 The original transition time, usually 'w' but sometimes 's' or 'u'. More...
 
union {
   DateTuple   transitionTimeS
 Version of transitionTime in 's' mode, using the UTC offset of the previous Transition. More...
 
   DateTuple   startDateTime
 Start time expressed using the UTC offset of the current Transition. More...
 
}; 
 
union {
   DateTuple   transitionTimeU
 Version of transitionTime in 'u' mode, using the UTC offset of the previous transition. More...
 
   DateTuple   untilDateTime
 Until time expressed using the UTC offset of the current Transition. More...
 
}; 
 
acetime_t startEpochSeconds
 The calculated transition time of the given rule.
 
int16_t offsetMinutes
 The base offset minutes, not the total effective UTC offset. More...
 
int16_t deltaMinutes
 The DST delta minutes.
 
char abbrev [internal::kAbbrevSize]
 The calculated effective time zone abbreviation, e.g. More...
 
char letterBuf [2]
 Storage for the single letter 'letter' field if 'rule' is not null.
 
union {
   bool   isValidPrior
 During findCandidateTransitions(), this flag indicates whether the current transition is a valid "prior" transition that occurs before other transitions. More...
 
   MatchStatus   matchStatus
 During processTransitionMatchStatus(), this flag indicates how the transition falls within the time interval of the MatchingEra.
 
}; 
 

Detailed Description

template<typename ZEB, typename ZPB, typename ZRB>
struct ace_time::extended::TransitionTemplate< ZEB, ZPB, ZRB >

Represents an interval of time where the time zone obeyed a certain UTC offset and DST delta.

The start of the interval is given by 'transitionTime' which comes from the TZ Database file. The actual start and until time of the interval (in the local time zone) is given by 'startDateTime' and 'untilDateTime'.

There are 2 types of Transition instances: 1) Simple, indicated by 'rule' == nullptr. The base UTC offsetMinutes is given by match->offsetMinutes. The additional DST delta is given by match->deltaMinutes. 2) Named, indicated by 'rule' != nullptr. The base UTC offsetMinutes is given by match->offsetMinutes. The additional DST delta is given by rule->deltaMinutes.

The 'match', 'rule', 'transitionTime', 'transitionTimeS', 'transitionTimeU', 'active', 'originalTransitionTime', 'letter()' and 'format()' are temporary variables or parameters used in the init() method.

The 'offsetMinutes', 'deltaMinutes', 'startDateTime', 'abbrev' are the derived parameters used in the findTransition() search.

Ordering of fields optimized along 4-byte boundaries to help 32-bit processors without making the program size bigger for 8-bit processors.

@tparm ZEB type of ZoneEraBroker @tparm ZPB type of ZonePolicyBroker @tparm ZRB type of ZoneRuleBroker

Definition at line 225 of file ExtendedZoneProcessor.h.

Member Function Documentation

◆ letter()

template<typename ZEB , typename ZPB , typename ZRB >
const char* ace_time::extended::TransitionTemplate< ZEB, ZPB, ZRB >::letter ( ) const
inline

Return the letter string.

Returns nullptr if the RULES column is empty since that means that the ZoneRule is not used, which means LETTER does not exist. A LETTER of '-' is returned as an empty string "".

Definition at line 330 of file ExtendedZoneProcessor.h.

Member Data Documentation

◆ abbrev

template<typename ZEB , typename ZPB , typename ZRB >
char ace_time::extended::TransitionTemplate< ZEB, ZPB, ZRB >::abbrev[internal::kAbbrevSize]

The calculated effective time zone abbreviation, e.g.

"PST" or "PDT".

Definition at line 298 of file ExtendedZoneProcessor.h.

◆ isValidPrior

template<typename ZEB , typename ZPB , typename ZRB >
bool ace_time::extended::TransitionTemplate< ZEB, ZPB, ZRB >::isValidPrior

During findCandidateTransitions(), this flag indicates whether the current transition is a valid "prior" transition that occurs before other transitions.

It is set by setFreeAgentAsPriorIfValid() if the transition is a prior transition.

Definition at line 310 of file ExtendedZoneProcessor.h.

◆ offsetMinutes

template<typename ZEB , typename ZPB , typename ZRB >
int16_t ace_time::extended::TransitionTemplate< ZEB, ZPB, ZRB >::offsetMinutes

The base offset minutes, not the total effective UTC offset.

Note that this is different than basic::Transition::offsetMinutes used by BasicZoneProcessor which is the total effective offsetMinutes. (It may be possible to make this into an effective offsetMinutes (i.e. offsetMinutes

  • deltaMinutes) but it does not seem worth making that change right now.)

Definition at line 292 of file ExtendedZoneProcessor.h.

◆ rule

template<typename ZEB , typename ZPB , typename ZRB >
ZRB ace_time::extended::TransitionTemplate< ZEB, ZPB, ZRB >::rule

The Zone transition rule that matched for the the given year.

Set to nullptr if the RULES column is '-', indicating that the MatchingEra was a "simple" ZoneEra.

Definition at line 234 of file ExtendedZoneProcessor.h.

◆ startDateTime

template<typename ZEB , typename ZPB , typename ZRB >
DateTuple ace_time::extended::TransitionTemplate< ZEB, ZPB, ZRB >::startDateTime

Start time expressed using the UTC offset of the current Transition.

Valid after ExtendedZoneProcessor::generateStartUntilTimes() is called.

Definition at line 256 of file ExtendedZoneProcessor.h.

◆ transitionTime

template<typename ZEB , typename ZPB , typename ZRB >
DateTuple ace_time::extended::TransitionTemplate< ZEB, ZPB, ZRB >::transitionTime

The original transition time, usually 'w' but sometimes 's' or 'u'.

After expandDateTuple() is called, this field will definitely be a 'w'. We must remember that the transitionTime* fields are expressed using the UTC offset of the previous Transition.

Definition at line 242 of file ExtendedZoneProcessor.h.

◆ transitionTimeS

template<typename ZEB , typename ZPB , typename ZRB >
DateTuple ace_time::extended::TransitionTemplate< ZEB, ZPB, ZRB >::transitionTimeS

Version of transitionTime in 's' mode, using the UTC offset of the previous Transition.

Valid before ExtendedZoneProcessor::generateStartUntilTimes() is called.

Definition at line 250 of file ExtendedZoneProcessor.h.

◆ transitionTimeU

template<typename ZEB , typename ZPB , typename ZRB >
DateTuple ace_time::extended::TransitionTemplate< ZEB, ZPB, ZRB >::transitionTimeU

Version of transitionTime in 'u' mode, using the UTC offset of the previous transition.

Valid before ExtendedZoneProcessor::generateStartUntilTimes() is called.

Definition at line 265 of file ExtendedZoneProcessor.h.

◆ untilDateTime

template<typename ZEB , typename ZPB , typename ZRB >
DateTuple ace_time::extended::TransitionTemplate< ZEB, ZPB, ZRB >::untilDateTime

Until time expressed using the UTC offset of the current Transition.

Valid after ExtendedZoneProcessor::generateStartUntilTimes() is called.

Definition at line 271 of file ExtendedZoneProcessor.h.


The documentation for this struct was generated from the following file: