|
AceTime
3.0.0
Date and time classes for Arduino that support timezones from the TZ Database.
|
Class that allows looking up the ZoneInfo from its TZDB identifier (e.g. More...
#include <ZoneRegistrar.h>
Public Member Functions | |
| ZoneRegistrarTemplate (uint16_t zoneRegistrySize, const typename D::ZoneInfo *const *zoneRegistry) | |
| Constructor. | |
| uint16_t | zoneRegistrySize () const |
| Return the number of zones and (fat) links. | |
| const D::ZoneInfo * | getZoneInfoForIndex (uint16_t i) const |
| Return the ZoneInfo at index i. More... | |
| const D::ZoneInfo * | getZoneInfoForName (const char *name) const |
| Return the ZoneInfo corresponding to the given zone name. More... | |
| const D::ZoneInfo * | getZoneInfoForId (uint32_t zoneId) const |
| Return the ZoneInfo using the zoneId. More... | |
| uint16_t | findIndexForName (const char *name) const |
| Find the index for zone name. More... | |
| uint16_t | findIndexForId (uint32_t zoneId) const |
| Find the index for zone id. More... | |
Static Public Attributes | |
| static const uint16_t | kInvalidIndex = 0xffff |
| Invalid index to indicate error or not found. | |
Protected Member Functions | |
| friend | void ::runBasicRegistrarFindIndexForName () |
| friend | void ::runBasicRegistrarFindIndexForIdBinary () |
| friend | void ::runBasicRegistrarFindIndexForIdLinear () |
| friend | void ::runExtendedRegistrarFindIndexForName () |
| friend | void ::runExtendedRegistrarFindIndexForIdBinary () |
| friend | void ::runExtendedRegistrarFindIndexForIdLinear () |
| friend | void ::runCompleteRegistrarFindIndexForName () |
| friend | void ::runCompleteRegistrarFindIndexForIdBinary () |
| friend | void ::runCompleteRegistrarFindIndexForIdLinear () |
| uint16_t | findIndexForIdLinear (uint32_t zoneId) const |
| Exposed only for benchmarking purposes. | |
| uint16_t | findIndexForIdBinary (uint32_t zoneId) const |
| Exposed only for benchmarking purposes. | |
Static Protected Member Functions | |
| static bool | isSorted (const typename D::ZoneInfo *const *registry, uint16_t registrySize) |
| Determine if the given zone registry is sorted by id. | |
| static uint16_t | linearSearchById (const typename D::ZoneInfo *const *registry, uint16_t registrySize, uint32_t zoneId) |
| Find the registry index corresponding to zoneId using linear search. More... | |
| static uint16_t | binarySearchById (const typename D::ZoneInfo *const *registry, uint16_t registrySize, uint32_t zoneId) |
| Find the registry index corresponding to zoneId using a binary search. More... | |
Static Protected Attributes | |
| static const uint8_t | kBinarySearchThreshold = 8 |
| Use binarySearchById() if zoneRegistrySize >= threshold. | |
Class that allows looking up the ZoneInfo from its TZDB identifier (e.g.
"America/Los_Angeles"), zoneId (hash from its name), or the index in the zone registry.
| D | container type of ZoneInfo database (e.g. basic::Info, extended::Info, complete::Info) |
Definition at line 46 of file ZoneRegistrar.h.
|
inlinestaticprotected |
Find the registry index corresponding to zoneId using a binary search.
Returns kInvalidIndex if not found.
The largest registrySize is UINT16_MAX so the largest valid index is UINT16_MAX - 1. This allows us to set kInvalidIndex to UINT16_MAX to indicate "Not Found".
Definition at line 191 of file ZoneRegistrar.h.
|
inline |
Find the index for zone id.
Return kInvalidIndex if not found.
Definition at line 106 of file ZoneRegistrar.h.
|
inline |
Find the index for zone name.
Return kInvalidIndex if not found.
Definition at line 89 of file ZoneRegistrar.h.
|
inline |
Return the ZoneInfo using the zoneId.
Return nullptr if not found.
Definition at line 82 of file ZoneRegistrar.h.
|
inline |
Return the ZoneInfo at index i.
Return nullptr if i is out of range.
Definition at line 65 of file ZoneRegistrar.h.
|
inline |
Return the ZoneInfo corresponding to the given zone name.
Return nullptr if not found.
Definition at line 75 of file ZoneRegistrar.h.
|
inlinestaticprotected |
Find the registry index corresponding to zoneId using linear search.
Returns kInvalidIndex if not found.
Definition at line 156 of file ZoneRegistrar.h.