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

Package namespace for BER encoding and decoding components&period;

== Types

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/balber/BerConstants.adoc[`BerConstants`] 
| This `struct` contains enumerations of the constants used by the BER encoder and decoder&period;
| xref:BloombergLP/balber/BerDecoder.adoc[`BerDecoder`] 
| This class contains the parameterized `decode` functions that decode data (in BER format) from an incoming stream into `bdlat` types&period;
| xref:BloombergLP/balber/BerDecoderOptions.adoc[`BerDecoderOptions`] 
| BER decoding options
| xref:BloombergLP/balber/BerDecoder_Node.adoc[`BerDecoder&lowbar;Node`] 
| This class provides current context for BER decoding process and represents a node for BER element&period; The BER element consists of element tag, length field, body field and optional end of tag&period; The class also provides various methods to read the different parts of BER element such as tag header (tag itself and length fields), body for any type of data, and optional tag trailer&period;
| xref:BloombergLP/balber/BerDecoder_NodeVisitor.adoc[`BerDecoder&lowbar;NodeVisitor`] 
| This class is used as a visitor for visiting contained objects during decoding&period;
| xref:BloombergLP/balber/BerDecoder_UniversalElementVisitor.adoc[`BerDecoder&lowbar;UniversalElementVisitor`] 
| This `class` is used as a visitor for visiting the top&hyphen;level element and also array elements during decoding&period; This class is required so that the universal tag number of the element can be determined when the element is visited&period;
| xref:BloombergLP/balber/BerDecoder_Zeroer.adoc[`BerDecoder&lowbar;Zeroer`] 
| This class is a deleter that just zeroes out a given pointer upon destruction, for making code exception&hyphen;safe&period;
| xref:BloombergLP/balber/BerEncoder.adoc[`BerEncoder`] 
| This class contains the parameterized `encode` functions that encode `bdlat` types to an outgoing stream in BER format&period;
| xref:BloombergLP/balber/BerEncoderOptions.adoc[`BerEncoderOptions`] 
| Forward declaration of `BerEncoderOptions`&period;
| xref:BloombergLP/balber/BerEncoderOptionsUtil.adoc[`BerEncoderOptionsUtil`] 
| This `struct` provides a namespace for functions that set `BerEncoderOptions` to particular configurations&period;
| xref:BloombergLP/balber/BerEncoder_LevelGuard.adoc[`BerEncoder&lowbar;LevelGuard`] 
| This class serves the purpose to automatically increment&hyphen;decrement the current depth level&period;
| xref:BloombergLP/balber/BerEncoder_UniversalElementVisitor.adoc[`BerEncoder&lowbar;UniversalElementVisitor`] 
| This class is used as a visitor for visiting the top&hyphen;level element and also array elements during encoding&period; This class is required so that the universal tag number of the element can be determined when the element is visited&period;
| xref:BloombergLP/balber/BerEncoder_UseArrayLengthHintGuard.adoc[`BerEncoder&lowbar;UseArrayLengthHintGuard`] 
| This class serves the purpose to set and reset the value of `d&lowbar;useArrayLengthHint`&period;
| xref:BloombergLP/balber/BerEncoder_Visitor.adoc[`BerEncoder&lowbar;Visitor`] 
| This class is used as a visitor for visiting contained objects during encoding&period; Produces always BER elements with CONTEXT&lowbar;SPECIFIC BER tag&period;
| xref:BloombergLP/balber/BerEncoder_encodeProxy.adoc[`BerEncoder&lowbar;encodeProxy`] 
| Component&hyphen;private struct&period; Provides accessor that keeps current context and can be used in different `bdlat` Category Functions&period;
| xref:BloombergLP/balber/BerUniversalTagNumber.adoc[`BerUniversalTagNumber`] 
| This `struct` contains an enumeration of the universal tag numbers for BER encoding&period;
| xref:BloombergLP/balber/BerUniversalTagNumber_Sel.adoc[`BerUniversalTagNumber&lowbar;Sel`] 
| Component&hyphen;private class&period; Do not use&period; This class contains implementation details of this component&period;
| xref:BloombergLP/balber/BerUtil.adoc[`BerUtil`] 
| This utility contains functions to encode and decode primitive BER constructs and simple value semantic types&period; By convention, all functions return 0 on success, and a non&hyphen;zero value otherwise&period; Also by convention, all the &quot;get&quot; functions take an `accumNumBytesConsumed`&semi; each of the functions will add to this variable the number of bytes consumed within the scope of the function&period;
| xref:BloombergLP/balber/BerUtil_BooleanImpUtil.adoc[`BerUtil&lowbar;BooleanImpUtil`] 
| This component&hyphen;private utility `struct` provides a namespace for a suite of functions used by `BerUtil` to implement BER encoding and decoding operations for boolean values&period; Within the definition of this `struct`&colon;
| xref:BloombergLP/balber/BerUtil_CharacterImpUtil.adoc[`BerUtil&lowbar;CharacterImpUtil`] 
| This component&hyphen;private utility `struct` provides a namespace for a suite of functions used by `BerUtil` to implement BER encoding and decoding operations for byte values&period; Within the definition of this `struct`&colon;
| xref:BloombergLP/balber/BerUtil_Constants.adoc[`BerUtil&lowbar;Constants`] 
| This component&hyphen;private utility `struct` provides a namespace for a set of constants used to calculate quantities needed by BER encoders and decoders&period; For example, this struct provides a named constant for the number of bits in a byte, which is used in downstream calculations&period;
| xref:BloombergLP/balber/BerUtil_DateAndTimeEncoding.adoc[`BerUtil&lowbar;DateAndTimeEncoding`] 
| This component&hyphen;private `struct` provides a namespace for enumerating the union of the sets of date and time formats used to encode and decode all date and time types supported by `BerUtil`&period;
| xref:BloombergLP/balber/BerUtil_DateAndTimeHeader.adoc[`BerUtil&lowbar;DateAndTimeHeader`] 
| This component&hyphen;private, in&hyphen;core, value&hyphen;semantic attribute class provides a representation of the information available in the first two bytes of any extended&hyphen;binary&hyphen;encoding formatted data&period; All extended&hyphen;binary encoding schemes for date&hyphen;and&hyphen;time types contain a 2&hyphen;byte header in the same format, which can be unambiguously distinguished from the first 2 bytes of a date&hyphen;and&hyphen;time type in its corresponding compact&hyphen;binary&hyphen;encoding format or its ISO 8601 format&period;
| xref:BloombergLP/balber/BerUtil_DateAndTimeHeaderImpUtil.adoc[`BerUtil&lowbar;DateAndTimeHeaderImpUtil`] 
| This component&hyphen;private utility `struct` provides a namespace for a suite of functions used by `BerUtil` to implement encoding and decoding operations for the 2&hyphen;byte header of extended&hyphen;binary&hyphen;encoding formatted date&hyphen;and&hyphen;time value&period;
| xref:BloombergLP/balber/BerUtil_DateAndTimeHeaderType.adoc[`BerUtil&lowbar;DateAndTimeHeaderType`] 
| This component&hyphen;private `struct` provides a namespace for enumerating the set of &quot;header type&quot; values that may be encoded in the 2&hyphen;byte header of an extended&hyphen;binary&hyphen;encoding formatted date&hyphen;and&hyphen;time value&period;
| xref:BloombergLP/balber/BerUtil_DateEncoding.adoc[`BerUtil&lowbar;DateEncoding`] 
| This component&hyphen;private `struct` provides a namespace for enumerating the set of formats that may be used by `BerUtil` to encode and decode values of `bdlt&colon;&colon;Date` type&period;
| xref:BloombergLP/balber/BerUtil_DateImpUtil.adoc[`BerUtil&lowbar;DateImpUtil`] 
| This component&hyphen;private `struct` provides a namespace for a suite of functions used by `BerUtil` to implement BER encoding and decoding operations for date values&period; Within the definition of this `struct`&colon;
| xref:BloombergLP/balber/BerUtil_DateOrDateTzEncoding.adoc[`BerUtil&lowbar;DateOrDateTzEncoding`] 
| This component&hyphen;private `struct` provides a namespace for enumerating the set of formats that may be used by `BerUtil` to encode and decode values of `bdlb&colon;&colon;Variant2&lt;bdlt&colon;&colon;Date, bdlt&colon;&colon;DateTz&gt;` type&period;
| xref:BloombergLP/balber/BerUtil_DateTzEncoding.adoc[`BerUtil&lowbar;DateTzEncoding`] 
| This component&hyphen;private `struct` provides a namespace for enumerating the set of formats that may be used by `BerUtil` to encode and decode values of `bdlt&colon;&colon;DateTz` type&period;
| xref:BloombergLP/balber/BerUtil_DatetimeEncoding.adoc[`BerUtil&lowbar;DatetimeEncoding`] 
| This component&hyphen;private utility `struct` provides a namespace for enumerating the set of formats that may be used by `BerUtil` to encode and decode values of `bdlt&colon;&colon;Datetime` type&period;
| xref:BloombergLP/balber/BerUtil_DatetimeImpUtil.adoc[`BerUtil&lowbar;DatetimeImpUtil`] 
| This component&hyphen;private `struct` provides a namespace for a suite of functions used by `BerUtil` to implement BER encoding and decoding operations for date and time values&period; Within the definition of this `struct`&colon;
| xref:BloombergLP/balber/BerUtil_DatetimeOrDatetimeTzEncoding.adoc[`BerUtil&lowbar;DatetimeOrDatetimeTzEncoding`] 
| This component&hyphen;private utility `struct` provides a namespace for enumerating the set of formats that may be used by `BerUtil` to decode to values of `bdlb&colon;&colon;Variant2&lt;bdlt&colon;&colon;Datetime, bdlt&colon;&colon;DatetimeTz&gt;` type&period;
| xref:BloombergLP/balber/BerUtil_DatetimeTzEncoding.adoc[`BerUtil&lowbar;DatetimeTzEncoding`] 
| This component&hyphen;private utility `struct` provides a namespace for enumerating the set of formats that may be used by `BerUtil` to encode and decode values of `bdlt&colon;&colon;DatetimeTz` type&period;
| xref:BloombergLP/balber/BerUtil_ExtendedBinaryEncodingUtil.adoc[`BerUtil&lowbar;ExtendedBinaryEncodingUtil`] 
| This component&hyphen;private utility `struct` provides a namespace for a suite of functions used by `BerUtil` to determine if a particular date and&sol;or time value should be encoded using its corresponding extended&hyphen;binary&hyphen;encoding format, its corresponding compact&hyphen;binary&hyphen;encoding format, or neither format&period;
| xref:BloombergLP/balber/BerUtil_FloatingPointImpUtil.adoc[`BerUtil&lowbar;FloatingPointImpUtil`] 
| This component&hyphen;private utility `struct` provides a namespace for a suite of functions used by `BerUtil` to implement BER encoding and decoding operations for floating point number values&period; Within the definition of this `struct`&colon;
| xref:BloombergLP/balber/BerUtil_GetValueImpUtil.adoc[`BerUtil&lowbar;GetValueImpUtil`] 
| This component&hyphen;private utility `struct` provides a namespace for a suite of functions that define the overload set for the implementation of `balber&colon;&colon;BerUtil&colon;&colon;getValue`&period; The set of types used for the `value` parameters in the overload set of `getValue` in this `struct` define the set of types that `balber&colon;&colon;BerUtil&colon;&colon;getValue` supports&period;
| xref:BloombergLP/balber/BerUtil_IdentifierImpUtil.adoc[`BerUtil&lowbar;IdentifierImpUtil`] 
| This component&hyphen;private utility `struct` provides a namespace for a suite of functions used by `BerUtil` to implement BER identifier octet encoding and decoding&period;
| xref:BloombergLP/balber/BerUtil_IntegerImpUtil.adoc[`BerUtil&lowbar;IntegerImpUtil`] 
| This component&hyphen;private utility `struct` provides a namespace for a suite of functions used by `BerUtil` to implement BER encoding and decoding operations for integer values&period; Within the definition of this `struct`&colon;
| xref:BloombergLP/balber/BerUtil_Iso8601ImpUtil.adoc[`BerUtil&lowbar;Iso8601ImpUtil`] 
| This component&hyphen;private utility `struct` provides a namespace for a suite of functions used by `BerUtil` to implement BER encoding and decoding operations for date and time values in the ISO 8601 format&period; See the component&hyphen;level documentation of &lcub;`bdlt&lowbar;iso8601util`&rcub; for a complete description of the ISO 8601 format used by the functions provided by this `struct`&period;
| xref:BloombergLP/balber/BerUtil_LengthImpUtil.adoc[`BerUtil&lowbar;LengthImpUtil`] 
| This component&hyphen;private utility `struct` provides a namespace for a suite of functions used by `BerUtil` to implement BER length quantity encoding and decoding&period;
| xref:BloombergLP/balber/BerUtil_PutValueImpUtil.adoc[`BerUtil&lowbar;PutValueImpUtil`] 
| This component&hyphen;private utility `struct` provides a namespace for a suite of functions that define the overload set for the implementation of `balber&colon;&colon;BerUtil&colon;&colon;putValue`&period; The set of types used for the `value` parameters in the overload set of `putValue` in this `struct` define the set of types that `balber&colon;&colon;BerUtil&colon;&colon;putValue` supports&period;
| xref:BloombergLP/balber/BerUtil_RawIntegerImpUtil.adoc[`BerUtil&lowbar;RawIntegerImpUtil`] 
| This component&hyphen;private utility `struct` provides a namespace for a suite of functions used by `BerUtil` to implement BER integer encoding&period; This `struct` is separate from `BerUtil&lowbar;IntegerImpUtil` to break a dependency cycle between `BerUtil&lowbar;IntegerImpUtil` and `BerUtil&lowbar;LengthImpUtil`&period;
| xref:BloombergLP/balber/BerUtil_StreambufUtil.adoc[`BerUtil&lowbar;StreambufUtil`] 
| This component&hyphen;private utility `struct` provides a namespace for a suite of functions used by `BerUtil` to perform input and output operations on `bsl&colon;&colon;streambuf` objects&period; Note that these functions are intended to adapt the standard stream&hyphen;buffer operations to a BDE&hyphen;style interface&period;
| xref:BloombergLP/balber/BerUtil_StringImpUtil.adoc[`BerUtil&lowbar;StringImpUtil`] 
| This component&hyphen;private utility `struct` provides a namespace for a suite of functions used by `BerUtil` to implement BER encoding and decoding operations for string values&period; Within the definition of this `struct`&colon;
| xref:BloombergLP/balber/BerUtil_TimeEncoding.adoc[`BerUtil&lowbar;TimeEncoding`] 
| This component&hyphen;private utility `struct` provides a namespace for enumerating the set of formats that may be used by `BerUtil` to encode and decode values of `bdlt&colon;&colon;Time` type&period;
| xref:BloombergLP/balber/BerUtil_TimeImpUtil.adoc[`BerUtil&lowbar;TimeImpUtil`] 
| This component&hyphen;private `struct` provides a namespace for a suite of functions used by `BerUtil` to implement BER encoding and decoding operations for time values&period; Within the definition of this `struct`&colon;
| xref:BloombergLP/balber/BerUtil_TimeOrTimeTzEncoding.adoc[`BerUtil&lowbar;TimeOrTimeTzEncoding`] 
| This component&hyphen;private utility `struct` provides a namespace for enumerating the set of formats that may be used by `BerUtil` to decode values of `bdlb&colon;&colon;Variant2&lt;bdlt&colon;&colon;Time, bdlt&colon;&colon;TimeTz&gt;` type&period;
| xref:BloombergLP/balber/BerUtil_TimeTzEncoding.adoc[`BerUtil&lowbar;TimeTzEncoding`] 
| This component&hyphen;private utility `struct` provides a namespace for enumerating the set of formats that may be used by `BerUtil` to encode and decode values of `bdlt&colon;&colon;TimeTz` type&period;
| xref:BloombergLP/balber/BerUtil_TimezoneOffsetImpUtil.adoc[`BerUtil&lowbar;TimezoneOffsetImpUtil`] 
| This component&hyphen;private utility `struct` provides a namespace for a suite of functions and constants used by `BerUtil` to encode and decode time&hyphen;zone values&period;
|===


== Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/balber/operator_lshift-09c.adoc[`operator&lt;&lt;`] 
| Stream insertion operators
| xref:BloombergLP/balber/operator_eq-061.adoc[`operator&equals;&equals;`] 
| Equality operators
| xref:BloombergLP/balber/operator_not_eq-01.adoc[`operator!&equals;`] 
| Inequality operators
|===



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