[#BloombergLP-baltzo-ZoneinfoCache]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/baltzo.adoc[baltzo]::ZoneinfoCache
:relfileprefix: ../../
:mrdocs:

This class provides an efficient mechanism for retrieving information about a given time zone&period; The first time a client requests information for some time&hyphen;zone identifier, that information is loaded (using the `Loader` supplied at construction), returned to the client (via a `const` pointer value), and cached for future use&period; Subsequent requests for the same time&hyphen;zone return the cached information&period; The returned values are valid for the lifetime of this object&period;

== Synopsis

Declared in `&lt;baltzo&lowbar;zoneinfocache&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
class ZoneinfoCache;
----

== Description

This class&colon; &ast; is _exception&hyphen;neutral_ &ast; is _fully_ _thread&hyphen;safe_ For terminology see `bsldoc&lowbar;glossary`&period;

== Type Aliases

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/baltzo/ZoneinfoCache/allocator_type.adoc[`allocator&lowbar;type`] 
| Allocator type used by this class&period;
|===


== Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/baltzo/ZoneinfoCache/2constructor.adoc[`ZoneinfoCache`]         [.small]#[constructor]#
| Create an empty cache of time&hyphen;zone information that will use the specified `loader` to populate the cache, as&hyphen;needed, with time zone information&period; Optionally specify an `allocator` (e&period;g&period;, the address of a `bslma&colon;&colon;Allocator` object) to supply memory&semi; otherwise, the default allocator is used&period; In order the populate the cache for a time zone identifier, `loader` must return a `Zoneinfo` object that is well&hyphen;formed (see `ZoneinfoUtil&colon;&colon;isWellFormed`) and whose `identifier` matches the supplied time zone identifier&period;
| xref:BloombergLP/baltzo/ZoneinfoCache/2destructor.adoc[`&#126;ZoneinfoCache`] [.small]#[destructor]#
| Destroy this object&period;
| xref:BloombergLP/baltzo/ZoneinfoCache/getZoneinfo-0c.adoc[`getZoneinfo`] 
| `getZoneinfo` overloads
| xref:BloombergLP/baltzo/ZoneinfoCache/get_allocator.adoc[`get&lowbar;allocator`] 
| Return the allocator used by this object to supply memory&period; Note that if no allocator was supplied at construction the default allocator in effect at construction is used&period;
| xref:BloombergLP/baltzo/ZoneinfoCache/lookupZoneinfo.adoc[`lookupZoneinfo`] 
| Return the address of the non&hyphen;modifiable cached description of the time zone identified by the specified `timeZoneId`, and 0 if information for `timeZoneId` has not previously been cached (by a call to `getZoneinfo`)&period; If the returned address is non&hyphen;zero, the Zoneinfo object returned is guaranteed to be well&hyphen;formed (i&period;e&period;, `ZoneinfoUtil&colon;&colon;isWellFormed will return `true&apos; if called with the returned value), and remain valid for the lifetime of this object&period;
| xref:BloombergLP/baltzo/ZoneinfoCache/2conversion.adoc[`operator BloombergLP::bslmf::NestedTraitDeclaration&lt;ZoneinfoCache, UsesBslmaAllocator&gt;`] 
| Nested trait declaration for `bslma&colon;&colon;UsesBslmaAllocator`&period;
|===



[.small]#Created with https://www.mrdocs.com[MrDocs]#
