8#ifndef INCLUDED_S_BALTST_MYSEQUENCEWITHCHOICE
9#define INCLUDED_S_BALTST_MYSEQUENCEWITHCHOICE
43#include <bslalg_typetraits.h>
55#include <bsl_iosfwd.h>
56#include <bsl_limits.h>
60namespace s_baltst {
class MySequenceWithChoiceChoice; }
61namespace s_baltst {
class MySequenceWithChoice; }
124#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) \
125 && defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT)
141#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) \
142 && defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT)
175 template <
typename t_MANIPULATOR>
198 bsl::ostream&
print(bsl::ostream& stream,
200 int spacesPerLevel = 4)
const;
210 template <
typename t_ACCESSOR>
240 return lhs.isEqualTo(rhs);
249 return !(lhs == rhs);
257 return rhs.print(stream, 0, -1);
330 template <
typename t_MANIPULATOR>
339 template <
typename t_MANIPULATOR>
348 template <
typename t_MANIPULATOR>
371 bsl::ostream&
print(bsl::ostream& stream,
373 int spacesPerLevel = 4)
const;
381 template <
typename t_ACCESSOR>
389 template <
typename t_ACCESSOR>
398 template <
typename t_ACCESSOR>
401 int nameLength)
const;
415 return lhs.mode() == rhs.mode();
422 return !(lhs == rhs);
430 return rhs.print(stream, 0, -1);
455bool MySequenceWithChoiceChoice::isEqualTo(
const MySequenceWithChoiceChoice& rhs)
const
459 switch (rhs.selectionId()) {
460 case Class::SELECTION_ID_CHOICE_A:
461 return this->
choiceA() == rhs.choiceA();
463 BSLS_ASSERT(Class::SELECTION_ID_UNDEFINED == rhs.selectionId());
475: d_selectionId(SELECTION_ID_UNDEFINED)
486template <
typename t_MANIPULATOR>
489 switch (d_selectionId) {
510 return d_selectionId;
513template <
typename t_ACCESSOR>
516 switch (d_selectionId) {
552template <
typename t_MANIPULATOR>
565template <
typename t_MANIPULATOR>
568 enum { NOT_FOUND = -1 };
579template <
typename t_MANIPULATOR>
581 t_MANIPULATOR& manipulator,
585 enum { NOT_FOUND = -1 };
589 if (0 == attributeInfo) {
603template <
typename t_ACCESSOR>
616template <
typename t_ACCESSOR>
619 enum { NOT_FOUND = -1 };
630template <
typename t_ACCESSOR>
632 t_ACCESSOR& accessor,
634 int nameLength)
const
636 enum { NOT_FOUND = -1 };
640 if (0 == attributeInfo) {
Definition s_baltst_mysequencewithchoice.h:68
const char * selectionName() const
Return the symbolic name of the current selection of this object.
int & makeChoiceA(int value)
static const bdlat_SelectionInfo * lookupSelectionInfo(const char *name, int nameLength)
@ NUM_SELECTIONS
Definition s_baltst_mysequencewithchoice.h:89
int makeSelection(const char *name, int nameLength)
friend bsl::ostream & operator<<(bsl::ostream &stream, const MySequenceWithChoiceChoice &rhs)
Definition s_baltst_mysequencewithchoice.h:254
friend bool operator!=(const MySequenceWithChoiceChoice &lhs, const MySequenceWithChoiceChoice &rhs)
Definition s_baltst_mysequencewithchoice.h:246
int accessSelection(t_ACCESSOR &accessor) const
Definition s_baltst_mysequencewithchoice.h:514
MySequenceWithChoiceChoice & operator=(const MySequenceWithChoiceChoice &rhs)
Assign to this object the value of the specified rhs object.
bool isUndefinedValue() const
Definition s_baltst_mysequencewithchoice.h:540
static const bdlat_SelectionInfo SELECTION_INFO_ARRAY[]
Definition s_baltst_mysequencewithchoice.h:99
~MySequenceWithChoiceChoice()
Destroy this object.
Definition s_baltst_mysequencewithchoice.h:480
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
bsls::ObjectBuffer< int > d_choiceA
Definition s_baltst_mysequencewithchoice.h:72
static const bdlat_SelectionInfo * lookupSelectionInfo(int id)
bool isChoiceAValue() const
Definition s_baltst_mysequencewithchoice.h:534
int makeSelection(int selectionId)
MySequenceWithChoiceChoice(const MySequenceWithChoiceChoice &original)
static const char CLASS_NAME[]
Definition s_baltst_mysequencewithchoice.h:97
friend bool operator==(const MySequenceWithChoiceChoice &lhs, const MySequenceWithChoiceChoice &rhs)
Definition s_baltst_mysequencewithchoice.h:237
@ SELECTION_INDEX_CHOICE_A
Definition s_baltst_mysequencewithchoice.h:93
@ SELECTION_ID_UNDEFINED
Definition s_baltst_mysequencewithchoice.h:84
@ SELECTION_ID_CHOICE_A
Definition s_baltst_mysequencewithchoice.h:85
int & choiceA()
Definition s_baltst_mysequencewithchoice.h:500
MySequenceWithChoiceChoice()
Definition s_baltst_mysequencewithchoice.h:474
int manipulateSelection(t_MANIPULATOR &manipulator)
Definition s_baltst_mysequencewithchoice.h:487
int selectionId() const
Definition s_baltst_mysequencewithchoice.h:508
Definition s_baltst_mysequencewithchoice.h:273
MySequenceWithChoiceChoice & mode()
Definition s_baltst_mysequencewithchoice.h:597
friend bool operator==(const MySequenceWithChoice &lhs, const MySequenceWithChoice &rhs)
Definition s_baltst_mysequencewithchoice.h:412
friend bsl::ostream & operator<<(bsl::ostream &stream, const MySequenceWithChoice &rhs)
Definition s_baltst_mysequencewithchoice.h:427
static const bdlat_AttributeInfo * lookupAttributeInfo(const char *name, int nameLength)
static const bdlat_AttributeInfo * lookupAttributeInfo(int id)
@ NUM_ATTRIBUTES
Definition s_baltst_mysequencewithchoice.h:285
static const bdlat_AttributeInfo ATTRIBUTE_INFO_ARRAY[]
Definition s_baltst_mysequencewithchoice.h:295
static const char CLASS_NAME[]
Definition s_baltst_mysequencewithchoice.h:293
int manipulateAttribute(t_MANIPULATOR &manipulator, int id)
Definition s_baltst_mysequencewithchoice.h:566
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
@ ATTRIBUTE_ID_MODE
Definition s_baltst_mysequencewithchoice.h:281
int accessAttribute(t_ACCESSOR &accessor, int id) const
Definition s_baltst_mysequencewithchoice.h:617
int manipulateAttributes(t_MANIPULATOR &manipulator)
Definition s_baltst_mysequencewithchoice.h:553
@ ATTRIBUTE_INDEX_MODE
Definition s_baltst_mysequencewithchoice.h:289
friend bool operator!=(const MySequenceWithChoice &lhs, const MySequenceWithChoice &rhs)
Returns !(lhs == rhs)
Definition s_baltst_mysequencewithchoice.h:419
int accessAttributes(t_ACCESSOR &accessor) const
Definition s_baltst_mysequencewithchoice.h:604
#define BDLAT_DECL_CHOICE_WITH_BITWISEMOVEABLE_TRAITS(ClassName)
Definition bdlat_typetraits.h:261
#define BDLAT_DECL_SEQUENCE_WITH_BITWISEMOVEABLE_TRAITS(ClassName)
Definition bdlat_typetraits.h:294
#define BSLS_ASSERT(X)
Definition bsls_assert.h:1976
#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 s_baltst_address.h:66
Definition bdlat_attributeinfo.h:139
int d_id
Definition bdlat_attributeinfo.h:142
Definition bdlat_selectioninfo.h:138
Definition bdlat_typetraits.h:146
TYPE & object()
Definition bsls_objectbuffer.h:352