[#BloombergLP-ball-AttributeContainer]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/ball.adoc[ball]::AttributeContainer
:relfileprefix: ../../
:mrdocs:

This class defines a protocol for a container of attribute values&period;

== Synopsis

Declared in `&lt;ball&lowbar;attributecontainer&period;h&gt;`

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

== Description

The attribute container provides a `hasValue()` method to determine whether an attribute value is in the container&period;

== Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/ball/AttributeContainer/2destructor.adoc[`&#126;AttributeContainer`] [.small]#[destructor]# [.small]#[virtual]#
| Destroy this object&period;
| xref:BloombergLP/ball/AttributeContainer/hasValue.adoc[`hasValue`]  [.small]#[virtual]#
| Return `true` if a attribute having the specified `value` exists in this object, and `false` otherwise&period;
| xref:BloombergLP/ball/AttributeContainer/print.adoc[`print`]  [.small]#[virtual]#
| Format this object to the specified output `stream`&period;
| xref:BloombergLP/ball/AttributeContainer/visitAttributes.adoc[`visitAttributes`]  [.small]#[virtual]#
| Invoke the specified `visitor` function for all attributes in this container&period;
|===


== Derived Classes

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/ball/DefaultAttributeContainer.adoc[`DefaultAttributeContainer`] 
| A `DefaultAttributeContainer` object contains a collection of (unique) attributes values&period;
| xref:BloombergLP/ball/ScopedAttribute_Container.adoc[`ScopedAttribute&lowbar;Container`] 
| This component&hyphen;private class is a concrete implementation of the `AttributeContainer` protocol for a single attribute&period;
|===


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