[#BloombergLP-bdlb-BitStringImpUtil]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bdlb.adoc[bdlb]::BitStringImpUtil
:relfileprefix: ../../
:mrdocs:

This `struct` provides a namespace for static functions to be used solely in the implementation of `BitStringUtil`&period; The &quot;Manipulators&quot; are intended to be provided as arguments to templates in `bdlb&lowbar;bitstringutil`, whereas the &quot;Accessors&quot; are to be called directly within that component&period;

== Synopsis

Declared in `&lt;bdlb&lowbar;bitstringimputil&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
struct BitStringImpUtil;
----

== Enums

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdlb/BitStringImpUtil/_04enum.adoc[`Unnamed enum`] 
| Number of bits in a `uint64&lowbar;t`&period;
|===


== Static Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bdlb/BitStringImpUtil/andEqBits.adoc[`andEqBits`] 
| Bitwise AND the specified least&hyphen;significant `numBits` in the specified `srcValue` to those in the specified `dstValue` starting at the specified `dstIndex`&period; The behavior is undefined unless `0 &lt;&equals; dstIndex`, `0 &lt;&equals; numBits`, and `dstIndex &plus; numBits &lt;&equals; k&lowbar;BITS&lowbar;PER&lowbar;UINT64`&period;
| xref:BloombergLP/bdlb/BitStringImpUtil/andEqWord.adoc[`andEqWord`] 
| Assign to the specified `&ast;dstValue` the value of `&ast;dstValue` bitwise AND&hyphen;ed with the specified `srcValue`&period;
| xref:BloombergLP/bdlb/BitStringImpUtil/find1AtMaxIndexRaw.adoc[`find1AtMaxIndexRaw`] 
| Return the index of the highest&hyphen;order set bit in the specified non&hyphen;zero `value`&period; The behavior is undefined unless `0 !&equals; value`&period; Note that this method is &quot;raw&quot; due to the requirement that at least one bit in `value` must be set&period;
| xref:BloombergLP/bdlb/BitStringImpUtil/find1AtMinIndexRaw.adoc[`find1AtMinIndexRaw`] 
| Return the index of the lowest&hyphen;order set bit in the specified non&hyphen;zero `value`&period; The behavior is undefined unless `0 !&equals; value`&period; Note that this method is &quot;raw&quot; due to the requirement that at least one bit in `value` must be set&period;
| xref:BloombergLP/bdlb/BitStringImpUtil/minusEqBits.adoc[`minusEqBits`] 
| Bitwise MINUS the specified least&hyphen;significant `numBits` in the specified `srcValue` from those in the specified `dstValue` starting at the specified `dstIndex`&period; The behavior is undefined unless `0 &lt;&equals; dstIndex`, `0 &lt;&equals; numBits`, and `dstIndex &plus; numBits &lt;&equals; k&lowbar;BITS&lowbar;PER&lowbar;UINT64`&period; Note that the bitwise difference, `a &hyphen; b`, is defined in C&plus;&plus; code as `a &amp; &#126;b`&period;
| xref:BloombergLP/bdlb/BitStringImpUtil/minusEqWord.adoc[`minusEqWord`] 
| Assign to the specified `&ast;dstValue` the value of `&ast;dstValue` bitwise AND&hyphen;ed with the complement of the specified `srcValue`&period;
| xref:BloombergLP/bdlb/BitStringImpUtil/orEqBits.adoc[`orEqBits`] 
| Bitwise OR the specified least&hyphen;significant `numBits` in the specified `srcValue` to those in the specified `dstValue` starting at the specified `dstIndex`&period; The behavior is undefined unless `0 &lt;&equals; dstIndex`, `0 &lt;&equals; numBits`, and `dstIndex &plus; numBits &lt;&equals; k&lowbar;BITS&lowbar;PER&lowbar;UINT64`&period;
| xref:BloombergLP/bdlb/BitStringImpUtil/orEqWord.adoc[`orEqWord`] 
| Assign to the specified `&ast;dstValue` the value of `&ast;dstValue` bitwise OR&hyphen;ed with the specified `srcValue`&period;
| xref:BloombergLP/bdlb/BitStringImpUtil/setEqBits.adoc[`setEqBits`] 
| Replace the specified `numBits` in the specified `dstValue` starting at the specified `dstIndex` with the least&hyphen;significant `numBits` of the specified `srcValue`&period; The behavior is undefined unless `0 &lt;&equals; dstIndex`, `0 &lt;&equals; numBits`, and `dstIndex &plus; numBits &lt;&equals; k&lowbar;BITS&lowbar;PER&lowbar;UINT64`&period;
| xref:BloombergLP/bdlb/BitStringImpUtil/setEqWord.adoc[`setEqWord`] 
| Assign to the specified `&ast;dstValue` the value of the specified `srcValue`&period;
| xref:BloombergLP/bdlb/BitStringImpUtil/xorEqBits.adoc[`xorEqBits`] 
| Bitwise XOR the specified least&hyphen;significant `numBits` in the specified `srcValue` to those in the specified `dstValue` starting at the specified `dstIndex`&period; The behavior is undefined unless `0 &lt;&equals; dstIndex`, `0 &lt;&equals; numBits`, and `dstIndex &plus; numBits &lt;&equals; k&lowbar;BITS&lowbar;PER&lowbar;UINT64`&period;
| xref:BloombergLP/bdlb/BitStringImpUtil/xorEqWord.adoc[`xorEqWord`] 
| Assign to the specified `&ast;dstValue` the value of `&ast;dstValue` bitwise XOR&hyphen;ed with the specified `srcValue`&period;
|===



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