Quick Links:

bal | bbl | bdl | bsl

Public Types | Static Public Member Functions | Static Public Attributes

balber::BerUtil_IntegerImpUtil Struct Reference

#include <balber_berutil.h>

List of all members.

Public Types

typedef BerUtil_Constants Constants
typedef BerUtil_LengthImpUtil LengthImpUtil
typedef BerUtil_RawIntegerImpUtil RawIntegerUtil
typedef BerUtil_StreambufUtil StreambufUtil

Static Public Member Functions

static int getNumOctetsToStream (short value)
static int getNumOctetsToStream (int value)
static int getNumOctetsToStream (long long value)
template<class INTEGRAL_TYPE >
static int getNumOctetsToStream (INTEGRAL_TYPE value)
static int getIntegerValue (long long *value, bsl::streambuf *streamBuf, int length)
template<class INTEGRAL_TYPE >
static int getIntegerValue (INTEGRAL_TYPE *value, bsl::streambuf *streamBuf, int length)
static int get40BitIntegerValue (bsls::Types::Int64 *value, bsl::streambuf *streamBuf)
template<class INTEGRAL_TYPE >
static int putIntegerValue (bsl::streambuf *streamBuf, INTEGRAL_TYPE value)
static int put40BitIntegerValue (bsl::streambuf *streamBuf, bsls::Types::Int64 value)
template<class INTEGRAL_TYPE >
static int putIntegerGivenLength (bsl::streambuf *streamBuf, INTEGRAL_TYPE value, int length)

Static Public Attributes

static const int k_40_BIT_INTEGER_LENGTH = 5

Detailed Description

This component-private utility struct provides a namespace for a suite of functions used by BerUtil to implement BER encoding and decoding operations for integer values. Within the definition of this struct:

the specification:
Refers to the August 2015 revision of the ITU-T Recommendation X.690.

See Component balber_berutil


Member Typedef Documentation


Member Function Documentation

static int balber::BerUtil_IntegerImpUtil::getNumOctetsToStream ( short  value  )  [static]
static int balber::BerUtil_IntegerImpUtil::getNumOctetsToStream ( int  value  )  [static]
static int balber::BerUtil_IntegerImpUtil::getNumOctetsToStream ( long long  value  )  [static]

Return the number of octets required to provide a BER encoding of the specified value according to the specification.

template<class INTEGRAL_TYPE >
static int balber::BerUtil_IntegerImpUtil::getNumOctetsToStream ( INTEGRAL_TYPE  value  )  [static]

Return the number of octets required to provide a BER encoding of the specified value according to the specification. The program is ill-formed unless the specified INTEGRAL_TYPE is a fundamental integral type.

static int balber::BerUtil_IntegerImpUtil::getIntegerValue ( long long *  value,
bsl::streambuf *  streamBuf,
int  length 
) [static]

Read the specified length number of bytes from the input sequence of the specified streamBuf and load to the specified value the interpretation of those bytes as the contents octets of a BER-encoded integer value according to the specification. Return 0 if successful, and a non-zero value otherwise.

template<class INTEGRAL_TYPE >
static int balber::BerUtil_IntegerImpUtil::getIntegerValue ( INTEGRAL_TYPE *  value,
bsl::streambuf *  streamBuf,
int  length 
) [static]

Read the specified length number of bytes from the input sequence of the specified streamBuf and load to the specified value the interpretation of those bytes as the contents octets of BER-encoded integer value according to the specification. Return 0 if successful, and a non-zero value otherwise. The operation succeeds if length bytes are successfully read from the input sequence of the streamBuf without the read position becoming unavailable, and the bytes read contain a valid representation of the contents octets of an integer value according to the specification. The program is ill-formed unless the specified INTEGRAL_TYPE is a fundamental integral type.

static int balber::BerUtil_IntegerImpUtil::get40BitIntegerValue ( bsls::Types::Int64 value,
bsl::streambuf *  streamBuf 
) [static]

Read 5 bytes from the input sequence of the specified streamBuf and load to the specified value the interpretation of those bytes as a 40-bit, signed, 2's-complement, big-endian integer. Return 0 if successful, and a non-zero value otherwise. The operation succeeds if all 5 bytes are successfully read from the input sequence of the streamBuf without the read position becoming unavailable, and the bytes read contain a valid representation of a 40-bit, signed, 2's-complement, big-endian integer.

template<class INTEGRAL_TYPE >
static int balber::BerUtil_IntegerImpUtil::putIntegerValue ( bsl::streambuf *  streamBuf,
INTEGRAL_TYPE  value 
) [static]

Write the length and contents octets of the BER encoding of the specified integer value (as defined in the specification) to the output sequence of the specified streamBuf. Return 0 if successful, and a non-zero value otherwise. The operation succeeds if all bytes corresponding to the length and contents octets are written to the streamBuf without the write position becoming unavailable. The program is ill-formed unless the specified INTEGRAL_TYPE is a fundamental integral type.

static int balber::BerUtil_IntegerImpUtil::put40BitIntegerValue ( bsl::streambuf *  streamBuf,
bsls::Types::Int64  value 
) [static]

Write the 5 octets that comprise the 40-bit, signed, 2's-complement, bit-endian representation of the specified integer value to the specified streamBuf. Return 0 if successful, and a non-zero value otherwise. The operation succeeds if all bytes corresponding to the representation of the value are written to the streamBuf without the write position becoming unavailable. The behavior is undefined unless the value is in the half-open interval [-549755813888, 549755813888).

template<class INTEGRAL_TYPE >
static int balber::BerUtil_IntegerImpUtil::putIntegerGivenLength ( bsl::streambuf *  streamBuf,
INTEGRAL_TYPE  value,
int  length 
) [static]

Write exactly the specified length number of contents octets of the BER encoding of the specified integer value (as defined in the specification) to the output sequence of the specified streamBuf. Return 0 if successful, and a non-zero value otherwise. The operation succeeds if all bytes corresponding to the contents octets are written to the streamBuf without the write position becoming unavailable. The behavior is undefined unless there are exactly length number of contents octets used to encode the integer value according to the specification. The program is ill-formed unless the specified INTEGRAL_TYPE is a fundamental integral type.


Member Data Documentation


The documentation for this struct was generated from the following file: