8#ifndef INCLUDED_BALBER_BERENCODEROPTIONS
9#define INCLUDED_BALBER_BERENCODEROPTIONS
43#include <bslalg_typetraits.h>
58#include <bsl_iosfwd.h>
59#include <bsl_limits.h>
63namespace balber {
class BerEncoderOptions; }
76 int d_bdeVersionConformance;
95 int d_datetimeFractionalSecondPrecision;
98 bool d_encodeEmptyArrays;
102 bool d_encodeDateAndTimeTypesAsBinary;
106 bool d_disableUnselectedChoiceEncoding;
110 bool d_preserveSignOfNegativeZero;
126 bool d_encodeArrayLengthHints;
213 template <
typename t_STREAM>
229 template <
typename t_MANIPULATOR>
238 template <
typename t_MANIPULATOR>
247 template <
typename t_MANIPULATOR>
291 bsl::ostream&
print(bsl::ostream& stream,
293 int spacesPerLevel = 4)
const;
306 template <
typename t_STREAM>
307 t_STREAM&
bdexStreamOut(t_STREAM& stream,
int version)
const;
315 template <
typename t_ACCESSOR>
324 template <
typename t_ACCESSOR>
332 template <
typename t_ACCESSOR>
335 int nameLength)
const;
381 return lhs.isEqualTo(rhs);
388 return !(lhs == rhs);
396 return rhs.print(stream, 0, -1);
418bool BerEncoderOptions::isEqualTo(
const BerEncoderOptions& rhs)
const
420 return this->
traceLevel() == rhs.traceLevel() &&
434 if (versionSelector >= 20250615) {
441template <
typename t_STREAM>
445#ifdef BSLS_PLATFORM_CMP_GNU
446#pragma GCC diagnostic push
447#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
468 d_encodeArrayLengthHints =
false;
484#ifdef BSLS_PLATFORM_CMP_GNU
485#pragma GCC diagnostic pop
491template <
typename t_MANIPULATOR>
539template <
typename t_MANIPULATOR>
542 enum { NOT_FOUND = -1 };
574template <
typename t_MANIPULATOR>
576 t_MANIPULATOR& manipulator,
580 enum { NOT_FOUND = -1 };
584 if (0 == attributeInfo) {
594 d_traceLevel = value;
600 return d_bdeVersionConformance;
606 d_encodeEmptyArrays = value;
612 d_encodeDateAndTimeTypesAsBinary = value;
618 d_datetimeFractionalSecondPrecision = value;
624 d_disableUnselectedChoiceEncoding = value;
630 d_preserveSignOfNegativeZero = value;
636 d_encodeArrayLengthHints = value;
640template <
typename t_STREAM>
675template <
typename t_ACCESSOR>
723template <
typename t_ACCESSOR>
726 enum { NOT_FOUND = -1 };
758template <
typename t_ACCESSOR>
760 t_ACCESSOR& accessor,
762 int nameLength)
const
764 enum { NOT_FOUND = -1 };
768 if (0 == attributeInfo) {
784 return d_bdeVersionConformance;
790 return d_encodeEmptyArrays;
796 return d_encodeDateAndTimeTypesAsBinary;
802 return d_datetimeFractionalSecondPrecision;
808 return d_disableUnselectedChoiceEncoding;
814 return d_preserveSignOfNegativeZero;
820 return d_encodeArrayLengthHints;
Definition balber_berencoderoptions.h:70
int manipulateAttributes(t_MANIPULATOR &manipulator)
Definition balber_berencoderoptions.h:492
static const bdlat_AttributeInfo ATTRIBUTE_INFO_ARRAY[]
Definition balber_berencoderoptions.h:184
static const bool DEFAULT_INITIALIZER_ENCODE_EMPTY_ARRAYS
Definition balber_berencoderoptions.h:172
@ ATTRIBUTE_ID_PRESERVE_SIGN_OF_NEGATIVE_ZERO
Definition balber_berencoderoptions.h:146
@ ATTRIBUTE_ID_ENCODE_EMPTY_ARRAYS
Definition balber_berencoderoptions.h:142
@ ATTRIBUTE_ID_DISABLE_UNSELECTED_CHOICE_ENCODING
Definition balber_berencoderoptions.h:145
@ ATTRIBUTE_ID_TRACE_LEVEL
Definition balber_berencoderoptions.h:140
@ ATTRIBUTE_ID_ENCODE_DATE_AND_TIME_TYPES_AS_BINARY
Definition balber_berencoderoptions.h:143
@ ATTRIBUTE_ID_BDE_VERSION_CONFORMANCE
Definition balber_berencoderoptions.h:141
@ ATTRIBUTE_ID_ENCODE_ARRAY_LENGTH_HINTS
Definition balber_berencoderoptions.h:147
@ ATTRIBUTE_ID_DATETIME_FRACTIONAL_SECOND_PRECISION
Definition balber_berencoderoptions.h:144
static const int DEFAULT_INITIALIZER_DATETIME_FRACTIONAL_SECOND_PRECISION
Definition balber_berencoderoptions.h:176
int accessAttributes(t_ACCESSOR &accessor) const
Definition balber_berencoderoptions.h:676
t_STREAM & bdexStreamIn(t_STREAM &stream, int version)
Definition balber_berencoderoptions.h:442
t_STREAM & bdexStreamOut(t_STREAM &stream, int version) const
Definition balber_berencoderoptions.h:641
static const int DEFAULT_INITIALIZER_TRACE_LEVEL
Definition balber_berencoderoptions.h:168
bool encodeDateAndTimeTypesAsBinary() const
Definition balber_berencoderoptions.h:794
static const bool DEFAULT_INITIALIZER_ENCODE_DATE_AND_TIME_TYPES_AS_BINARY
Definition balber_berencoderoptions.h:174
void setEncodeArrayLengthHints(bool value)
Definition balber_berencoderoptions.h:634
friend bool operator==(const BerEncoderOptions &lhs, const BerEncoderOptions &rhs)
Definition balber_berencoderoptions.h:375
static const bdlat_AttributeInfo * lookupAttributeInfo(const char *name, int nameLength)
friend bool operator!=(const BerEncoderOptions &lhs, const BerEncoderOptions &rhs)
Definition balber_berencoderoptions.h:384
bool preserveSignOfNegativeZero() const
Definition balber_berencoderoptions.h:812
void setPreserveSignOfNegativeZero(bool value)
Definition balber_berencoderoptions.h:628
static const bool DEFAULT_INITIALIZER_DISABLE_UNSELECTED_CHOICE_ENCODING
Definition balber_berencoderoptions.h:178
static const bdlat_AttributeInfo * lookupAttributeInfo(int id)
int traceLevel() const
Definition balber_berencoderoptions.h:776
static const int DEFAULT_INITIALIZER_BDE_VERSION_CONFORMANCE
Definition balber_berencoderoptions.h:170
@ ATTRIBUTE_INDEX_DISABLE_UNSELECTED_CHOICE_ENCODING
Definition balber_berencoderoptions.h:160
@ ATTRIBUTE_INDEX_ENCODE_ARRAY_LENGTH_HINTS
Definition balber_berencoderoptions.h:162
@ ATTRIBUTE_INDEX_ENCODE_EMPTY_ARRAYS
Definition balber_berencoderoptions.h:157
@ ATTRIBUTE_INDEX_DATETIME_FRACTIONAL_SECOND_PRECISION
Definition balber_berencoderoptions.h:159
@ ATTRIBUTE_INDEX_TRACE_LEVEL
Definition balber_berencoderoptions.h:155
@ ATTRIBUTE_INDEX_PRESERVE_SIGN_OF_NEGATIVE_ZERO
Definition balber_berencoderoptions.h:161
@ ATTRIBUTE_INDEX_BDE_VERSION_CONFORMANCE
Definition balber_berencoderoptions.h:156
@ ATTRIBUTE_INDEX_ENCODE_DATE_AND_TIME_TYPES_AS_BINARY
Definition balber_berencoderoptions.h:158
static const bool DEFAULT_INITIALIZER_ENCODE_ARRAY_LENGTH_HINTS
Definition balber_berencoderoptions.h:182
static int maxSupportedBdexVersion(int versionSelector=0)
Definition balber_berencoderoptions.h:432
int datetimeFractionalSecondPrecision() const
Definition balber_berencoderoptions.h:800
int accessAttribute(t_ACCESSOR &accessor, int id) const
Definition balber_berencoderoptions.h:724
bool disableUnselectedChoiceEncoding() const
Definition balber_berencoderoptions.h:806
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
void setTraceLevel(int value)
Definition balber_berencoderoptions.h:592
static const bool DEFAULT_INITIALIZER_PRESERVE_SIGN_OF_NEGATIVE_ZERO
Definition balber_berencoderoptions.h:180
friend bsl::ostream & operator<<(bsl::ostream &stream, const BerEncoderOptions &rhs)
Definition balber_berencoderoptions.h:391
void setEncodeEmptyArrays(bool value)
Definition balber_berencoderoptions.h:604
void setEncodeDateAndTimeTypesAsBinary(bool value)
Definition balber_berencoderoptions.h:610
void setDisableUnselectedChoiceEncoding(bool value)
Definition balber_berencoderoptions.h:622
@ NUM_ATTRIBUTES
Definition balber_berencoderoptions.h:151
bool encodeEmptyArrays() const
Definition balber_berencoderoptions.h:788
int & bdeVersionConformance()
Definition balber_berencoderoptions.h:598
int manipulateAttribute(t_MANIPULATOR &manipulator, int id)
Definition balber_berencoderoptions.h:540
static const char CLASS_NAME[]
Definition balber_berencoderoptions.h:166
bool encodeArrayLengthHints() const
Definition balber_berencoderoptions.h:818
void setDatetimeFractionalSecondPrecision(int value)
Definition balber_berencoderoptions.h:616
#define BDLAT_DECL_SEQUENCE_WITH_BITWISEMOVEABLE_TRAITS(ClassName)
Definition bdlat_typetraits.h:294
#define BSLS_IDENT_RCSID(tag, str)
BSLS_IDENT_RCSID() - insert ident str (specific to platform/compiler)
Definition bsls_ident.h:244
#define BSLS_IDENT_PRAGMA_ONCE
BSLS_IDENT_PRAGMA_ONCE - macro to avoid multiple inclusion
Definition bsls_ident.h:263
Definition balber_berconstants.h:84
STREAM & bdexStreamIn(STREAM &stream, VALUE_TYPE &variable)
Definition bslx_instreamfunctions.h:1263
STREAM & bdexStreamOut(STREAM &stream, const TYPE &value)
Definition bslx_outstreamfunctions.h:1004
Definition bdlat_attributeinfo.h:139
int d_id
Definition bdlat_attributeinfo.h:142