[#BloombergLP-balm-CategoryHolder]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/balm.adoc[balm]::CategoryHolder
:relfileprefix: ../../
:mrdocs:

This class holds a category, an enabled value, and a next&hyphen;holder pointer&period;

== Synopsis

Declared in `&lt;balm&lowbar;category&period;h&gt;`

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

== Description

This class, informally referred to as a &quot;category holder&quot; (or simply &quot;holder&quot;), holds a category, an enabled value, and a pointer to a &quot;next&quot; holder&period; Both the category and next pointer may be null&period; The intended use is as follows&colon; (1) instances of this class are (only) declared in contexts where collecting a metric occurs&semi; (2) if the enabled value is true, the category contains the address of a valid, enabled, category&semi; (3) if the next pointer is non&hyphen;null, then the holder pointed to holds the same category and threshold&period; Instances of this class must be _statically_ initializable&period; Hence, the data members are `public`, and no constructors or destructor are defined&period;

This class should _not_ be used directly by client code&period; It is an implementation detail of the `balm` metric collection system&period;

== Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/balm/CategoryHolder/category.adoc[`category`] 
| Return the address of the non&hyphen;modifiable category held by this holder&period;
| xref:BloombergLP/balm/CategoryHolder/enabled.adoc[`enabled`] 
| Return `true` if `category` is valid (i&period;e&period;, non&hyphen;null) and enabled, and `false` otherwise&period;
| xref:BloombergLP/balm/CategoryHolder/next.adoc[`next`] 
| Return the address of the modifiable holder pointed to by this holder&period;
| xref:BloombergLP/balm/CategoryHolder/reset.adoc[`reset`] 
| Reset this object to its default value&period; The default value is&colon; &grave; &lcub; false, 0, 0 &rcub; &grave;
| xref:BloombergLP/balm/CategoryHolder/setCategory.adoc[`setCategory`] 
| Set the address of the category held by this holder to the specified `category`&period;
| xref:BloombergLP/balm/CategoryHolder/setEnabled.adoc[`setEnabled`] 
| Set the `enabled` state of this category to the value of the specified `enabledFlag`&period;
| xref:BloombergLP/balm/CategoryHolder/setNext.adoc[`setNext`] 
| Set this holder to point to the specified next `holder`&period;
|===


== Data Members

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/balm/CategoryHolder/d_category_p.adoc[`d&lowbar;category&lowbar;p`] 
| Address of the held category (not owned)&period;
| xref:BloombergLP/balm/CategoryHolder/d_enabled.adoc[`d&lowbar;enabled`] 
| Whether the held category is enabled&period;
| xref:BloombergLP/balm/CategoryHolder/d_next_p.adoc[`d&lowbar;next&lowbar;p`] 
| Next category holder in the linked list&period;
|===



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