[#BloombergLP-bdlar-SequenceRef-manipulateAttribute-02]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bdlar.adoc[bdlar]::xref:BloombergLP/bdlar/SequenceRef.adoc[SequenceRef]::manipulateAttribute
:relfileprefix: ../../../
:mrdocs:

Invoke the specified `manipulator` on the named attribute&period;

== Synopsis

Declared in `&lt;bdlar&lowbar;sequenceref&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
template&lt;class t&lowbar;MANIPULATOR&gt;
int
manipulateAttribute(
    t&lowbar;MANIPULATOR& manipulator,
    char const* attributeName,
    int attributeNameLength) const;
----

== Description

Invoke the specified `manipulator` on the (modifiable) attribute indicated by the specified `attributeName` and `attributeNameLength`, supplying `manipulator` with the corresponding attribute information structure&period; The supplied `manipulator` must be a callable type that can be called as if it had the following signature&colon; &grave; template &lt;class t&lowbar;INFO&gt; int manipulator(ATTRIBUTE &ast;refOrValue, const t&lowbar;INFO&amp; info)&semi; &grave; Return non&hyphen;zero value if the attribute is not found, and the value returned from the invocation of `manipulator` otherwise&period;

== Return Value

non&hyphen;zero if not found, otherwise value from `manipulator`

== Parameters

[cols="1,4"]
|===
| Name| Description
| *manipulator*
| callable invoked on the attribute
| *attributeName*
| name of the attribute
| *attributeNameLength*
| length of `attributeName`
|===


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