[#BloombergLP-bdlcc-ObjectCatalogIter]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bdlcc.adoc[bdlcc]::ObjectCatalogIter
:relfileprefix: ../../
:mrdocs:

Provide thread safe iteration through all the objects of an object catalog of parameterized `TYPE`&period; The order of the iteration is implementation defined&period; An iterator is _valid_ if it is associated with an object in the catalog, otherwise it is _invalid_&period; Thread&hyphen;safe iteration is provided by (read)locking the object catalog during the iterator&apos;s construction and unlocking it at the iterator&apos;s destruction&period; This guarantees that during the life time of an iterator, the object catalog can&apos;t be modified (nevertheless, multiple threads can concurrently read the object catalog)&period;

== Synopsis

Declared in `&lt;bdlcc&lowbar;objectcatalog&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;class TYPE&gt;
class ObjectCatalogIter;
----

== Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdlcc/ObjectCatalogIter/2constructor-05.adoc[`ObjectCatalogIter`]         [.small]#[constructor]#
| Constructors
| xref:BloombergLP/bdlcc/ObjectCatalogIter/2destructor.adoc[`&#126;ObjectCatalogIter`] [.small]#[destructor]#
| Destroy this iterator and unlock the catalog associated with it&period;
| xref:BloombergLP/bdlcc/ObjectCatalogIter/handle.adoc[`handle`] 
| Return the handle referred to by the iterator&period; The behavior is undefined unless the iterator is _valid_&period;
| xref:BloombergLP/bdlcc/ObjectCatalogIter/operator_call.adoc[`operator()`] 
| Return a pair containing the handle (as the first element of the pair) and the object (as the second element of the pair) associated with this iterator&period; The behavior is undefined unless the iterator is _valid_&period;
| xref:BloombergLP/bdlcc/ObjectCatalogIter/operator_inc.adoc[`operator&plus;&plus;`] 
| Advance this iterator to refer to the next object of the associated catalog&semi; if there is no next object in the associated catalog, then this iterator becomes _invalid_&period; The behavior is undefined unless this iterator is valid&period; Note that the order of the iteration is not specified&period;
| xref:BloombergLP/bdlcc/ObjectCatalogIter/value.adoc[`value`] 
| Return a `const` reference to the value referred to by the iterator&period; The behavior is undefined unless the iterator is _valid_&period;
| xref:BloombergLP/bdlcc/ObjectCatalogIter/2conversion.adoc[`operator void const*`] 
| Return non&hyphen;zero if the iterator is _valid_, and 0 otherwise&period;
|===



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