BDE 4.39.x Production Release
Loading...
Searching...
No Matches
balb_testmessages.h
Go to the documentation of this file.
1/// @file balb_testmessages.h
2///
3/// The content of this file has been pre-processed for Doxygen.
4///
5
6
7// balb_testmessages.h *DO NOT EDIT* @generated -*-C++-*-
8#ifndef INCLUDED_BALB_TESTMESSAGES
9#define INCLUDED_BALB_TESTMESSAGES
10
11#include <bsls_ident.h>
12BSLS_IDENT_RCSID(balb_testmessages_h,"$Id$ $CSID$")
14
15/// @defgroup balb_testmessages balb_testmessages
16/// @brief Provide value-semantic attribute classes.
17/// @addtogroup bal
18/// @{
19/// @addtogroup balb
20/// @{
21/// @addtogroup balb_testmessages
22/// @{
23///
24/// <h1> Outline </h1>
25/// * <a href="#balb_testmessages-purpose"> Purpose</a>
26/// * <a href="#balb_testmessages-description"> Description </a>
27///
28/// # Purpose {#balb_testmessages-purpose}
29/// Provide value-semantic attribute classes.
30///
31/// # Description {#balb_testmessages-description}
32/// This is a generated file used for testing purposes only and
33/// should *not* be used in any production code.
34///
35/// The file was generated with the command:
36/// @code
37/// bas_codegen.pl -mmsg -Ctestmessages --noAggregateConversion <backslash>
38/// balb_testmessages.xsd
39/// @endcode
40/// (Sustitute '\' for `<backslash>` -- some compilers won't accept a backslash
41/// at the end of a C++ comment line.)
42///
43/// After the message component was generated, the following modifications were
44/// made:
45/// * This @DESCRIPTION section was added.
46/// * Use of @ref bdes_ident was replaced with @ref bsls_ident .
47/// @}
48/** @} */
49/** @} */
50
51/** @addtogroup bal
52 * @{
53 */
54/** @addtogroup balb
55 * @{
56 */
57/** @addtogroup balb_testmessages
58 * @{
59 */
60
61#include <bslalg_typetraits.h>
62
63#include <bdlat_attributeinfo.h>
64
66
67#include <bdlat_selectioninfo.h>
68
69#include <bdlat_typetraits.h>
70
72
73#include <bsls_objectbuffer.h>
74
77
78#include <bslma_default.h>
79
80#include <bsls_assert.h>
81
83
84#include <bdlb_nullablevalue.h>
85
86#include <bdlt_datetimetz.h>
87
88#include <bsl_string.h>
89
90#include <bsl_vector.h>
91
92#include <bsls_types.h>
93
94#include <bsl_iosfwd.h>
95
96#include <bsl_ostream.h>
97#include <bsl_string.h>
98
99#include <bslma_allocator.h>
100
101
102
103
104namespace balb { class Choice4; }
105namespace balb { class CustomInt; }
106namespace balb { class CustomString; }
107namespace balb { class SequenceWithAnonymityChoice1; }
108namespace balb { class SimpleRequest; }
109namespace balb { class UnsignedSequence; }
110namespace balb { class VoidSequence; }
111namespace balb { class Choice5; }
112namespace balb { class Sequence3; }
113namespace balb { class Sequence5; }
114namespace balb { class Sequence6; }
115namespace balb { class Choice3; }
116namespace balb { class SequenceWithAnonymityChoice; }
117namespace balb { class Choice1; }
118namespace balb { class Choice2; }
119namespace balb { class Sequence4; }
120namespace balb { class Sequence1; }
121namespace balb { class Sequence2; }
122namespace balb { class SequenceWithAnonymityChoice2; }
123namespace balb { class SequenceWithAnonymity; }
124namespace balb { class FeatureTestMessage; }
125namespace balb { class Request; }
126namespace balb { class Response; }
127namespace balb {
128
129 // =============
130 // class Choice4
131 // =============
132
133class Choice4 {
134
135 // INSTANCE DATA
136 union {
139 };
140
141 int d_selectionId;
142 bslma::Allocator *d_allocator_p;
143
144 public:
145 // TYPES
146
147 enum {
151 };
152
153 enum {
155 };
156
157 enum {
160 };
161
162 // CONSTANTS
163 static const char CLASS_NAME[];
164
166
167 // CLASS METHODS
168
169 /// Return the most current `bdex` streaming version number supported by
170 /// this class. See the `bslx` package-level documentation for more
171 /// information on `bdex` streaming of value-semantic types and
172 /// containers.
173 static int maxSupportedBdexVersion();
174
175 /// Return selection information for the selection indicated by the
176 /// specified `id` if the selection exists, and 0 otherwise.
178
179 /// Return selection information for the selection indicated by the
180 /// specified `name` of the specified `nameLength` if the selection
181 /// exists, and 0 otherwise.
183 const char *name,
184 int nameLength);
185
186 // CREATORS
187
188 /// Create an object of type `Choice4` having the default value. Use
189 /// the optionally specified `basicAllocator` to supply memory. If
190 /// `basicAllocator` is 0, the currently installed default allocator is
191 /// used.
192 explicit Choice4(bslma::Allocator *basicAllocator = 0);
193
194 /// Create an object of type `Choice4` having the value of the specified
195 /// `original` object. Use the optionally specified `basicAllocator` to
196 /// supply memory. If `basicAllocator` is 0, the currently installed
197 /// default allocator is used.
198 Choice4(const Choice4& original,
199 bslma::Allocator *basicAllocator = 0);
200
201 /// Destroy this object.
202 ~Choice4();
203
204 // MANIPULATORS
205
206 /// Assign to this object the value of the specified `rhs` object.
208
209 /// Assign to this object the value read from the specified input
210 /// `stream` using the specified `version` format and return a reference
211 /// to the modifiable `stream`. If `stream` is initially invalid, this
212 /// operation has no effect. If `stream` becomes invalid during this
213 /// operation, this object is valid, but its value is undefined. If
214 /// `version` is not supported, `stream` is marked invalid and this object is unaltered.
215 ///
216 /// \note Note that no version is read from `stream`.
217 /// See the `bslx` package-level documentation for more information on
218 /// `bdex` streaming of value-semantic types and containers.
219 template <class STREAM>
220 STREAM& bdexStreamIn(STREAM& stream, int version);
221
222 /// Reset this object to the default value (i.e., its value upon default
223 /// construction).
224 void reset();
225
226 /// Set the value of this object to be the default for the selection
227 /// indicated by the specified `selectionId`. Return 0 on success, and
228 /// non-zero value otherwise (i.e., the selection is not found).
230
231 /// Set the value of this object to be the default for the selection
232 /// indicated by the specified `name` of the specified `nameLength`.
233 /// Return 0 on success, and non-zero value otherwise (i.e., the
234 /// selection is not found).
235 int makeSelection(const char *name, int nameLength);
236
237 /// Set the value of this object to be a "Selection1" value. Optionally
238 /// specify the `value` of the "Selection1". If `value` is not
239 /// specified, the default "Selection1" value is used.
242
243 /// Set the value of this object to be a "Selection2" value. Optionally
244 /// specify the `value` of the "Selection2". If `value` is not
245 /// specified, the default "Selection2" value is used.
247 int& makeSelection2(int value);
248
249 /// Invoke the specified `manipulator` on the address of the modifiable
250 /// selection, supplying `manipulator` with the corresponding selection
251 /// information structure. Return the value returned from the
252 /// invocation of `manipulator` if this object has a defined selection,
253 /// and -1 otherwise.
254 template<class MANIPULATOR>
255 int manipulateSelection(MANIPULATOR& manipulator);
256
257 /// Return a reference to the modifiable "Selection1" selection of this
258 /// object if "Selection1" is the current selection.
259 ///
260 /// \pre The behavior is undefined unless "Selection1" is the selection of this object.
262
263 /// Return a reference to the modifiable "Selection2" selection of this
264 /// object if "Selection2" is the current selection.
265 ///
266 /// \pre The behavior is undefined unless "Selection2" is the selection of this object.
267 int& selection2();
268
269 // ACCESSORS
270
271 /// Format this object to the specified output `stream` at the
272 /// optionally specified indentation `level` and return a reference to
273 /// the modifiable `stream`. If `level` is specified, optionally
274 /// specify `spacesPerLevel`, the number of spaces per indentation level
275 /// for this and all of its nested objects. Each line is indented by
276 /// the absolute value of `level * spacesPerLevel`. If `level` is
277 /// negative, suppress indentation of the first line. If
278 /// `spacesPerLevel` is negative, suppress line breaks and format the
279 /// entire output on one line. If `stream` is initially invalid, this operation has no effect.
280 ///
281 /// \note Note that a trailing newline is provided
282 /// in multiline mode only.
283 bsl::ostream& print(bsl::ostream& stream,
284 int level = 0,
285 int spacesPerLevel = 4) const;
286
287 /// Write the value of this object to the specified output `stream`
288 /// using the specified `version` format and return a reference to the
289 /// modifiable `stream`. If `version` is not supported, `stream` is unmodified.
290 ///
291 /// \note Note that `version` is not written to `stream`.
292 /// See the `bslx` package-level documentation for more information
293 /// on `bdex` streaming of value-semantic types and containers.
294 template <class STREAM>
295 STREAM& bdexStreamOut(STREAM& stream, int version) const;
296
297 /// Return the id of the current selection if the selection is defined,
298 /// and -1 otherwise.
299 int selectionId() const;
300
301 /// Invoke the specified `accessor` on the non-modifiable selection,
302 /// supplying `accessor` with the corresponding selection information
303 /// structure. Return the value returned from the invocation of
304 /// `accessor` if this object has a defined selection, and -1 otherwise.
305 template<class ACCESSOR>
306 int accessSelection(ACCESSOR& accessor) const;
307
308 /// Return a reference to the non-modifiable "Selection1" selection of
309 /// this object if "Selection1" is the current selection.
310 ///
311 /// \pre The behavior is undefined unless "Selection1" is the selection of this object.
313
314 /// Return a reference to the non-modifiable "Selection2" selection of
315 /// this object if "Selection2" is the current selection.
316 ///
317 /// \pre The behavior is undefined unless "Selection2" is the selection of this object.
318 const int& selection2() const;
319
320 /// Return `true` if the value of this object is a "Selection1" value,
321 /// and return `false` otherwise.
322 bool isSelection1Value() const;
323
324 /// Return `true` if the value of this object is a "Selection2" value,
325 /// and return `false` otherwise.
326 bool isSelection2Value() const;
327
328 /// Return `true` if the value of this object is undefined, and `false`
329 /// otherwise.
330 bool isUndefinedValue() const;
331
332 /// Return the symbolic name of the current selection of this object.
333 const char *selectionName() const;
334};
335
336// FREE OPERATORS
337
338/// Return `true` if the specified `lhs` and `rhs` objects have the same
339/// value, and `false` otherwise. Two `Choice4` objects have the same
340/// value if either the selections in both objects have the same ids and
341/// the same values, or both selections are undefined.
342inline
343bool operator==(const Choice4& lhs, const Choice4& rhs);
344
345/// Return `true` if the specified `lhs` and `rhs` objects do not have the
346/// same values, as determined by `operator==`, and `false` otherwise.
347inline
348bool operator!=(const Choice4& lhs, const Choice4& rhs);
349
350/// Format the specified `rhs` to the specified output `stream` and
351/// return a reference to the modifiable `stream`.
352inline
353bsl::ostream& operator<<(bsl::ostream& stream, const Choice4& rhs);
354
355} // close package namespace
356
357// TRAITS
358
360
361namespace balb {
362
363 // ===============
364 // class CustomInt
365 // ===============
366
368
369 // INSTANCE DATA
370 int d_value;
371
372 // FRIENDS
373 friend bool operator==(const CustomInt& lhs, const CustomInt& rhs);
374 friend bool operator!=(const CustomInt& lhs, const CustomInt& rhs);
375
376 public:
377 // TYPES
378 typedef int BaseType;
379
380 // CONSTANTS
381 static const char CLASS_NAME[];
382
383 // CREATORS
384
385 /// Create an object of type `CustomInt` having the default value.
386 CustomInt();
387
388 /// Create an object of type `CustomInt` having the value of the
389 /// specified `original` object.
390 CustomInt(const CustomInt& original);
391
392 /// Create an object of type `CustomInt` having the specified `value`.
393 explicit CustomInt(const int& value);
394
395 /// Destroy this object.
396 ~CustomInt();
397
398 // MANIPULATORS
399
400 /// Assign to this object the value of the specified `rhs` object.
401 CustomInt& operator=(const CustomInt& rhs);
402
403 /// Assign to this object the value read from the specified input
404 /// `stream` using the specified `version` format and return a reference
405 /// to the modifiable `stream`. If `stream` is initially invalid, this
406 /// operation has no effect. If `stream` becomes invalid during this
407 /// operation, this object is valid, but its value is undefined. If
408 /// `version` is not supported, `stream` is marked invalid and this object is unaltered.
409 ///
410 /// \note Note that no version is read from `stream`.
411 /// See the `bslx` package-level documentation for more information on
412 /// `bdex` streaming of value-semantic types and containers.
413 template <class STREAM>
414 STREAM& bdexStreamIn(STREAM& stream, int version);
415
416 /// Reset this object to the default value (i.e., its value upon
417 /// default construction).
418 void reset();
419
420 /// Convert from the specified `value` to this type. Return 0 if
421 /// successful and non-zero otherwise.
422 int fromInt(const int& value);
423
424 // ACCESSORS
425
426 /// Write the value of this object to the specified output `stream`
427 /// using the specified `version` format and return a reference to the
428 /// modifiable `stream`. If `version` is not supported, `stream` is unmodified.
429 ///
430 /// \note Note that `version` is not written to `stream`.
431 /// See the `bslx` package-level documentation for more information
432 /// on `bdex` streaming of value-semantic types and containers.
433 template <class STREAM>
434 STREAM& bdexStreamOut(STREAM& stream, int version) const;
435
436 /// Return the most current `bdex` streaming version number supported by
437 /// this class. See the `bslx` package-level documentation for more
438 /// information on `bdex` streaming of value-semantic types and
439 /// containers.
440 int maxSupportedBdexVersion() const;
441
442 /// Format this object to the specified output `stream` at the
443 /// optionally specified indentation `level` and return a reference to
444 /// the modifiable `stream`. If `level` is specified, optionally
445 /// specify `spacesPerLevel`, the number of spaces per indentation level
446 /// for this and all of its nested objects. Each line is indented by
447 /// the absolute value of `level * spacesPerLevel`. If `level` is
448 /// negative, suppress indentation of the first line. If
449 /// `spacesPerLevel` is negative, suppress line breaks and format the
450 /// entire output on one line. If `stream` is initially invalid, this operation has no effect.
451 ///
452 /// \note Note that a trailing newline is provided
453 /// in multiline mode only.
454 bsl::ostream& print(bsl::ostream& stream,
455 int level = 0,
456 int spacesPerLevel = 4) const;
457
458 /// Convert this value to `int`.
459 const int& toInt() const;
460
461 // PUBLIC CLASS METHODS
462
463 /// Check if the specified `value` satisfies the restrictions of this
464 /// class (i.e., "CustomInt"). Return 0 if successful (i.e., the
465 /// restrictions are satisfied) and non-zero otherwise.
466 static int checkRestrictions(const int& value);
467};
468
469// FREE OPERATORS
470
471/// Return `true` if the specified `lhs` and `rhs` attribute objects have
472/// the same value, and `false` otherwise. Two attribute objects have the
473/// same value if each respective attribute has the same value.
474inline
475bool operator==(const CustomInt& lhs, const CustomInt& rhs);
476
477/// Return `true` if the specified `lhs` and `rhs` attribute objects do not
478/// have the same value, and `false` otherwise. Two attribute objects do
479/// not have the same value if one or more respective attributes differ in
480/// values.
481inline
482bool operator!=(const CustomInt& lhs, const CustomInt& rhs);
483
484/// Format the specified `rhs` to the specified output `stream` and
485/// return a reference to the modifiable `stream`.
486inline
487bsl::ostream& operator<<(bsl::ostream& stream, const CustomInt& rhs);
488
489} // close package namespace
490
491// TRAITS
492
494
495namespace balb {
496
497 // ==================
498 // class CustomString
499 // ==================
500
502
503 // INSTANCE DATA
504 bsl::string d_value;
505
506 // FRIENDS
507 friend bool operator==(const CustomString& lhs, const CustomString& rhs);
508 friend bool operator!=(const CustomString& lhs, const CustomString& rhs);
509
510 public:
511 // TYPES
513
514 // CONSTANTS
515 static const char CLASS_NAME[];
516
517 // CREATORS
518
519 /// Create an object of type `CustomString` having the default value.
520 /// Use the optionally specified `basicAllocator` to supply memory. If
521 /// `basicAllocator` is 0, the currently installed default allocator is
522 /// used.
523 explicit CustomString(bslma::Allocator *basicAllocator = 0);
524
525 /// Create an object of type `CustomString` having the value
526 /// of the specified `original` object. Use the optionally specified
527 /// `basicAllocator` to supply memory. If `basicAllocator` is 0,
528 /// the currently installed default allocator is used.
529 CustomString(const CustomString& original,
530 bslma::Allocator *basicAllocator = 0);
531
532 /// Create an object of type `CustomString` having the specified
533 /// `value`. Use the optionally specified `basicAllocator` to supply
534 /// memory. If `basicAllocator` is 0, the currently installed default
535 /// allocator is used.
536 explicit CustomString(const bsl::string& value,
537 bslma::Allocator *basicAllocator = 0);
538
539 /// Destroy this object.
541
542 // MANIPULATORS
543
544 /// Assign to this object the value of the specified `rhs` object.
546
547 /// Assign to this object the value read from the specified input
548 /// `stream` using the specified `version` format and return a reference
549 /// to the modifiable `stream`. If `stream` is initially invalid, this
550 /// operation has no effect. If `stream` becomes invalid during this
551 /// operation, this object is valid, but its value is undefined. If
552 /// `version` is not supported, `stream` is marked invalid and this object is unaltered.
553 ///
554 /// \note Note that no version is read from `stream`.
555 /// See the `bslx` package-level documentation for more information on
556 /// `bdex` streaming of value-semantic types and containers.
557 template <class STREAM>
558 STREAM& bdexStreamIn(STREAM& stream, int version);
559
560 /// Reset this object to the default value (i.e., its value upon
561 /// default construction).
562 void reset();
563
564 /// Convert from the specified `value` to this type. Return 0 if
565 /// successful and non-zero otherwise.
566 int fromString(const bsl::string& value);
567
568 // ACCESSORS
569
570 /// Write the value of this object to the specified output `stream`
571 /// using the specified `version` format and return a reference to the
572 /// modifiable `stream`. If `version` is not supported, `stream` is unmodified.
573 ///
574 /// \note Note that `version` is not written to `stream`.
575 /// See the `bslx` package-level documentation for more information
576 /// on `bdex` streaming of value-semantic types and containers.
577 template <class STREAM>
578 STREAM& bdexStreamOut(STREAM& stream, int version) const;
579
580 /// Return the most current `bdex` streaming version number supported by
581 /// this class. See the `bslx` package-level documentation for more
582 /// information on `bdex` streaming of value-semantic types and
583 /// containers.
584 int maxSupportedBdexVersion() const;
585
586 /// Format this object to the specified output `stream` at the
587 /// optionally specified indentation `level` and return a reference to
588 /// the modifiable `stream`. If `level` is specified, optionally
589 /// specify `spacesPerLevel`, the number of spaces per indentation level
590 /// for this and all of its nested objects. Each line is indented by
591 /// the absolute value of `level * spacesPerLevel`. If `level` is
592 /// negative, suppress indentation of the first line. If
593 /// `spacesPerLevel` is negative, suppress line breaks and format the
594 /// entire output on one line. If `stream` is initially invalid, this operation has no effect.
595 ///
596 /// \note Note that a trailing newline is provided
597 /// in multiline mode only.
598 bsl::ostream& print(bsl::ostream& stream,
599 int level = 0,
600 int spacesPerLevel = 4) const;
601
602 /// Convert this value to `bsl::string`.
603 const bsl::string& toString() const;
604
605 // PUBLIC CLASS METHODS
606
607 /// Check if the specified `value` satisfies the restrictions of this
608 /// class (i.e., "CustomString"). Return 0 if successful (i.e., the
609 /// restrictions are satisfied) and non-zero otherwise.
610 static int checkRestrictions(const bsl::string& value);
611};
612
613// FREE OPERATORS
614
615/// Return `true` if the specified `lhs` and `rhs` attribute objects have
616/// the same value, and `false` otherwise. Two attribute objects have the
617/// same value if each respective attribute has the same value.
618inline
619bool operator==(const CustomString& lhs, const CustomString& rhs);
620
621/// Return `true` if the specified `lhs` and `rhs` attribute objects do not
622/// have the same value, and `false` otherwise. Two attribute objects do
623/// not have the same value if one or more respective attributes differ in
624/// values.
625inline
626bool operator!=(const CustomString& lhs, const CustomString& rhs);
627
628/// Format the specified `rhs` to the specified output `stream` and
629/// return a reference to the modifiable `stream`.
630inline
631bsl::ostream& operator<<(bsl::ostream& stream, const CustomString& rhs);
632
633} // close package namespace
634
635// TRAITS
636
638
639namespace balb {
640
641 // ================
642 // class Enumerated
643 // ================
644
646
647 public:
648 // TYPES
649 enum Value {
650 NEW_YORK = 0
652 , LONDON = 2
653 };
654
655 enum {
657 };
658
659 // CONSTANTS
660 static const char CLASS_NAME[];
661
663
664 // CLASS METHODS
665
666 /// Return the most current `bdex` streaming version number supported by
667 /// this class. See the `bslx` package-level documentation for more
668 /// information on `bdex` streaming of value-semantic types and
669 /// containers.
670 static int maxSupportedBdexVersion();
671
672 /// Return the string representation exactly matching the enumerator
673 /// name corresponding to the specified enumeration `value`.
674 static const char *toString(Value value);
675
676 /// Load into the specified `result` the enumerator matching the
677 /// specified `string` of the specified `stringLength`. Return 0 on
678 /// success, and a non-zero value with no effect on `result` otherwise
679 /// (i.e., `string` does not match any enumerator).
680 static int fromString(Value *result,
681 const char *string,
682 int stringLength);
683
684 /// Load into the specified `result` the enumerator matching the
685 /// specified `string`. Return 0 on success, and a non-zero value with
686 /// no effect on `result` otherwise (i.e., `string` does not match any
687 /// enumerator).
688 static int fromString(Value *result,
689 const bsl::string& string);
690
691 /// Load into the specified `result` the enumerator matching the
692 /// specified `number`. Return 0 on success, and a non-zero value with
693 /// no effect on `result` otherwise (i.e., `number` does not match any
694 /// enumerator).
695 static int fromInt(Value *result, int number);
696
697 /// Assign to the specified `value` the value read from the specified
698 /// input `stream` using the specified `version` format and return a
699 /// reference to the modifiable `stream`. If `stream` is initially
700 /// invalid, this operation has no effect. If `stream` becomes invalid
701 /// during this operation, the `value` is valid, but its value is
702 /// undefined. If the specified `version` is not supported, `stream` is marked invalid, but `value` is unaltered.
703 ///
704 /// \note Note that no version is
705 /// read from `stream`. (See the package-group-level documentation for
706 /// more information on `bdex` streaming of container types.)
707 template <class STREAM>
708 static STREAM& bdexStreamIn(STREAM& stream,
709 Value& value,
710 int version);
711
712 /// Write to the specified `stream` the string representation of
713 /// the specified enumeration `value`. Return a reference to
714 /// the modifiable `stream`.
715 static bsl::ostream& print(bsl::ostream& stream, Value value);
716
717 /// Write the specified `value` to the specified output `stream` and
718 /// return a reference to the modifiable `stream`. Optionally specify
719 /// an explicit `version` format; by default, the maximum supported
720 /// version is written to `stream` and used as the format. If `version`
721 /// is specified, that format is used but *not* written to `stream`. If
722 /// `version` is not supported, `stream` is left unmodified. (See the
723 /// package-group-level documentation for more information on `bdex`
724 /// streaming of container types).
725 template <class STREAM>
726 static STREAM& bdexStreamOut(STREAM& stream,
727 Value value,
728 int version);
729};
730
731// FREE OPERATORS
732
733/// Format the specified `rhs` to the specified output `stream` and
734/// return a reference to the modifiable `stream`.
735inline
736bsl::ostream& operator<<(bsl::ostream& stream, Enumerated::Value rhs);
737
738} // close package namespace
739
740// TRAITS
741
743
744
745namespace balb {
746
747 // ==================================
748 // class SequenceWithAnonymityChoice1
749 // ==================================
750
752
753 // INSTANCE DATA
754 union {
757 };
758
759 int d_selectionId;
760 bslma::Allocator *d_allocator_p;
761
762 public:
763 // TYPES
764
765 enum {
769 };
770
771 enum {
773 };
774
775 enum {
778 };
779
780 // CONSTANTS
781 static const char CLASS_NAME[];
782
784
785 // CLASS METHODS
786
787 /// Return the most current `bdex` streaming version number supported by
788 /// this class. See the `bslx` package-level documentation for more
789 /// information on `bdex` streaming of value-semantic types and
790 /// containers.
791 static int maxSupportedBdexVersion();
792
793 /// Return selection information for the selection indicated by the
794 /// specified `id` if the selection exists, and 0 otherwise.
796
797 /// Return selection information for the selection indicated by the
798 /// specified `name` of the specified `nameLength` if the selection
799 /// exists, and 0 otherwise.
801 const char *name,
802 int nameLength);
803
804 // CREATORS
805
806 /// Create an object of type `SequenceWithAnonymityChoice1` having the
807 /// default value. Use the optionally specified `basicAllocator` to
808 /// supply memory. If `basicAllocator` is 0, the currently installed
809 /// default allocator is used.
810 explicit SequenceWithAnonymityChoice1(bslma::Allocator *basicAllocator = 0);
811
812 /// Create an object of type `SequenceWithAnonymityChoice1` having the
813 /// value of the specified `original` object. Use the optionally
814 /// specified `basicAllocator` to supply memory. If `basicAllocator` is
815 /// 0, the currently installed default allocator is used.
817 bslma::Allocator *basicAllocator = 0);
818
819 /// Destroy this object.
821
822 // MANIPULATORS
823
824 /// Assign to this object the value of the specified `rhs` object.
826
827 /// Assign to this object the value read from the specified input
828 /// `stream` using the specified `version` format and return a reference
829 /// to the modifiable `stream`. If `stream` is initially invalid, this
830 /// operation has no effect. If `stream` becomes invalid during this
831 /// operation, this object is valid, but its value is undefined. If
832 /// `version` is not supported, `stream` is marked invalid and this object is unaltered.
833 ///
834 /// \note Note that no version is read from `stream`.
835 /// See the `bslx` package-level documentation for more information on
836 /// `bdex` streaming of value-semantic types and containers.
837 template <class STREAM>
838 STREAM& bdexStreamIn(STREAM& stream, int version);
839
840 /// Reset this object to the default value (i.e., its value upon default
841 /// construction).
842 void reset();
843
844 /// Set the value of this object to be the default for the selection
845 /// indicated by the specified `selectionId`. Return 0 on success, and
846 /// non-zero value otherwise (i.e., the selection is not found).
848
849 /// Set the value of this object to be the default for the selection
850 /// indicated by the specified `name` of the specified `nameLength`.
851 /// Return 0 on success, and non-zero value otherwise (i.e., the
852 /// selection is not found).
853 int makeSelection(const char *name, int nameLength);
854
855 /// Set the value of this object to be a "Selection5" value. Optionally
856 /// specify the `value` of the "Selection5". If `value` is not
857 /// specified, the default "Selection5" value is used.
859 bool& makeSelection5(bool value);
860
861 /// Set the value of this object to be a "Selection6" value. Optionally
862 /// specify the `value` of the "Selection6". If `value` is not
863 /// specified, the default "Selection6" value is used.
866
867 /// Invoke the specified `manipulator` on the address of the modifiable
868 /// selection, supplying `manipulator` with the corresponding selection
869 /// information structure. Return the value returned from the
870 /// invocation of `manipulator` if this object has a defined selection,
871 /// and -1 otherwise.
872 template<class MANIPULATOR>
873 int manipulateSelection(MANIPULATOR& manipulator);
874
875 /// Return a reference to the modifiable "Selection5" selection of this
876 /// object if "Selection5" is the current selection.
877 ///
878 /// \pre The behavior is undefined unless "Selection5" is the selection of this object.
879 bool& selection5();
880
881 /// Return a reference to the modifiable "Selection6" selection of this
882 /// object if "Selection6" is the current selection.
883 ///
884 /// \pre The behavior is undefined unless "Selection6" is the selection of this object.
886
887 // ACCESSORS
888
889 /// Format this object to the specified output `stream` at the
890 /// optionally specified indentation `level` and return a reference to
891 /// the modifiable `stream`. If `level` is specified, optionally
892 /// specify `spacesPerLevel`, the number of spaces per indentation level
893 /// for this and all of its nested objects. Each line is indented by
894 /// the absolute value of `level * spacesPerLevel`. If `level` is
895 /// negative, suppress indentation of the first line. If
896 /// `spacesPerLevel` is negative, suppress line breaks and format the
897 /// entire output on one line. If `stream` is initially invalid, this operation has no effect.
898 ///
899 /// \note Note that a trailing newline is provided
900 /// in multiline mode only.
901 bsl::ostream& print(bsl::ostream& stream,
902 int level = 0,
903 int spacesPerLevel = 4) const;
904
905 /// Write the value of this object to the specified output `stream`
906 /// using the specified `version` format and return a reference to the
907 /// modifiable `stream`. If `version` is not supported, `stream` is unmodified.
908 ///
909 /// \note Note that `version` is not written to `stream`.
910 /// See the `bslx` package-level documentation for more information
911 /// on `bdex` streaming of value-semantic types and containers.
912 template <class STREAM>
913 STREAM& bdexStreamOut(STREAM& stream, int version) const;
914
915 /// Return the id of the current selection if the selection is defined,
916 /// and -1 otherwise.
917 int selectionId() const;
918
919 /// Invoke the specified `accessor` on the non-modifiable selection,
920 /// supplying `accessor` with the corresponding selection information
921 /// structure. Return the value returned from the invocation of
922 /// `accessor` if this object has a defined selection, and -1 otherwise.
923 template<class ACCESSOR>
924 int accessSelection(ACCESSOR& accessor) const;
925
926 /// Return a reference to the non-modifiable "Selection5" selection of
927 /// this object if "Selection5" is the current selection.
928 ///
929 /// \pre The behavior is undefined unless "Selection5" is the selection of this object.
930 const bool& selection5() const;
931
932 /// Return a reference to the non-modifiable "Selection6" selection of
933 /// this object if "Selection6" is the current selection.
934 ///
935 /// \pre The behavior is undefined unless "Selection6" is the selection of this object.
936 const bsl::string& selection6() const;
937
938 /// Return `true` if the value of this object is a "Selection5" value,
939 /// and return `false` otherwise.
940 bool isSelection5Value() const;
941
942 /// Return `true` if the value of this object is a "Selection6" value,
943 /// and return `false` otherwise.
944 bool isSelection6Value() const;
945
946 /// Return `true` if the value of this object is undefined, and `false`
947 /// otherwise.
948 bool isUndefinedValue() const;
949
950 /// Return the symbolic name of the current selection of this object.
951 const char *selectionName() const;
952};
953
954// FREE OPERATORS
955
956/// Return `true` if the specified `lhs` and `rhs` objects have the same
957/// value, and `false` otherwise. Two `SequenceWithAnonymityChoice1` objects have the same
958/// value if either the selections in both objects have the same ids and
959/// the same values, or both selections are undefined.
960inline
962
963/// Return `true` if the specified `lhs` and `rhs` objects do not have the
964/// same values, as determined by `operator==`, and `false` otherwise.
965inline
967
968/// Format the specified `rhs` to the specified output `stream` and
969/// return a reference to the modifiable `stream`.
970inline
971bsl::ostream& operator<<(bsl::ostream& stream, const SequenceWithAnonymityChoice1& rhs);
972
973} // close package namespace
974
975// TRAITS
976
978
979namespace balb {
980
981 // ===================
982 // class SimpleRequest
983 // ===================
984
986
987 // INSTANCE DATA
988 bsl::string d_data;
989 int d_responseLength;
990
991 public:
992 // TYPES
993 enum {
996 };
997
998 enum {
1001
1002 enum {
1006
1007 // CONSTANTS
1008 static const char CLASS_NAME[];
1009
1011
1012 public:
1013 // CLASS METHODS
1014
1015 /// Return the most current `bdex` streaming version number supported by
1016 /// this class. See the `bslx` package-level documentation for more
1017 /// information on `bdex` streaming of value-semantic types and
1018 /// containers.
1019 static int maxSupportedBdexVersion();
1020
1021 /// Return attribute information for the attribute indicated by the
1022 /// specified `id` if the attribute exists, and 0 otherwise.
1024
1025 /// Return attribute information for the attribute indicated by the
1026 /// specified `name` of the specified `nameLength` if the attribute
1027 /// exists, and 0 otherwise.
1029 const char *name,
1030 int nameLength);
1031
1032 // CREATORS
1033
1034 /// Create an object of type `SimpleRequest` having the default value.
1035 /// Use the optionally specified `basicAllocator` to supply memory. If
1036 /// `basicAllocator` is 0, the currently installed default allocator is
1037 /// used.
1038 explicit SimpleRequest(bslma::Allocator *basicAllocator = 0);
1039
1040 /// Create an object of type `SimpleRequest` having the value of the
1041 /// specified `original` object. Use the optionally specified
1042 /// `basicAllocator` to supply memory. If `basicAllocator` is 0, the
1043 /// currently installed default allocator is used.
1045 bslma::Allocator *basicAllocator = 0);
1046
1047 /// Destroy this object.
1049
1050 // MANIPULATORS
1051
1052 /// Assign to this object the value of the specified `rhs` object.
1054
1055 /// Assign to this object the value read from the specified input
1056 /// `stream` using the specified `version` format and return a reference
1057 /// to the modifiable `stream`. If `stream` is initially invalid, this
1058 /// operation has no effect. If `stream` becomes invalid during this
1059 /// operation, this object is valid, but its value is undefined. If
1060 /// `version` is not supported, `stream` is marked invalid and this object is unaltered.
1061 ///
1062 /// \note Note that no version is read from `stream`.
1063 /// See the `bslx` package-level documentation for more information on
1064 /// `bdex` streaming of value-semantic types and containers.
1065 template <class STREAM>
1066 STREAM& bdexStreamIn(STREAM& stream, int version);
1067
1068 /// Reset this object to the default value (i.e., its value upon
1069 /// default construction).
1070 void reset();
1071
1072 /// Invoke the specified `manipulator` sequentially on the address of
1073 /// each (modifiable) attribute of this object, supplying `manipulator`
1074 /// with the corresponding attribute information structure until such
1075 /// invocation returns a non-zero value. Return the value from the
1076 /// last invocation of `manipulator` (i.e., the invocation that
1077 /// terminated the sequence).
1078 template<class MANIPULATOR>
1079 int manipulateAttributes(MANIPULATOR& manipulator);
1080
1081 /// Invoke the specified `manipulator` on the address of
1082 /// the (modifiable) attribute indicated by the specified `id`,
1083 /// supplying `manipulator` with the corresponding attribute
1084 /// information structure. Return the value returned from the
1085 /// invocation of `manipulator` if `id` identifies an attribute of this
1086 /// class, and -1 otherwise.
1087 template<class MANIPULATOR>
1088 int manipulateAttribute(MANIPULATOR& manipulator, int id);
1089
1090 /// Invoke the specified `manipulator` on the address of
1091 /// the (modifiable) attribute indicated by the specified `name` of the
1092 /// specified `nameLength`, supplying `manipulator` with the
1093 /// corresponding attribute information structure. Return the value
1094 /// returned from the invocation of `manipulator` if `name` identifies
1095 /// an attribute of this class, and -1 otherwise.
1096 template<class MANIPULATOR>
1097 int manipulateAttribute(MANIPULATOR& manipulator,
1098 const char *name,
1099 int nameLength);
1100
1101 /// Return a reference to the modifiable "Data" attribute of this
1102 /// object.
1103 bsl::string& data();
1104
1105 /// Return a reference to the modifiable "ResponseLength" attribute of
1106 /// this object.
1107 int& responseLength();
1108
1109 // ACCESSORS
1110
1111 /// Format this object to the specified output `stream` at the
1112 /// optionally specified indentation `level` and return a reference to
1113 /// the modifiable `stream`. If `level` is specified, optionally
1114 /// specify `spacesPerLevel`, the number of spaces per indentation level
1115 /// for this and all of its nested objects. Each line is indented by
1116 /// the absolute value of `level * spacesPerLevel`. If `level` is
1117 /// negative, suppress indentation of the first line. If
1118 /// `spacesPerLevel` is negative, suppress line breaks and format the
1119 /// entire output on one line. If `stream` is initially invalid, this operation has no effect.
1120 ///
1121 /// \note Note that a trailing newline is provided
1122 /// in multiline mode only.
1123 bsl::ostream& print(bsl::ostream& stream,
1124 int level = 0,
1125 int spacesPerLevel = 4) const;
1126
1127 /// Write the value of this object to the specified output `stream`
1128 /// using the specified `version` format and return a reference to the
1129 /// modifiable `stream`. If `version` is not supported, `stream` is unmodified.
1130 ///
1131 /// \note Note that `version` is not written to `stream`.
1132 /// See the `bslx` package-level documentation for more information
1133 /// on `bdex` streaming of value-semantic types and containers.
1134 template <class STREAM>
1135 STREAM& bdexStreamOut(STREAM& stream, int version) const;
1136
1137 /// Invoke the specified `accessor` sequentially on each
1138 /// (non-modifiable) attribute of this object, supplying `accessor`
1139 /// with the corresponding attribute information structure until such
1140 /// invocation returns a non-zero value. Return the value from the
1141 /// last invocation of `accessor` (i.e., the invocation that terminated
1142 /// the sequence).
1143 template<class ACCESSOR>
1144 int accessAttributes(ACCESSOR& accessor) const;
1145
1146 /// Invoke the specified `accessor` on the (non-modifiable) attribute
1147 /// of this object indicated by the specified `id`, supplying `accessor`
1148 /// with the corresponding attribute information structure. Return the
1149 /// value returned from the invocation of `accessor` if `id` identifies
1150 /// an attribute of this class, and -1 otherwise.
1151 template<class ACCESSOR>
1152 int accessAttribute(ACCESSOR& accessor, int id) const;
1153
1154 /// Invoke the specified `accessor` on the (non-modifiable) attribute
1155 /// of this object indicated by the specified `name` of the specified
1156 /// `nameLength`, supplying `accessor` with the corresponding attribute
1157 /// information structure. Return the value returned from the
1158 /// invocation of `accessor` if `name` identifies an attribute of this
1159 /// class, and -1 otherwise.
1160 template<class ACCESSOR>
1161 int accessAttribute(ACCESSOR& accessor,
1162 const char *name,
1163 int nameLength) const;
1164
1165 /// Return a reference to the non-modifiable "Data" attribute of this
1166 /// object.
1167 const bsl::string& data() const;
1168
1169 /// Return a reference to the non-modifiable "ResponseLength" attribute
1170 /// of this object.
1171 int responseLength() const;
1172};
1173
1174// FREE OPERATORS
1175
1176/// Return `true` if the specified `lhs` and `rhs` attribute objects have
1177/// the same value, and `false` otherwise. Two attribute objects have the
1178/// same value if each respective attribute has the same value.
1179inline
1180bool operator==(const SimpleRequest& lhs, const SimpleRequest& rhs);
1181
1182/// Return `true` if the specified `lhs` and `rhs` attribute objects do not
1183/// have the same value, and `false` otherwise. Two attribute objects do
1184/// not have the same value if one or more respective attributes differ in
1185/// values.
1186inline
1187bool operator!=(const SimpleRequest& lhs, const SimpleRequest& rhs);
1188
1189/// Format the specified `rhs` to the specified output `stream` and
1190/// return a reference to the modifiable `stream`.
1191inline
1192bsl::ostream& operator<<(bsl::ostream& stream, const SimpleRequest& rhs);
1193
1194} // close package namespace
1195
1196// TRAITS
1197
1199
1200namespace balb {
1201
1202 // ======================
1203 // class UnsignedSequence
1204 // ======================
1205
1207
1208 // INSTANCE DATA
1209 bsls::Types::Uint64 d_element3;
1210 unsigned int d_element1;
1211 unsigned short d_element2;
1212
1213 public:
1214 // TYPES
1215 enum {
1220
1221 enum {
1222 NUM_ATTRIBUTES = 3
1224
1225 enum {
1230
1231 // CONSTANTS
1232 static const char CLASS_NAME[];
1233
1235
1236 public:
1237 // CLASS METHODS
1238
1239 /// Return the most current `bdex` streaming version number supported by
1240 /// this class. See the `bslx` package-level documentation for more
1241 /// information on `bdex` streaming of value-semantic types and
1242 /// containers.
1243 static int maxSupportedBdexVersion();
1244
1245 /// Return attribute information for the attribute indicated by the
1246 /// specified `id` if the attribute exists, and 0 otherwise.
1248
1249 /// Return attribute information for the attribute indicated by the
1250 /// specified `name` of the specified `nameLength` if the attribute
1251 /// exists, and 0 otherwise.
1253 const char *name,
1254 int nameLength);
1255
1256 // CREATORS
1257
1258 /// Create an object of type `UnsignedSequence` having the default
1259 /// value.
1261
1262 /// Create an object of type `UnsignedSequence` having the value of the
1263 /// specified `original` object.
1265
1266 /// Destroy this object.
1268
1269 // MANIPULATORS
1270
1271 /// Assign to this object the value of the specified `rhs` object.
1273
1274 /// Assign to this object the value read from the specified input
1275 /// `stream` using the specified `version` format and return a reference
1276 /// to the modifiable `stream`. If `stream` is initially invalid, this
1277 /// operation has no effect. If `stream` becomes invalid during this
1278 /// operation, this object is valid, but its value is undefined. If
1279 /// `version` is not supported, `stream` is marked invalid and this object is unaltered.
1280 ///
1281 /// \note Note that no version is read from `stream`.
1282 /// See the `bslx` package-level documentation for more information on
1283 /// `bdex` streaming of value-semantic types and containers.
1284 template <class STREAM>
1285 STREAM& bdexStreamIn(STREAM& stream, int version);
1286
1287 /// Reset this object to the default value (i.e., its value upon
1288 /// default construction).
1289 void reset();
1290
1291 /// Invoke the specified `manipulator` sequentially on the address of
1292 /// each (modifiable) attribute of this object, supplying `manipulator`
1293 /// with the corresponding attribute information structure until such
1294 /// invocation returns a non-zero value. Return the value from the
1295 /// last invocation of `manipulator` (i.e., the invocation that
1296 /// terminated the sequence).
1297 template<class MANIPULATOR>
1298 int manipulateAttributes(MANIPULATOR& manipulator);
1299
1300 /// Invoke the specified `manipulator` on the address of
1301 /// the (modifiable) attribute indicated by the specified `id`,
1302 /// supplying `manipulator` with the corresponding attribute
1303 /// information structure. Return the value returned from the
1304 /// invocation of `manipulator` if `id` identifies an attribute of this
1305 /// class, and -1 otherwise.
1306 template<class MANIPULATOR>
1307 int manipulateAttribute(MANIPULATOR& manipulator, int id);
1308
1309 /// Invoke the specified `manipulator` on the address of
1310 /// the (modifiable) attribute indicated by the specified `name` of the
1311 /// specified `nameLength`, supplying `manipulator` with the
1312 /// corresponding attribute information structure. Return the value
1313 /// returned from the invocation of `manipulator` if `name` identifies
1314 /// an attribute of this class, and -1 otherwise.
1315 template<class MANIPULATOR>
1316 int manipulateAttribute(MANIPULATOR& manipulator,
1317 const char *name,
1318 int nameLength);
1319
1320 /// Return a reference to the modifiable "Element1" attribute of this
1321 /// object.
1322 unsigned int& element1();
1323
1324 /// Return a reference to the modifiable "Element2" attribute of this
1325 /// object.
1326 unsigned short& element2();
1327
1328 /// Return a reference to the modifiable "Element3" attribute of this
1329 /// object.
1331
1332 // ACCESSORS
1333
1334 /// Format this object to the specified output `stream` at the
1335 /// optionally specified indentation `level` and return a reference to
1336 /// the modifiable `stream`. If `level` is specified, optionally
1337 /// specify `spacesPerLevel`, the number of spaces per indentation level
1338 /// for this and all of its nested objects. Each line is indented by
1339 /// the absolute value of `level * spacesPerLevel`. If `level` is
1340 /// negative, suppress indentation of the first line. If
1341 /// `spacesPerLevel` is negative, suppress line breaks and format the
1342 /// entire output on one line. If `stream` is initially invalid, this operation has no effect.
1343 ///
1344 /// \note Note that a trailing newline is provided
1345 /// in multiline mode only.
1346 bsl::ostream& print(bsl::ostream& stream,
1347 int level = 0,
1348 int spacesPerLevel = 4) const;
1349
1350 /// Write the value of this object to the specified output `stream`
1351 /// using the specified `version` format and return a reference to the
1352 /// modifiable `stream`. If `version` is not supported, `stream` is unmodified.
1353 ///
1354 /// \note Note that `version` is not written to `stream`.
1355 /// See the `bslx` package-level documentation for more information
1356 /// on `bdex` streaming of value-semantic types and containers.
1357 template <class STREAM>
1358 STREAM& bdexStreamOut(STREAM& stream, int version) const;
1359
1360 /// Invoke the specified `accessor` sequentially on each
1361 /// (non-modifiable) attribute of this object, supplying `accessor`
1362 /// with the corresponding attribute information structure until such
1363 /// invocation returns a non-zero value. Return the value from the
1364 /// last invocation of `accessor` (i.e., the invocation that terminated
1365 /// the sequence).
1366 template<class ACCESSOR>
1367 int accessAttributes(ACCESSOR& accessor) const;
1368
1369 /// Invoke the specified `accessor` on the (non-modifiable) attribute
1370 /// of this object indicated by the specified `id`, supplying `accessor`
1371 /// with the corresponding attribute information structure. Return the
1372 /// value returned from the invocation of `accessor` if `id` identifies
1373 /// an attribute of this class, and -1 otherwise.
1374 template<class ACCESSOR>
1375 int accessAttribute(ACCESSOR& accessor, int id) const;
1376
1377 /// Invoke the specified `accessor` on the (non-modifiable) attribute
1378 /// of this object indicated by the specified `name` of the specified
1379 /// `nameLength`, supplying `accessor` with the corresponding attribute
1380 /// information structure. Return the value returned from the
1381 /// invocation of `accessor` if `name` identifies an attribute of this
1382 /// class, and -1 otherwise.
1383 template<class ACCESSOR>
1384 int accessAttribute(ACCESSOR& accessor,
1385 const char *name,
1386 int nameLength) const;
1387
1388 /// Return a reference to the non-modifiable "Element1" attribute of
1389 /// this object.
1390 unsigned int element1() const;
1391
1392 /// Return a reference to the non-modifiable "Element2" attribute of
1393 /// this object.
1394 unsigned short element2() const;
1395
1396 /// Return a reference to the non-modifiable "Element3" attribute of
1397 /// this object.
1399};
1400
1401// FREE OPERATORS
1402
1403/// Return `true` if the specified `lhs` and `rhs` attribute objects have
1404/// the same value, and `false` otherwise. Two attribute objects have the
1405/// same value if each respective attribute has the same value.
1406inline
1407bool operator==(const UnsignedSequence& lhs, const UnsignedSequence& rhs);
1408
1409/// Return `true` if the specified `lhs` and `rhs` attribute objects do not
1410/// have the same value, and `false` otherwise. Two attribute objects do
1411/// not have the same value if one or more respective attributes differ in
1412/// values.
1413inline
1414bool operator!=(const UnsignedSequence& lhs, const UnsignedSequence& rhs);
1415
1416/// Format the specified `rhs` to the specified output `stream` and
1417/// return a reference to the modifiable `stream`.
1418inline
1419bsl::ostream& operator<<(bsl::ostream& stream, const UnsignedSequence& rhs);
1420
1421} // close package namespace
1422
1423// TRAITS
1424
1426
1427namespace balb {
1428
1429 // ==================
1430 // class VoidSequence
1431 // ==================
1432
1434
1435 // INSTANCE DATA
1436
1437 public:
1438 // TYPES
1439 enum {
1440 NUM_ATTRIBUTES = 0
1442
1443
1444 // CONSTANTS
1445 static const char CLASS_NAME[];
1446
1447 public:
1448 // CLASS METHODS
1449
1450 /// Return the most current `bdex` streaming version number supported by
1451 /// this class. See the `bslx` package-level documentation for more
1452 /// information on `bdex` streaming of value-semantic types and
1453 /// containers.
1454 static int maxSupportedBdexVersion();
1455
1456 /// Return attribute information for the attribute indicated by the
1457 /// specified `id` if the attribute exists, and 0 otherwise.
1459
1460 /// Return attribute information for the attribute indicated by the
1461 /// specified `name` of the specified `nameLength` if the attribute
1462 /// exists, and 0 otherwise.
1464 const char *name,
1465 int nameLength);
1466
1467 // CREATORS
1468
1469 /// Create an object of type `VoidSequence` having the default value.
1471
1472 /// Create an object of type `VoidSequence` having the value of the
1473 /// specified `original` object.
1474 VoidSequence(const VoidSequence& original);
1475
1476 /// Destroy this object.
1478
1479 // MANIPULATORS
1480
1481 /// Assign to this object the value of the specified `rhs` object.
1483
1484 /// Assign to this object the value read from the specified input
1485 /// `stream` using the specified `version` format and return a reference
1486 /// to the modifiable `stream`. If `stream` is initially invalid, this
1487 /// operation has no effect. If `stream` becomes invalid during this
1488 /// operation, this object is valid, but its value is undefined. If
1489 /// `version` is not supported, `stream` is marked invalid and this object is unaltered.
1490 ///
1491 /// \note Note that no version is read from `stream`.
1492 /// See the `bslx` package-level documentation for more information on
1493 /// `bdex` streaming of value-semantic types and containers.
1494 template <class STREAM>
1495 STREAM& bdexStreamIn(STREAM& stream, int version);
1496
1497 /// Reset this object to the default value (i.e., its value upon
1498 /// default construction).
1499 void reset();
1500
1501 /// Invoke the specified `manipulator` sequentially on the address of
1502 /// each (modifiable) attribute of this object, supplying `manipulator`
1503 /// with the corresponding attribute information structure until such
1504 /// invocation returns a non-zero value. Return the value from the
1505 /// last invocation of `manipulator` (i.e., the invocation that
1506 /// terminated the sequence).
1507 template<class MANIPULATOR>
1508 int manipulateAttributes(MANIPULATOR& manipulator);
1509
1510 /// Invoke the specified `manipulator` on the address of
1511 /// the (modifiable) attribute indicated by the specified `id`,
1512 /// supplying `manipulator` with the corresponding attribute
1513 /// information structure. Return the value returned from the
1514 /// invocation of `manipulator` if `id` identifies an attribute of this
1515 /// class, and -1 otherwise.
1516 template<class MANIPULATOR>
1517 int manipulateAttribute(MANIPULATOR& manipulator, int id);
1518
1519 /// Invoke the specified `manipulator` on the address of
1520 /// the (modifiable) attribute indicated by the specified `name` of the
1521 /// specified `nameLength`, supplying `manipulator` with the
1522 /// corresponding attribute information structure. Return the value
1523 /// returned from the invocation of `manipulator` if `name` identifies
1524 /// an attribute of this class, and -1 otherwise.
1525 template<class MANIPULATOR>
1526 int manipulateAttribute(MANIPULATOR& manipulator,
1527 const char *name,
1528 int nameLength);
1529
1530 // ACCESSORS
1531
1532 /// Format this object to the specified output `stream` at the
1533 /// optionally specified indentation `level` and return a reference to
1534 /// the modifiable `stream`. If `level` is specified, optionally
1535 /// specify `spacesPerLevel`, the number of spaces per indentation level
1536 /// for this and all of its nested objects. Each line is indented by
1537 /// the absolute value of `level * spacesPerLevel`. If `level` is
1538 /// negative, suppress indentation of the first line. If
1539 /// `spacesPerLevel` is negative, suppress line breaks and format the
1540 /// entire output on one line. If `stream` is initially invalid, this operation has no effect.
1541 ///
1542 /// \note Note that a trailing newline is provided
1543 /// in multiline mode only.
1544 bsl::ostream& print(bsl::ostream& stream,
1545 int level = 0,
1546 int spacesPerLevel = 4) const;
1547
1548 /// Write the value of this object to the specified output `stream`
1549 /// using the specified `version` format and return a reference to the
1550 /// modifiable `stream`. If `version` is not supported, `stream` is unmodified.
1551 ///
1552 /// \note Note that `version` is not written to `stream`.
1553 /// See the `bslx` package-level documentation for more information
1554 /// on `bdex` streaming of value-semantic types and containers.
1555 template <class STREAM>
1556 STREAM& bdexStreamOut(STREAM& stream, int version) const;
1557
1558 /// Invoke the specified `accessor` sequentially on each
1559 /// (non-modifiable) attribute of this object, supplying `accessor`
1560 /// with the corresponding attribute information structure until such
1561 /// invocation returns a non-zero value. Return the value from the
1562 /// last invocation of `accessor` (i.e., the invocation that terminated
1563 /// the sequence).
1564 template<class ACCESSOR>
1565 int accessAttributes(ACCESSOR& accessor) const;
1566
1567 /// Invoke the specified `accessor` on the (non-modifiable) attribute
1568 /// of this object indicated by the specified `id`, supplying `accessor`
1569 /// with the corresponding attribute information structure. Return the
1570 /// value returned from the invocation of `accessor` if `id` identifies
1571 /// an attribute of this class, and -1 otherwise.
1572 template<class ACCESSOR>
1573 int accessAttribute(ACCESSOR& accessor, int id) const;
1574
1575 /// Invoke the specified `accessor` on the (non-modifiable) attribute
1576 /// of this object indicated by the specified `name` of the specified
1577 /// `nameLength`, supplying `accessor` with the corresponding attribute
1578 /// information structure. Return the value returned from the
1579 /// invocation of `accessor` if `name` identifies an attribute of this
1580 /// class, and -1 otherwise.
1581 template<class ACCESSOR>
1582 int accessAttribute(ACCESSOR& accessor,
1583 const char *name,
1584 int nameLength) const;
1585};
1586
1587// FREE OPERATORS
1588
1589/// Return `true` if the specified `lhs` and `rhs` attribute objects have
1590/// the same value, and `false` otherwise. Two attribute objects have the
1591/// same value if each respective attribute has the same value.
1592inline
1593bool operator==(const VoidSequence& lhs, const VoidSequence& rhs);
1594
1595/// Return `true` if the specified `lhs` and `rhs` attribute objects do not
1596/// have the same value, and `false` otherwise. Two attribute objects do
1597/// not have the same value if one or more respective attributes differ in
1598/// values.
1599inline
1600bool operator!=(const VoidSequence& lhs, const VoidSequence& rhs);
1601
1602/// Format the specified `rhs` to the specified output `stream` and
1603/// return a reference to the modifiable `stream`.
1604inline
1605bsl::ostream& operator<<(bsl::ostream& stream, const VoidSequence& rhs);
1606
1607} // close package namespace
1608
1609// TRAITS
1610
1612
1613namespace balb {
1614
1615 // =============
1616 // class Choice5
1617 // =============
1618
1619class Choice5 {
1620
1621 // INSTANCE DATA
1622 union {
1625 };
1626
1627 int d_selectionId;
1628 bslma::Allocator *d_allocator_p;
1629
1630 public:
1631 // TYPES
1632
1633 enum {
1638
1639 enum {
1640 NUM_SELECTIONS = 2
1642
1643 enum {
1647
1648 // CONSTANTS
1649 static const char CLASS_NAME[];
1650
1652
1653 // CLASS METHODS
1654
1655 /// Return the most current `bdex` streaming version number supported by
1656 /// this class. See the `bslx` package-level documentation for more
1657 /// information on `bdex` streaming of value-semantic types and
1658 /// containers.
1659 static int maxSupportedBdexVersion();
1660
1661 /// Return selection information for the selection indicated by the
1662 /// specified `id` if the selection exists, and 0 otherwise.
1664
1665 /// Return selection information for the selection indicated by the
1666 /// specified `name` of the specified `nameLength` if the selection
1667 /// exists, and 0 otherwise.
1669 const char *name,
1670 int nameLength);
1671
1672 // CREATORS
1673
1674 /// Create an object of type `Choice5` having the default value. Use
1675 /// the optionally specified `basicAllocator` to supply memory. If
1676 /// `basicAllocator` is 0, the currently installed default allocator is
1677 /// used.
1678 explicit Choice5(bslma::Allocator *basicAllocator = 0);
1679
1680 /// Create an object of type `Choice5` having the value of the specified
1681 /// `original` object. Use the optionally specified `basicAllocator` to
1682 /// supply memory. If `basicAllocator` is 0, the currently installed
1683 /// default allocator is used.
1684 Choice5(const Choice5& original,
1685 bslma::Allocator *basicAllocator = 0);
1686
1687 /// Destroy this object.
1688 ~Choice5();
1689
1690 // MANIPULATORS
1691
1692 /// Assign to this object the value of the specified `rhs` object.
1694
1695 /// Assign to this object the value read from the specified input
1696 /// `stream` using the specified `version` format and return a reference
1697 /// to the modifiable `stream`. If `stream` is initially invalid, this
1698 /// operation has no effect. If `stream` becomes invalid during this
1699 /// operation, this object is valid, but its value is undefined. If
1700 /// `version` is not supported, `stream` is marked invalid and this object is unaltered.
1701 ///
1702 /// \note Note that no version is read from `stream`.
1703 /// See the `bslx` package-level documentation for more information on
1704 /// `bdex` streaming of value-semantic types and containers.
1705 template <class STREAM>
1706 STREAM& bdexStreamIn(STREAM& stream, int version);
1707
1708 /// Reset this object to the default value (i.e., its value upon default
1709 /// construction).
1710 void reset();
1711
1712 /// Set the value of this object to be the default for the selection
1713 /// indicated by the specified `selectionId`. Return 0 on success, and
1714 /// non-zero value otherwise (i.e., the selection is not found).
1716
1717 /// Set the value of this object to be the default for the selection
1718 /// indicated by the specified `name` of the specified `nameLength`.
1719 /// Return 0 on success, and non-zero value otherwise (i.e., the
1720 /// selection is not found).
1721 int makeSelection(const char *name, int nameLength);
1722
1723 /// Set the value of this object to be a "Selection1" value. Optionally
1724 /// specify the `value` of the "Selection1". If `value` is not
1725 /// specified, the default "Selection1" value is used.
1728
1729 /// Set the value of this object to be a "Selection2" value. Optionally
1730 /// specify the `value` of the "Selection2". If `value` is not
1731 /// specified, the default "Selection2" value is used.
1733 int& makeSelection2(int value);
1734
1735 /// Invoke the specified `manipulator` on the address of the modifiable
1736 /// selection, supplying `manipulator` with the corresponding selection
1737 /// information structure. Return the value returned from the
1738 /// invocation of `manipulator` if this object has a defined selection,
1739 /// and -1 otherwise.
1740 template<class MANIPULATOR>
1741 int manipulateSelection(MANIPULATOR& manipulator);
1742
1743 /// Return a reference to the modifiable "Selection1" selection of this
1744 /// object if "Selection1" is the current selection.
1745 ///
1746 /// \pre The behavior is undefined unless "Selection1" is the selection of this object.
1748
1749 /// Return a reference to the modifiable "Selection2" selection of this
1750 /// object if "Selection2" is the current selection.
1751 ///
1752 /// \pre The behavior is undefined unless "Selection2" is the selection of this object.
1753 int& selection2();
1754
1755 // ACCESSORS
1756
1757 /// Format this object to the specified output `stream` at the
1758 /// optionally specified indentation `level` and return a reference to
1759 /// the modifiable `stream`. If `level` is specified, optionally
1760 /// specify `spacesPerLevel`, the number of spaces per indentation level
1761 /// for this and all of its nested objects. Each line is indented by
1762 /// the absolute value of `level * spacesPerLevel`. If `level` is
1763 /// negative, suppress indentation of the first line. If
1764 /// `spacesPerLevel` is negative, suppress line breaks and format the
1765 /// entire output on one line. If `stream` is initially invalid, this operation has no effect.
1766 ///
1767 /// \note Note that a trailing newline is provided
1768 /// in multiline mode only.
1769 bsl::ostream& print(bsl::ostream& stream,
1770 int level = 0,
1771 int spacesPerLevel = 4) const;
1772
1773 /// Write the value of this object to the specified output `stream`
1774 /// using the specified `version` format and return a reference to the
1775 /// modifiable `stream`. If `version` is not supported, `stream` is unmodified.
1776 ///
1777 /// \note Note that `version` is not written to `stream`.
1778 /// See the `bslx` package-level documentation for more information
1779 /// on `bdex` streaming of value-semantic types and containers.
1780 template <class STREAM>
1781 STREAM& bdexStreamOut(STREAM& stream, int version) const;
1782
1783 /// Return the id of the current selection if the selection is defined,
1784 /// and -1 otherwise.
1785 int selectionId() const;
1786
1787 /// Invoke the specified `accessor` on the non-modifiable selection,
1788 /// supplying `accessor` with the corresponding selection information
1789 /// structure. Return the value returned from the invocation of
1790 /// `accessor` if this object has a defined selection, and -1 otherwise.
1791 template<class ACCESSOR>
1792 int accessSelection(ACCESSOR& accessor) const;
1793
1794 /// Return a reference to the non-modifiable "Selection1" selection of
1795 /// this object if "Selection1" is the current selection.
1796 ///
1797 /// \pre The behavior is undefined unless "Selection1" is the selection of this object.
1798 const Choice4& selection1() const;
1799
1800 /// Return a reference to the non-modifiable "Selection2" selection of
1801 /// this object if "Selection2" is the current selection.
1802 ///
1803 /// \pre The behavior is undefined unless "Selection2" is the selection of this object.
1804 const int& selection2() const;
1805
1806 /// Return `true` if the value of this object is a "Selection1" value,
1807 /// and return `false` otherwise.
1808 bool isSelection1Value() const;
1809
1810 /// Return `true` if the value of this object is a "Selection2" value,
1811 /// and return `false` otherwise.
1812 bool isSelection2Value() const;
1813
1814 /// Return `true` if the value of this object is undefined, and `false`
1815 /// otherwise.
1816 bool isUndefinedValue() const;
1817
1818 /// Return the symbolic name of the current selection of this object.
1819 const char *selectionName() const;
1820};
1821
1822// FREE OPERATORS
1823
1824/// Return `true` if the specified `lhs` and `rhs` objects have the same
1825/// value, and `false` otherwise. Two `Choice5` objects have the same
1826/// value if either the selections in both objects have the same ids and
1827/// the same values, or both selections are undefined.
1828inline
1829bool operator==(const Choice5& lhs, const Choice5& rhs);
1830
1831/// Return `true` if the specified `lhs` and `rhs` objects do not have the
1832/// same values, as determined by `operator==`, and `false` otherwise.
1833inline
1834bool operator!=(const Choice5& lhs, const Choice5& rhs);
1835
1836/// Format the specified `rhs` to the specified output `stream` and
1837/// return a reference to the modifiable `stream`.
1838inline
1839bsl::ostream& operator<<(bsl::ostream& stream, const Choice5& rhs);
1840
1841} // close package namespace
1842
1843// TRAITS
1844
1846
1847namespace balb {
1848
1849 // ===============
1850 // class Sequence3
1851 // ===============
1852
1854
1855 // INSTANCE DATA
1856 bsl::vector<bsl::string> d_element2;
1861 bdlb::NullableValue<bool> d_element3;
1862
1863 public:
1864 // TYPES
1865 enum {
1873
1874 enum {
1875 NUM_ATTRIBUTES = 6
1877
1878 enum {
1886
1887 // CONSTANTS
1888 static const char CLASS_NAME[];
1889
1891
1892 public:
1893 // CLASS METHODS
1894
1895 /// Return the most current `bdex` streaming version number supported by
1896 /// this class. See the `bslx` package-level documentation for more
1897 /// information on `bdex` streaming of value-semantic types and
1898 /// containers.
1899 static int maxSupportedBdexVersion();
1900
1901 /// Return attribute information for the attribute indicated by the
1902 /// specified `id` if the attribute exists, and 0 otherwise.
1904
1905 /// Return attribute information for the attribute indicated by the
1906 /// specified `name` of the specified `nameLength` if the attribute
1907 /// exists, and 0 otherwise.
1909 const char *name,
1910 int nameLength);
1911
1912 // CREATORS
1913
1914 /// Create an object of type `Sequence3` having the default value. Use
1915 /// the optionally specified `basicAllocator` to supply memory. If
1916 /// `basicAllocator` is 0, the currently installed default allocator is
1917 /// used.
1918 explicit Sequence3(bslma::Allocator *basicAllocator = 0);
1919
1920 /// Create an object of type `Sequence3` having the value of the
1921 /// specified `original` object. Use the optionally specified
1922 /// `basicAllocator` to supply memory. If `basicAllocator` is 0, the
1923 /// currently installed default allocator is used.
1924 Sequence3(const Sequence3& original,
1925 bslma::Allocator *basicAllocator = 0);
1926
1927 /// Destroy this object.
1929
1930 // MANIPULATORS
1931
1932 /// Assign to this object the value of the specified `rhs` object.
1934
1935 /// Assign to this object the value read from the specified input
1936 /// `stream` using the specified `version` format and return a reference
1937 /// to the modifiable `stream`. If `stream` is initially invalid, this
1938 /// operation has no effect. If `stream` becomes invalid during this
1939 /// operation, this object is valid, but its value is undefined. If
1940 /// `version` is not supported, `stream` is marked invalid and this object is unaltered.
1941 ///
1942 /// \note Note that no version is read from `stream`.
1943 /// See the `bslx` package-level documentation for more information on
1944 /// `bdex` streaming of value-semantic types and containers.
1945 template <class STREAM>
1946 STREAM& bdexStreamIn(STREAM& stream, int version);
1947
1948 /// Reset this object to the default value (i.e., its value upon
1949 /// default construction).
1950 void reset();
1951
1952 /// Invoke the specified `manipulator` sequentially on the address of
1953 /// each (modifiable) attribute of this object, supplying `manipulator`
1954 /// with the corresponding attribute information structure until such
1955 /// invocation returns a non-zero value. Return the value from the
1956 /// last invocation of `manipulator` (i.e., the invocation that
1957 /// terminated the sequence).
1958 template<class MANIPULATOR>
1959 int manipulateAttributes(MANIPULATOR& manipulator);
1960
1961 /// Invoke the specified `manipulator` on the address of
1962 /// the (modifiable) attribute indicated by the specified `id`,
1963 /// supplying `manipulator` with the corresponding attribute
1964 /// information structure. Return the value returned from the
1965 /// invocation of `manipulator` if `id` identifies an attribute of this
1966 /// class, and -1 otherwise.
1967 template<class MANIPULATOR>
1968 int manipulateAttribute(MANIPULATOR& manipulator, int id);
1969
1970 /// Invoke the specified `manipulator` on the address of
1971 /// the (modifiable) attribute indicated by the specified `name` of the
1972 /// specified `nameLength`, supplying `manipulator` with the
1973 /// corresponding attribute information structure. Return the value
1974 /// returned from the invocation of `manipulator` if `name` identifies
1975 /// an attribute of this class, and -1 otherwise.
1976 template<class MANIPULATOR>
1977 int manipulateAttribute(MANIPULATOR& manipulator,
1978 const char *name,
1979 int nameLength);
1980
1981 /// Return a reference to the modifiable "Element1" attribute of this
1982 /// object.
1984
1985 /// Return a reference to the modifiable "Element2" attribute of this
1986 /// object.
1988
1989 /// Return a reference to the modifiable "Element3" attribute of this
1990 /// object.
1992
1993 /// Return a reference to the modifiable "Element4" attribute of this
1994 /// object.
1996
1997 /// Return a reference to the modifiable "Element5" attribute of this
1998 /// object.
2000
2001 /// Return a reference to the modifiable "Element6" attribute of this
2002 /// object.
2004
2005 // ACCESSORS
2006
2007 /// Format this object to the specified output `stream` at the
2008 /// optionally specified indentation `level` and return a reference to
2009 /// the modifiable `stream`. If `level` is specified, optionally
2010 /// specify `spacesPerLevel`, the number of spaces per indentation level
2011 /// for this and all of its nested objects. Each line is indented by
2012 /// the absolute value of `level * spacesPerLevel`. If `level` is
2013 /// negative, suppress indentation of the first line. If
2014 /// `spacesPerLevel` is negative, suppress line breaks and format the
2015 /// entire output on one line. If `stream` is initially invalid, this operation has no effect.
2016 ///
2017 /// \note Note that a trailing newline is provided
2018 /// in multiline mode only.
2019 bsl::ostream& print(bsl::ostream& stream,
2020 int level = 0,
2021 int spacesPerLevel = 4) const;
2022
2023 /// Write the value of this object to the specified output `stream`
2024 /// using the specified `version` format and return a reference to the
2025 /// modifiable `stream`. If `version` is not supported, `stream` is unmodified.
2026 ///
2027 /// \note Note that `version` is not written to `stream`.
2028 /// See the `bslx` package-level documentation for more information
2029 /// on `bdex` streaming of value-semantic types and containers.
2030 template <class STREAM>
2031 STREAM& bdexStreamOut(STREAM& stream, int version) const;
2032
2033 /// Invoke the specified `accessor` sequentially on each
2034 /// (non-modifiable) attribute of this object, supplying `accessor`
2035 /// with the corresponding attribute information structure until such
2036 /// invocation returns a non-zero value. Return the value from the
2037 /// last invocation of `accessor` (i.e., the invocation that terminated
2038 /// the sequence).
2039 template<class ACCESSOR>
2040 int accessAttributes(ACCESSOR& accessor) const;
2041
2042 /// Invoke the specified `accessor` on the (non-modifiable) attribute
2043 /// of this object indicated by the specified `id`, supplying `accessor`
2044 /// with the corresponding attribute information structure. Return the
2045 /// value returned from the invocation of `accessor` if `id` identifies
2046 /// an attribute of this class, and -1 otherwise.
2047 template<class ACCESSOR>
2048 int accessAttribute(ACCESSOR& accessor, int id) const;
2049
2050 /// Invoke the specified `accessor` on the (non-modifiable) attribute
2051 /// of this object indicated by the specified `name` of the specified
2052 /// `nameLength`, supplying `accessor` with the corresponding attribute
2053 /// information structure. Return the value returned from the
2054 /// invocation of `accessor` if `name` identifies an attribute of this
2055 /// class, and -1 otherwise.
2056 template<class ACCESSOR>
2057 int accessAttribute(ACCESSOR& accessor,
2058 const char *name,
2059 int nameLength) const;
2060
2061 /// Return a reference to the non-modifiable "Element1" attribute of
2062 /// this object.
2064
2065 /// Return a reference to the non-modifiable "Element2" attribute of
2066 /// this object.
2067 const bsl::vector<bsl::string>& element2() const;
2068
2069 /// Return a reference to the non-modifiable "Element3" attribute of
2070 /// this object.
2071 const bdlb::NullableValue<bool>& element3() const;
2072
2073 /// Return a reference to the non-modifiable "Element4" attribute of
2074 /// this object.
2076
2077 /// Return a reference to the non-modifiable "Element5" attribute of
2078 /// this object.
2080
2081 /// Return a reference to the non-modifiable "Element6" attribute of
2082 /// this object.
2084};
2085
2086// FREE OPERATORS
2087
2088/// Return `true` if the specified `lhs` and `rhs` attribute objects have
2089/// the same value, and `false` otherwise. Two attribute objects have the
2090/// same value if each respective attribute has the same value.
2091inline
2092bool operator==(const Sequence3& lhs, const Sequence3& rhs);
2093
2094/// Return `true` if the specified `lhs` and `rhs` attribute objects do not
2095/// have the same value, and `false` otherwise. Two attribute objects do
2096/// not have the same value if one or more respective attributes differ in
2097/// values.
2098inline
2099bool operator!=(const Sequence3& lhs, const Sequence3& rhs);
2100
2101/// Format the specified `rhs` to the specified output `stream` and
2102/// return a reference to the modifiable `stream`.
2103inline
2104bsl::ostream& operator<<(bsl::ostream& stream, const Sequence3& rhs);
2105
2106} // close package namespace
2107
2108// TRAITS
2109
2111
2112namespace balb {
2113
2114 // ===============
2115 // class Sequence5
2116 // ===============
2117
2119
2120 // INSTANCE DATA
2121 bslma::Allocator *d_allocator_p;
2128 Sequence3 *d_element1;
2129
2130 public:
2131 // TYPES
2132 enum {
2141
2142 enum {
2143 NUM_ATTRIBUTES = 7
2145
2146 enum {
2155
2156 // CONSTANTS
2157 static const char CLASS_NAME[];
2158
2160
2161 public:
2162 // CLASS METHODS
2163
2164 /// Return the most current `bdex` streaming version number supported by
2165 /// this class. See the `bslx` package-level documentation for more
2166 /// information on `bdex` streaming of value-semantic types and
2167 /// containers.
2168 static int maxSupportedBdexVersion();
2169
2170 /// Return attribute information for the attribute indicated by the
2171 /// specified `id` if the attribute exists, and 0 otherwise.
2173
2174 /// Return attribute information for the attribute indicated by the
2175 /// specified `name` of the specified `nameLength` if the attribute
2176 /// exists, and 0 otherwise.
2178 const char *name,
2179 int nameLength);
2180
2181 // CREATORS
2182
2183 /// Create an object of type `Sequence5` having the default value. Use
2184 /// the optionally specified `basicAllocator` to supply memory. If
2185 /// `basicAllocator` is 0, the currently installed default allocator is
2186 /// used.
2187 explicit Sequence5(bslma::Allocator *basicAllocator = 0);
2188
2189 /// Create an object of type `Sequence5` having the value of the
2190 /// specified `original` object. Use the optionally specified
2191 /// `basicAllocator` to supply memory. If `basicAllocator` is 0, the
2192 /// currently installed default allocator is used.
2193 Sequence5(const Sequence5& original,
2194 bslma::Allocator *basicAllocator = 0);
2195
2196 /// Destroy this object.
2198
2199 // MANIPULATORS
2200
2201 /// Assign to this object the value of the specified `rhs` object.
2203
2204 /// Assign to this object the value read from the specified input
2205 /// `stream` using the specified `version` format and return a reference
2206 /// to the modifiable `stream`. If `stream` is initially invalid, this
2207 /// operation has no effect. If `stream` becomes invalid during this
2208 /// operation, this object is valid, but its value is undefined. If
2209 /// `version` is not supported, `stream` is marked invalid and this object is unaltered.
2210 ///
2211 /// \note Note that no version is read from `stream`.
2212 /// See the `bslx` package-level documentation for more information on
2213 /// `bdex` streaming of value-semantic types and containers.
2214 template <class STREAM>
2215 STREAM& bdexStreamIn(STREAM& stream, int version);
2216
2217 /// Reset this object to the default value (i.e., its value upon
2218 /// default construction).
2219 void reset();
2220
2221 /// Invoke the specified `manipulator` sequentially on the address of
2222 /// each (modifiable) attribute of this object, supplying `manipulator`
2223 /// with the corresponding attribute information structure until such
2224 /// invocation returns a non-zero value. Return the value from the
2225 /// last invocation of `manipulator` (i.e., the invocation that
2226 /// terminated the sequence).
2227 template<class MANIPULATOR>
2228 int manipulateAttributes(MANIPULATOR& manipulator);
2229
2230 /// Invoke the specified `manipulator` on the address of
2231 /// the (modifiable) attribute indicated by the specified `id`,
2232 /// supplying `manipulator` with the corresponding attribute
2233 /// information structure. Return the value returned from the
2234 /// invocation of `manipulator` if `id` identifies an attribute of this
2235 /// class, and -1 otherwise.
2236 template<class MANIPULATOR>
2237 int manipulateAttribute(MANIPULATOR& manipulator, int id);
2238
2239 /// Invoke the specified `manipulator` on the address of
2240 /// the (modifiable) attribute indicated by the specified `name` of the
2241 /// specified `nameLength`, supplying `manipulator` with the
2242 /// corresponding attribute information structure. Return the value
2243 /// returned from the invocation of `manipulator` if `name` identifies
2244 /// an attribute of this class, and -1 otherwise.
2245 template<class MANIPULATOR>
2246 int manipulateAttribute(MANIPULATOR& manipulator,
2247 const char *name,
2248 int nameLength);
2249
2250 /// Return a reference to the modifiable "Element1" attribute of this
2251 /// object.
2253
2254 /// Return a reference to the modifiable "Element2" attribute of this
2255 /// object.
2257
2258 /// Return a reference to the modifiable "Element3" attribute of this
2259 /// object.
2261
2262 /// Return a reference to the modifiable "Element4" attribute of this
2263 /// object.
2265
2266 /// Return a reference to the modifiable "Element5" attribute of this
2267 /// object.
2269
2270 /// Return a reference to the modifiable "Element6" attribute of this
2271 /// object.
2273
2274 /// Return a reference to the modifiable "Element7" attribute of this
2275 /// object.
2277
2278 // ACCESSORS
2279
2280 /// Format this object to the specified output `stream` at the
2281 /// optionally specified indentation `level` and return a reference to
2282 /// the modifiable `stream`. If `level` is specified, optionally
2283 /// specify `spacesPerLevel`, the number of spaces per indentation level
2284 /// for this and all of its nested objects. Each line is indented by
2285 /// the absolute value of `level * spacesPerLevel`. If `level` is
2286 /// negative, suppress indentation of the first line. If
2287 /// `spacesPerLevel` is negative, suppress line breaks and format the
2288 /// entire output on one line. If `stream` is initially invalid, this operation has no effect.
2289 ///
2290 /// \note Note that a trailing newline is provided
2291 /// in multiline mode only.
2292 bsl::ostream& print(bsl::ostream& stream,
2293 int level = 0,
2294 int spacesPerLevel = 4) const;
2295
2296 /// Write the value of this object to the specified output `stream`
2297 /// using the specified `version` format and return a reference to the
2298 /// modifiable `stream`. If `version` is not supported, `stream` is unmodified.
2299 ///
2300 /// \note Note that `version` is not written to `stream`.
2301 /// See the `bslx` package-level documentation for more information
2302 /// on `bdex` streaming of value-semantic types and containers.
2303 template <class STREAM>
2304 STREAM& bdexStreamOut(STREAM& stream, int version) const;
2305
2306 /// Invoke the specified `accessor` sequentially on each
2307 /// (non-modifiable) attribute of this object, supplying `accessor`
2308 /// with the corresponding attribute information structure until such
2309 /// invocation returns a non-zero value. Return the value from the
2310 /// last invocation of `accessor` (i.e., the invocation that terminated
2311 /// the sequence).
2312 template<class ACCESSOR>
2313 int accessAttributes(ACCESSOR& accessor) const;
2314
2315 /// Invoke the specified `accessor` on the (non-modifiable) attribute
2316 /// of this object indicated by the specified `id`, supplying `accessor`
2317 /// with the corresponding attribute information structure. Return the
2318 /// value returned from the invocation of `accessor` if `id` identifies
2319 /// an attribute of this class, and -1 otherwise.
2320 template<class ACCESSOR>
2321 int accessAttribute(ACCESSOR& accessor, int id) const;
2322
2323 /// Invoke the specified `accessor` on the (non-modifiable) attribute
2324 /// of this object indicated by the specified `name` of the specified
2325 /// `nameLength`, supplying `accessor` with the corresponding attribute
2326 /// information structure. Return the value returned from the
2327 /// invocation of `accessor` if `name` identifies an attribute of this
2328 /// class, and -1 otherwise.
2329 template<class ACCESSOR>
2330 int accessAttribute(ACCESSOR& accessor,
2331 const char *name,
2332 int nameLength) const;
2333
2334 /// Return a reference to the non-modifiable "Element1" attribute of
2335 /// this object.
2336 const Sequence3& element1() const;
2337
2338 /// Return a reference to the non-modifiable "Element2" attribute of
2339 /// this object.
2341
2342 /// Return a reference to the non-modifiable "Element3" attribute of
2343 /// this object.
2345
2346 /// Return a reference to the non-modifiable "Element4" attribute of
2347 /// this object.
2349
2350 /// Return a reference to the non-modifiable "Element5" attribute of
2351 /// this object.
2353
2354 /// Return a reference to the non-modifiable "Element6" attribute of
2355 /// this object.
2357
2358 /// Return a reference to the non-modifiable "Element7" attribute of
2359 /// this object.
2361};
2362
2363// FREE OPERATORS
2364
2365/// Return `true` if the specified `lhs` and `rhs` attribute objects have
2366/// the same value, and `false` otherwise. Two attribute objects have the
2367/// same value if each respective attribute has the same value.
2368inline
2369bool operator==(const Sequence5& lhs, const Sequence5& rhs);
2370
2371/// Return `true` if the specified `lhs` and `rhs` attribute objects do not
2372/// have the same value, and `false` otherwise. Two attribute objects do
2373/// not have the same value if one or more respective attributes differ in
2374/// values.
2375inline
2376bool operator!=(const Sequence5& lhs, const Sequence5& rhs);
2377
2378/// Format the specified `rhs` to the specified output `stream` and
2379/// return a reference to the modifiable `stream`.
2380inline
2381bsl::ostream& operator<<(bsl::ostream& stream, const Sequence5& rhs);
2382
2383} // close package namespace
2384
2385// TRAITS
2386
2388
2389namespace balb {
2390
2391 // ===============
2392 // class Sequence6
2393 // ===============
2394
2396
2397 // INSTANCE DATA
2398 bsl::vector<unsigned int> d_element12;
2399 bsl::vector<unsigned char> d_element10;
2402 bsl::vector<CustomString> d_element11;
2404 CustomString d_element7;
2405 unsigned int d_element4;
2407 bsl::vector<CustomInt> d_element14;
2410 CustomInt d_element8;
2411 unsigned char d_element5;
2413
2414 public:
2415 // TYPES
2416 enum {
2433
2434 enum {
2435 NUM_ATTRIBUTES = 15
2437
2438 enum {
2455
2456 // CONSTANTS
2457 static const char CLASS_NAME[];
2458
2460
2461 public:
2462 // CLASS METHODS
2463
2464 /// Return the most current `bdex` streaming version number supported by
2465 /// this class. See the `bslx` package-level documentation for more
2466 /// information on `bdex` streaming of value-semantic types and
2467 /// containers.
2468 static int maxSupportedBdexVersion();
2469
2470 /// Return attribute information for the attribute indicated by the
2471 /// specified `id` if the attribute exists, and 0 otherwise.
2473
2474 /// Return attribute information for the attribute indicated by the
2475 /// specified `name` of the specified `nameLength` if the attribute
2476 /// exists, and 0 otherwise.
2478 const char *name,
2479 int nameLength);
2480
2481 // CREATORS
2482
2483 /// Create an object of type `Sequence6` having the default value. Use
2484 /// the optionally specified `basicAllocator` to supply memory. If
2485 /// `basicAllocator` is 0, the currently installed default allocator is
2486 /// used.
2487 explicit Sequence6(bslma::Allocator *basicAllocator = 0);
2488
2489 /// Create an object of type `Sequence6` having the value of the
2490 /// specified `original` object. Use the optionally specified
2491 /// `basicAllocator` to supply memory. If `basicAllocator` is 0, the
2492 /// currently installed default allocator is used.
2493 Sequence6(const Sequence6& original,
2494 bslma::Allocator *basicAllocator = 0);
2495
2496 /// Destroy this object.
2498
2499 // MANIPULATORS
2500
2501 /// Assign to this object the value of the specified `rhs` object.
2503
2504 /// Assign to this object the value read from the specified input
2505 /// `stream` using the specified `version` format and return a reference
2506 /// to the modifiable `stream`. If `stream` is initially invalid, this
2507 /// operation has no effect. If `stream` becomes invalid during this
2508 /// operation, this object is valid, but its value is undefined. If
2509 /// `version` is not supported, `stream` is marked invalid and this object is unaltered.
2510 ///
2511 /// \note Note that no version is read from `stream`.
2512 /// See the `bslx` package-level documentation for more information on
2513 /// `bdex` streaming of value-semantic types and containers.
2514 template <class STREAM>
2515 STREAM& bdexStreamIn(STREAM& stream, int version);
2516
2517 /// Reset this object to the default value (i.e., its value upon
2518 /// default construction).
2519 void reset();
2520
2521 /// Invoke the specified `manipulator` sequentially on the address of
2522 /// each (modifiable) attribute of this object, supplying `manipulator`
2523 /// with the corresponding attribute information structure until such
2524 /// invocation returns a non-zero value. Return the value from the
2525 /// last invocation of `manipulator` (i.e., the invocation that
2526 /// terminated the sequence).
2527 template<class MANIPULATOR>
2528 int manipulateAttributes(MANIPULATOR& manipulator);
2529
2530 /// Invoke the specified `manipulator` on the address of
2531 /// the (modifiable) attribute indicated by the specified `id`,
2532 /// supplying `manipulator` with the corresponding attribute
2533 /// information structure. Return the value returned from the
2534 /// invocation of `manipulator` if `id` identifies an attribute of this
2535 /// class, and -1 otherwise.
2536 template<class MANIPULATOR>
2537 int manipulateAttribute(MANIPULATOR& manipulator, int id);
2538
2539 /// Invoke the specified `manipulator` on the address of
2540 /// the (modifiable) attribute indicated by the specified `name` of the
2541 /// specified `nameLength`, supplying `manipulator` with the
2542 /// corresponding attribute information structure. Return the value
2543 /// returned from the invocation of `manipulator` if `name` identifies
2544 /// an attribute of this class, and -1 otherwise.
2545 template<class MANIPULATOR>
2546 int manipulateAttribute(MANIPULATOR& manipulator,
2547 const char *name,
2548 int nameLength);
2549
2550 /// Return a reference to the modifiable "Element1" attribute of this
2551 /// object.
2553
2554 /// Return a reference to the modifiable "Element2" attribute of this
2555 /// object.
2557
2558 /// Return a reference to the modifiable "Element3" attribute of this
2559 /// object.
2561
2562 /// Return a reference to the modifiable "Element4" attribute of this
2563 /// object.
2564 unsigned int& element4();
2565
2566 /// Return a reference to the modifiable "Element5" attribute of this
2567 /// object.
2568 unsigned char& element5();
2569
2570 /// Return a reference to the modifiable "Element6" attribute of this
2571 /// object.
2573
2574 /// Return a reference to the modifiable "Element7" attribute of this
2575 /// object.
2577
2578 /// Return a reference to the modifiable "Element8" attribute of this
2579 /// object.
2581
2582 /// Return a reference to the modifiable "Element9" attribute of this
2583 /// object.
2585
2586 /// Return a reference to the modifiable "Element10" attribute of this
2587 /// object.
2589
2590 /// Return a reference to the modifiable "Element11" attribute of this
2591 /// object.
2593
2594 /// Return a reference to the modifiable "Element12" attribute of this
2595 /// object.
2597
2598 /// Return a reference to the modifiable "Element13" attribute of this
2599 /// object.
2601
2602 /// Return a reference to the modifiable "Element14" attribute of this
2603 /// object.
2605
2606 /// Return a reference to the modifiable "Element15" attribute of this
2607 /// object.
2609
2610 // ACCESSORS
2611
2612 /// Format this object to the specified output `stream` at the
2613 /// optionally specified indentation `level` and return a reference to
2614 /// the modifiable `stream`. If `level` is specified, optionally
2615 /// specify `spacesPerLevel`, the number of spaces per indentation level
2616 /// for this and all of its nested objects. Each line is indented by
2617 /// the absolute value of `level * spacesPerLevel`. If `level` is
2618 /// negative, suppress indentation of the first line. If
2619 /// `spacesPerLevel` is negative, suppress line breaks and format the
2620 /// entire output on one line. If `stream` is initially invalid, this operation has no effect.
2621 ///
2622 /// \note Note that a trailing newline is provided
2623 /// in multiline mode only.
2624 bsl::ostream& print(bsl::ostream& stream,
2625 int level = 0,
2626 int spacesPerLevel = 4) const;
2627
2628 /// Write the value of this object to the specified output `stream`
2629 /// using the specified `version` format and return a reference to the
2630 /// modifiable `stream`. If `version` is not supported, `stream` is unmodified.
2631 ///
2632 /// \note Note that `version` is not written to `stream`.
2633 /// See the `bslx` package-level documentation for more information
2634 /// on `bdex` streaming of value-semantic types and containers.
2635 template <class STREAM>
2636 STREAM& bdexStreamOut(STREAM& stream, int version) const;
2637
2638 /// Invoke the specified `accessor` sequentially on each
2639 /// (non-modifiable) attribute of this object, supplying `accessor`
2640 /// with the corresponding attribute information structure until such
2641 /// invocation returns a non-zero value. Return the value from the
2642 /// last invocation of `accessor` (i.e., the invocation that terminated
2643 /// the sequence).
2644 template<class ACCESSOR>
2645 int accessAttributes(ACCESSOR& accessor) const;
2646
2647 /// Invoke the specified `accessor` on the (non-modifiable) attribute
2648 /// of this object indicated by the specified `id`, supplying `accessor`
2649 /// with the corresponding attribute information structure. Return the
2650 /// value returned from the invocation of `accessor` if `id` identifies
2651 /// an attribute of this class, and -1 otherwise.
2652 template<class ACCESSOR>
2653 int accessAttribute(ACCESSOR& accessor, int id) const;
2654
2655 /// Invoke the specified `accessor` on the (non-modifiable) attribute
2656 /// of this object indicated by the specified `name` of the specified
2657 /// `nameLength`, supplying `accessor` with the corresponding attribute
2658 /// information structure. Return the value returned from the
2659 /// invocation of `accessor` if `name` identifies an attribute of this
2660 /// class, and -1 otherwise.
2661 template<class ACCESSOR>
2662 int accessAttribute(ACCESSOR& accessor,
2663 const char *name,
2664 int nameLength) const;
2665
2666 /// Return a reference to the non-modifiable "Element1" attribute of
2667 /// this object.
2669
2670 /// Return a reference to the non-modifiable "Element2" attribute of
2671 /// this object.
2673
2674 /// Return a reference to the non-modifiable "Element3" attribute of
2675 /// this object.
2677
2678 /// Return a reference to the non-modifiable "Element4" attribute of
2679 /// this object.
2680 unsigned int element4() const;
2681
2682 /// Return a reference to the non-modifiable "Element5" attribute of
2683 /// this object.
2684 unsigned char element5() const;
2685
2686 /// Return a reference to the non-modifiable "Element6" attribute of
2687 /// this object.
2689
2690 /// Return a reference to the non-modifiable "Element7" attribute of
2691 /// this object.
2692 const CustomString& element7() const;
2693
2694 /// Return a reference to the non-modifiable "Element8" attribute of
2695 /// this object.
2696 const CustomInt& element8() const;
2697
2698 /// Return a reference to the non-modifiable "Element9" attribute of
2699 /// this object.
2701
2702 /// Return a reference to the non-modifiable "Element10" attribute of
2703 /// this object.
2705
2706 /// Return a reference to the non-modifiable "Element11" attribute of
2707 /// this object.
2708 const bsl::vector<CustomString>& element11() const;
2709
2710 /// Return a reference to the non-modifiable "Element12" attribute of
2711 /// this object.
2712 const bsl::vector<unsigned int>& element12() const;
2713
2714 /// Return a reference to the non-modifiable "Element13" attribute of
2715 /// this object.
2717
2718 /// Return a reference to the non-modifiable "Element14" attribute of
2719 /// this object.
2720 const bsl::vector<CustomInt>& element14() const;
2721
2722 /// Return a reference to the non-modifiable "Element15" attribute of
2723 /// this object.
2725};
2726
2727// FREE OPERATORS
2728
2729/// Return `true` if the specified `lhs` and `rhs` attribute objects have
2730/// the same value, and `false` otherwise. Two attribute objects have the
2731/// same value if each respective attribute has the same value.
2732inline
2733bool operator==(const Sequence6& lhs, const Sequence6& rhs);
2734
2735/// Return `true` if the specified `lhs` and `rhs` attribute objects do not
2736/// have the same value, and `false` otherwise. Two attribute objects do
2737/// not have the same value if one or more respective attributes differ in
2738/// values.
2739inline
2740bool operator!=(const Sequence6& lhs, const Sequence6& rhs);
2741
2742/// Format the specified `rhs` to the specified output `stream` and
2743/// return a reference to the modifiable `stream`.
2744inline
2745bsl::ostream& operator<<(bsl::ostream& stream, const Sequence6& rhs);
2746
2747} // close package namespace
2748
2749// TRAITS
2750
2752
2753namespace balb {
2754
2755 // =============
2756 // class Choice3
2757 // =============
2758
2759class Choice3 {
2760
2761 // INSTANCE DATA
2762 union {
2767 };
2768
2769 int d_selectionId;
2770 bslma::Allocator *d_allocator_p;
2771
2772 public:
2773 // TYPES
2774
2775 enum {
2782
2783 enum {
2784 NUM_SELECTIONS = 4
2786
2787 enum {
2793
2794 // CONSTANTS
2795 static const char CLASS_NAME[];
2796
2798
2799 // CLASS METHODS
2800
2801 /// Return the most current `bdex` streaming version number supported by
2802 /// this class. See the `bslx` package-level documentation for more
2803 /// information on `bdex` streaming of value-semantic types and
2804 /// containers.
2805 static int maxSupportedBdexVersion();
2806
2807 /// Return selection information for the selection indicated by the
2808 /// specified `id` if the selection exists, and 0 otherwise.
2810
2811 /// Return selection information for the selection indicated by the
2812 /// specified `name` of the specified `nameLength` if the selection
2813 /// exists, and 0 otherwise.
2815 const char *name,
2816 int nameLength);
2817
2818 // CREATORS
2819
2820 /// Create an object of type `Choice3` having the default value. Use
2821 /// the optionally specified `basicAllocator` to supply memory. If
2822 /// `basicAllocator` is 0, the currently installed default allocator is
2823 /// used.
2824 explicit Choice3(bslma::Allocator *basicAllocator = 0);
2825
2826 /// Create an object of type `Choice3` having the value of the specified
2827 /// `original` object. Use the optionally specified `basicAllocator` to
2828 /// supply memory. If `basicAllocator` is 0, the currently installed
2829 /// default allocator is used.
2830 Choice3(const Choice3& original,
2831 bslma::Allocator *basicAllocator = 0);
2832
2833 /// Destroy this object.
2834 ~Choice3();
2835
2836 // MANIPULATORS
2837
2838 /// Assign to this object the value of the specified `rhs` object.
2840
2841 /// Assign to this object the value read from the specified input
2842 /// `stream` using the specified `version` format and return a reference
2843 /// to the modifiable `stream`. If `stream` is initially invalid, this
2844 /// operation has no effect. If `stream` becomes invalid during this
2845 /// operation, this object is valid, but its value is undefined. If
2846 /// `version` is not supported, `stream` is marked invalid and this object is unaltered.
2847 ///
2848 /// \note Note that no version is read from `stream`.
2849 /// See the `bslx` package-level documentation for more information on
2850 /// `bdex` streaming of value-semantic types and containers.
2851 template <class STREAM>
2852 STREAM& bdexStreamIn(STREAM& stream, int version);
2853
2854 /// Reset this object to the default value (i.e., its value upon default
2855 /// construction).
2856 void reset();
2857
2858 /// Set the value of this object to be the default for the selection
2859 /// indicated by the specified `selectionId`. Return 0 on success, and
2860 /// non-zero value otherwise (i.e., the selection is not found).
2862
2863 /// Set the value of this object to be the default for the selection
2864 /// indicated by the specified `name` of the specified `nameLength`.
2865 /// Return 0 on success, and non-zero value otherwise (i.e., the
2866 /// selection is not found).
2867 int makeSelection(const char *name, int nameLength);
2868
2869 /// Set the value of this object to be a "Selection1" value. Optionally
2870 /// specify the `value` of the "Selection1". If `value` is not
2871 /// specified, the default "Selection1" value is used.
2874
2875 /// Set the value of this object to be a "Selection2" value. Optionally
2876 /// specify the `value` of the "Selection2". If `value` is not
2877 /// specified, the default "Selection2" value is used.
2878 unsigned char& makeSelection2();
2879 unsigned char& makeSelection2(unsigned char value);
2880
2881 /// Set the value of this object to be a "Selection3" value. Optionally
2882 /// specify the `value` of the "Selection3". If `value` is not
2883 /// specified, the default "Selection3" value is used.
2886
2887 /// Set the value of this object to be a "Selection4" value. Optionally
2888 /// specify the `value` of the "Selection4". If `value` is not
2889 /// specified, the default "Selection4" value is used.
2892
2893 /// Invoke the specified `manipulator` on the address of the modifiable
2894 /// selection, supplying `manipulator` with the corresponding selection
2895 /// information structure. Return the value returned from the
2896 /// invocation of `manipulator` if this object has a defined selection,
2897 /// and -1 otherwise.
2898 template<class MANIPULATOR>
2899 int manipulateSelection(MANIPULATOR& manipulator);
2900
2901 /// Return a reference to the modifiable "Selection1" selection of this
2902 /// object if "Selection1" is the current selection.
2903 ///
2904 /// \pre The behavior is undefined unless "Selection1" is the selection of this object.
2906
2907 /// Return a reference to the modifiable "Selection2" selection of this
2908 /// object if "Selection2" is the current selection.
2909 ///
2910 /// \pre The behavior is undefined unless "Selection2" is the selection of this object.
2911 unsigned char& selection2();
2912
2913 /// Return a reference to the modifiable "Selection3" selection of this
2914 /// object if "Selection3" is the current selection.
2915 ///
2916 /// \pre The behavior is undefined unless "Selection3" is the selection of this object.
2918
2919 /// Return a reference to the modifiable "Selection4" selection of this
2920 /// object if "Selection4" is the current selection.
2921 ///
2922 /// \pre The behavior is undefined unless "Selection4" is the selection of this object.
2924
2925 // ACCESSORS
2926
2927 /// Format this object to the specified output `stream` at the
2928 /// optionally specified indentation `level` and return a reference to
2929 /// the modifiable `stream`. If `level` is specified, optionally
2930 /// specify `spacesPerLevel`, the number of spaces per indentation level
2931 /// for this and all of its nested objects. Each line is indented by
2932 /// the absolute value of `level * spacesPerLevel`. If `level` is
2933 /// negative, suppress indentation of the first line. If
2934 /// `spacesPerLevel` is negative, suppress line breaks and format the
2935 /// entire output on one line. If `stream` is initially invalid, this operation has no effect.
2936 ///
2937 /// \note Note that a trailing newline is provided
2938 /// in multiline mode only.
2939 bsl::ostream& print(bsl::ostream& stream,
2940 int level = 0,
2941 int spacesPerLevel = 4) const;
2942
2943 /// Write the value of this object to the specified output `stream`
2944 /// using the specified `version` format and return a reference to the
2945 /// modifiable `stream`. If `version` is not supported, `stream` is unmodified.
2946 ///
2947 /// \note Note that `version` is not written to `stream`.
2948 /// See the `bslx` package-level documentation for more information
2949 /// on `bdex` streaming of value-semantic types and containers.
2950 template <class STREAM>
2951 STREAM& bdexStreamOut(STREAM& stream, int version) const;
2952
2953 /// Return the id of the current selection if the selection is defined,
2954 /// and -1 otherwise.
2955 int selectionId() const;
2956
2957 /// Invoke the specified `accessor` on the non-modifiable selection,
2958 /// supplying `accessor` with the corresponding selection information
2959 /// structure. Return the value returned from the invocation of
2960 /// `accessor` if this object has a defined selection, and -1 otherwise.
2961 template<class ACCESSOR>
2962 int accessSelection(ACCESSOR& accessor) const;
2963
2964 /// Return a reference to the non-modifiable "Selection1" selection of
2965 /// this object if "Selection1" is the current selection.
2966 ///
2967 /// \pre The behavior is undefined unless "Selection1" is the selection of this object.
2968 const Sequence6& selection1() const;
2969
2970 /// Return a reference to the non-modifiable "Selection2" selection of
2971 /// this object if "Selection2" is the current selection.
2972 ///
2973 /// \pre The behavior is undefined unless "Selection2" is the selection of this object.
2974 const unsigned char& selection2() const;
2975
2976 /// Return a reference to the non-modifiable "Selection3" selection of
2977 /// this object if "Selection3" is the current selection.
2978 ///
2979 /// \pre The behavior is undefined unless "Selection3" is the selection of this object.
2980 const CustomString& selection3() const;
2981
2982 /// Return a reference to the non-modifiable "Selection4" selection of
2983 /// this object if "Selection4" is the current selection.
2984 ///
2985 /// \pre The behavior is undefined unless "Selection4" is the selection of this object.
2986 const CustomInt& selection4() const;
2987
2988 /// Return `true` if the value of this object is a "Selection1" value,
2989 /// and return `false` otherwise.
2990 bool isSelection1Value() const;
2991
2992 /// Return `true` if the value of this object is a "Selection2" value,
2993 /// and return `false` otherwise.
2994 bool isSelection2Value() const;
2995
2996 /// Return `true` if the value of this object is a "Selection3" value,
2997 /// and return `false` otherwise.
2998 bool isSelection3Value() const;
2999
3000 /// Return `true` if the value of this object is a "Selection4" value,
3001 /// and return `false` otherwise.
3002 bool isSelection4Value() const;
3003
3004 /// Return `true` if the value of this object is undefined, and `false`
3005 /// otherwise.
3006 bool isUndefinedValue() const;
3007
3008 /// Return the symbolic name of the current selection of this object.
3009 const char *selectionName() const;
3010};
3011
3012// FREE OPERATORS
3013
3014/// Return `true` if the specified `lhs` and `rhs` objects have the same
3015/// value, and `false` otherwise. Two `Choice3` objects have the same
3016/// value if either the selections in both objects have the same ids and
3017/// the same values, or both selections are undefined.
3018inline
3019bool operator==(const Choice3& lhs, const Choice3& rhs);
3020
3021/// Return `true` if the specified `lhs` and `rhs` objects do not have the
3022/// same values, as determined by `operator==`, and `false` otherwise.
3023inline
3024bool operator!=(const Choice3& lhs, const Choice3& rhs);
3025
3026/// Format the specified `rhs` to the specified output `stream` and
3027/// return a reference to the modifiable `stream`.
3028inline
3029bsl::ostream& operator<<(bsl::ostream& stream, const Choice3& rhs);
3030
3031} // close package namespace
3032
3033// TRAITS
3034
3036
3037namespace balb {
3038
3039 // =================================
3040 // class SequenceWithAnonymityChoice
3041 // =================================
3042
3044
3045 // INSTANCE DATA
3046 union {
3051 };
3052
3053 int d_selectionId;
3054 bslma::Allocator *d_allocator_p;
3055
3056 public:
3057 // TYPES
3058
3059 enum {
3066
3067 enum {
3068 NUM_SELECTIONS = 4
3070
3071 enum {
3077
3078 // CONSTANTS
3079 static const char CLASS_NAME[];
3080
3082
3083 // CLASS METHODS
3084
3085 /// Return the most current `bdex` streaming version number supported by
3086 /// this class. See the `bslx` package-level documentation for more
3087 /// information on `bdex` streaming of value-semantic types and
3088 /// containers.
3089 static int maxSupportedBdexVersion();
3090
3091 /// Return selection information for the selection indicated by the
3092 /// specified `id` if the selection exists, and 0 otherwise.
3094
3095 /// Return selection information for the selection indicated by the
3096 /// specified `name` of the specified `nameLength` if the selection
3097 /// exists, and 0 otherwise.
3099 const char *name,
3100 int nameLength);
3101
3102 // CREATORS
3103
3104 /// Create an object of type `SequenceWithAnonymityChoice` having the
3105 /// default value. Use the optionally specified `basicAllocator` to
3106 /// supply memory. If `basicAllocator` is 0, the currently installed
3107 /// default allocator is used.
3108 explicit SequenceWithAnonymityChoice(bslma::Allocator *basicAllocator = 0);
3109
3110 /// Create an object of type `SequenceWithAnonymityChoice` having the
3111 /// value of the specified `original` object. Use the optionally
3112 /// specified `basicAllocator` to supply memory. If `basicAllocator` is
3113 /// 0, the currently installed default allocator is used.
3115 bslma::Allocator *basicAllocator = 0);
3116
3117 /// Destroy this object.
3119
3120 // MANIPULATORS
3121
3122 /// Assign to this object the value of the specified `rhs` object.
3124
3125 /// Assign to this object the value read from the specified input
3126 /// `stream` using the specified `version` format and return a reference
3127 /// to the modifiable `stream`. If `stream` is initially invalid, this
3128 /// operation has no effect. If `stream` becomes invalid during this
3129 /// operation, this object is valid, but its value is undefined. If
3130 /// `version` is not supported, `stream` is marked invalid and this object is unaltered.
3131 ///
3132 /// \note Note that no version is read from `stream`.
3133 /// See the `bslx` package-level documentation for more information on
3134 /// `bdex` streaming of value-semantic types and containers.
3135 template <class STREAM>
3136 STREAM& bdexStreamIn(STREAM& stream, int version);
3137
3138 /// Reset this object to the default value (i.e., its value upon default
3139 /// construction).
3140 void reset();
3141
3142 /// Set the value of this object to be the default for the selection
3143 /// indicated by the specified `selectionId`. Return 0 on success, and
3144 /// non-zero value otherwise (i.e., the selection is not found).
3146
3147 /// Set the value of this object to be the default for the selection
3148 /// indicated by the specified `name` of the specified `nameLength`.
3149 /// Return 0 on success, and non-zero value otherwise (i.e., the
3150 /// selection is not found).
3151 int makeSelection(const char *name, int nameLength);
3152
3153 /// Set the value of this object to be a "Selection1" value. Optionally
3154 /// specify the `value` of the "Selection1". If `value` is not
3155 /// specified, the default "Selection1" value is used.
3158
3159 /// Set the value of this object to be a "Selection2" value. Optionally
3160 /// specify the `value` of the "Selection2". If `value` is not
3161 /// specified, the default "Selection2" value is used.
3162 unsigned char& makeSelection2();
3163 unsigned char& makeSelection2(unsigned char value);
3164
3165 /// Set the value of this object to be a "Selection3" value. Optionally
3166 /// specify the `value` of the "Selection3". If `value` is not
3167 /// specified, the default "Selection3" value is used.
3170
3171 /// Set the value of this object to be a "Selection4" value. Optionally
3172 /// specify the `value` of the "Selection4". If `value` is not
3173 /// specified, the default "Selection4" value is used.
3176
3177 /// Invoke the specified `manipulator` on the address of the modifiable
3178 /// selection, supplying `manipulator` with the corresponding selection
3179 /// information structure. Return the value returned from the
3180 /// invocation of `manipulator` if this object has a defined selection,
3181 /// and -1 otherwise.
3182 template<class MANIPULATOR>
3183 int manipulateSelection(MANIPULATOR& manipulator);
3184
3185 /// Return a reference to the modifiable "Selection1" selection of this
3186 /// object if "Selection1" is the current selection.
3187 ///
3188 /// \pre The behavior is undefined unless "Selection1" is the selection of this object.
3190
3191 /// Return a reference to the modifiable "Selection2" selection of this
3192 /// object if "Selection2" is the current selection.
3193 ///
3194 /// \pre The behavior is undefined unless "Selection2" is the selection of this object.
3195 unsigned char& selection2();
3196
3197 /// Return a reference to the modifiable "Selection3" selection of this
3198 /// object if "Selection3" is the current selection.
3199 ///
3200 /// \pre The behavior is undefined unless "Selection3" is the selection of this object.
3202
3203 /// Return a reference to the modifiable "Selection4" selection of this
3204 /// object if "Selection4" is the current selection.
3205 ///
3206 /// \pre The behavior is undefined unless "Selection4" is the selection of this object.
3208
3209 // ACCESSORS
3210
3211 /// Format this object to the specified output `stream` at the
3212 /// optionally specified indentation `level` and return a reference to
3213 /// the modifiable `stream`. If `level` is specified, optionally
3214 /// specify `spacesPerLevel`, the number of spaces per indentation level
3215 /// for this and all of its nested objects. Each line is indented by
3216 /// the absolute value of `level * spacesPerLevel`. If `level` is
3217 /// negative, suppress indentation of the first line. If
3218 /// `spacesPerLevel` is negative, suppress line breaks and format the
3219 /// entire output on one line. If `stream` is initially invalid, this operation has no effect.
3220 ///
3221 /// \note Note that a trailing newline is provided
3222 /// in multiline mode only.
3223 bsl::ostream& print(bsl::ostream& stream,
3224 int level = 0,
3225 int spacesPerLevel = 4) const;
3226
3227 /// Write the value of this object to the specified output `stream`
3228 /// using the specified `version` format and return a reference to the
3229 /// modifiable `stream`. If `version` is not supported, `stream` is unmodified.
3230 ///
3231 /// \note Note that `version` is not written to `stream`.
3232 /// See the `bslx` package-level documentation for more information
3233 /// on `bdex` streaming of value-semantic types and containers.
3234 template <class STREAM>
3235 STREAM& bdexStreamOut(STREAM& stream, int version) const;
3236
3237 /// Return the id of the current selection if the selection is defined,
3238 /// and -1 otherwise.
3239 int selectionId() const;
3240
3241 /// Invoke the specified `accessor` on the non-modifiable selection,
3242 /// supplying `accessor` with the corresponding selection information
3243 /// structure. Return the value returned from the invocation of
3244 /// `accessor` if this object has a defined selection, and -1 otherwise.
3245 template<class ACCESSOR>
3246 int accessSelection(ACCESSOR& accessor) const;
3247
3248 /// Return a reference to the non-modifiable "Selection1" selection of
3249 /// this object if "Selection1" is the current selection.
3250 ///
3251 /// \pre The behavior is undefined unless "Selection1" is the selection of this object.
3252 const Sequence6& selection1() const;
3253
3254 /// Return a reference to the non-modifiable "Selection2" selection of
3255 /// this object if "Selection2" is the current selection.
3256 ///
3257 /// \pre The behavior is undefined unless "Selection2" is the selection of this object.
3258 const unsigned char& selection2() const;
3259
3260 /// Return a reference to the non-modifiable "Selection3" selection of
3261 /// this object if "Selection3" is the current selection.
3262 ///
3263 /// \pre The behavior is undefined unless "Selection3" is the selection of this object.
3264 const CustomString& selection3() const;
3265
3266 /// Return a reference to the non-modifiable "Selection4" selection of
3267 /// this object if "Selection4" is the current selection.
3268 ///
3269 /// \pre The behavior is undefined unless "Selection4" is the selection of this object.
3270 const CustomInt& selection4() const;
3271
3272 /// Return `true` if the value of this object is a "Selection1" value,
3273 /// and return `false` otherwise.
3274 bool isSelection1Value() const;
3275
3276 /// Return `true` if the value of this object is a "Selection2" value,
3277 /// and return `false` otherwise.
3278 bool isSelection2Value() const;
3279
3280 /// Return `true` if the value of this object is a "Selection3" value,
3281 /// and return `false` otherwise.
3282 bool isSelection3Value() const;
3283
3284 /// Return `true` if the value of this object is a "Selection4" value,
3285 /// and return `false` otherwise.
3286 bool isSelection4Value() const;
3287
3288 /// Return `true` if the value of this object is undefined, and `false`
3289 /// otherwise.
3290 bool isUndefinedValue() const;
3291
3292 /// Return the symbolic name of the current selection of this object.
3293 const char *selectionName() const;
3294};
3295
3296// FREE OPERATORS
3297
3298/// Return `true` if the specified `lhs` and `rhs` objects have the same
3299/// value, and `false` otherwise. Two `SequenceWithAnonymityChoice` objects have the same
3300/// value if either the selections in both objects have the same ids and
3301/// the same values, or both selections are undefined.
3302inline
3304
3305/// Return `true` if the specified `lhs` and `rhs` objects do not have the
3306/// same values, as determined by `operator==`, and `false` otherwise.
3307inline
3309
3310/// Format the specified `rhs` to the specified output `stream` and
3311/// return a reference to the modifiable `stream`.
3312inline
3313bsl::ostream& operator<<(bsl::ostream& stream, const SequenceWithAnonymityChoice& rhs);
3314
3315} // close package namespace
3316
3317// TRAITS
3318
3320
3321namespace balb {
3322
3323 // =============
3324 // class Choice1
3325 // =============
3326
3327class Choice1 {
3328
3329 // INSTANCE DATA
3330 union {
3335 };
3336
3337 int d_selectionId;
3338 bslma::Allocator *d_allocator_p;
3339
3340 public:
3341 // TYPES
3342
3343 enum {
3350
3351 enum {
3352 NUM_SELECTIONS = 4
3354
3355 enum {
3361
3362 // CONSTANTS
3363 static const char CLASS_NAME[];
3364
3366
3367 // CLASS METHODS
3368
3369 /// Return the most current `bdex` streaming version number supported by
3370 /// this class. See the `bslx` package-level documentation for more
3371 /// information on `bdex` streaming of value-semantic types and
3372 /// containers.
3373 static int maxSupportedBdexVersion();
3374
3375 /// Return selection information for the selection indicated by the
3376 /// specified `id` if the selection exists, and 0 otherwise.
3378
3379 /// Return selection information for the selection indicated by the
3380 /// specified `name` of the specified `nameLength` if the selection
3381 /// exists, and 0 otherwise.
3383 const char *name,
3384 int nameLength);
3385
3386 // CREATORS
3387
3388 /// Create an object of type `Choice1` having the default value. Use
3389 /// the optionally specified `basicAllocator` to supply memory. If
3390 /// `basicAllocator` is 0, the currently installed default allocator is
3391 /// used.
3392 explicit Choice1(bslma::Allocator *basicAllocator = 0);
3393
3394 /// Create an object of type `Choice1` having the value of the specified
3395 /// `original` object. Use the optionally specified `basicAllocator` to
3396 /// supply memory. If `basicAllocator` is 0, the currently installed
3397 /// default allocator is used.
3398 Choice1(const Choice1& original,
3399 bslma::Allocator *basicAllocator = 0);
3400
3401 /// Destroy this object.
3402 ~Choice1();
3403
3404 // MANIPULATORS
3405
3406 /// Assign to this object the value of the specified `rhs` object.
3408
3409 /// Assign to this object the value read from the specified input
3410 /// `stream` using the specified `version` format and return a reference
3411 /// to the modifiable `stream`. If `stream` is initially invalid, this
3412 /// operation has no effect. If `stream` becomes invalid during this
3413 /// operation, this object is valid, but its value is undefined. If
3414 /// `version` is not supported, `stream` is marked invalid and this object is unaltered.
3415 ///
3416 /// \note Note that no version is read from `stream`.
3417 /// See the `bslx` package-level documentation for more information on
3418 /// `bdex` streaming of value-semantic types and containers.
3419 template <class STREAM>
3420 STREAM& bdexStreamIn(STREAM& stream, int version);
3421
3422 /// Reset this object to the default value (i.e., its value upon default
3423 /// construction).
3424 void reset();
3425
3426 /// Set the value of this object to be the default for the selection
3427 /// indicated by the specified `selectionId`. Return 0 on success, and
3428 /// non-zero value otherwise (i.e., the selection is not found).
3430
3431 /// Set the value of this object to be the default for the selection
3432 /// indicated by the specified `name` of the specified `nameLength`.
3433 /// Return 0 on success, and non-zero value otherwise (i.e., the
3434 /// selection is not found).
3435 int makeSelection(const char *name, int nameLength);
3436
3437 /// Set the value of this object to be a "Selection1" value. Optionally
3438 /// specify the `value` of the "Selection1". If `value` is not
3439 /// specified, the default "Selection1" value is used.
3441 int& makeSelection1(int value);
3442
3443 /// Set the value of this object to be a "Selection2" value. Optionally
3444 /// specify the `value` of the "Selection2". If `value` is not
3445 /// specified, the default "Selection2" value is used.
3447 double& makeSelection2(double value);
3448
3449 /// Set the value of this object to be a "Selection3" value. Optionally
3450 /// specify the `value` of the "Selection3". If `value` is not
3451 /// specified, the default "Selection3" value is used.
3454
3455 /// Set the value of this object to be a "Selection4" value. Optionally
3456 /// specify the `value` of the "Selection4". If `value` is not
3457 /// specified, the default "Selection4" value is used.
3460
3461 /// Invoke the specified `manipulator` on the address of the modifiable
3462 /// selection, supplying `manipulator` with the corresponding selection
3463 /// information structure. Return the value returned from the
3464 /// invocation of `manipulator` if this object has a defined selection,
3465 /// and -1 otherwise.
3466 template<class MANIPULATOR>
3467 int manipulateSelection(MANIPULATOR& manipulator);
3468
3469 /// Return a reference to the modifiable "Selection1" selection of this
3470 /// object if "Selection1" is the current selection.
3471 ///
3472 /// \pre The behavior is undefined unless "Selection1" is the selection of this object.
3473 int& selection1();
3474
3475 /// Return a reference to the modifiable "Selection2" selection of this
3476 /// object if "Selection2" is the current selection.
3477 ///
3478 /// \pre The behavior is undefined unless "Selection2" is the selection of this object.
3479 double& selection2();
3480
3481 /// Return a reference to the modifiable "Selection3" selection of this
3482 /// object if "Selection3" is the current selection.
3483 ///
3484 /// \pre The behavior is undefined unless "Selection3" is the selection of this object.
3486
3487 /// Return a reference to the modifiable "Selection4" selection of this
3488 /// object if "Selection4" is the current selection.
3489 ///
3490 /// \pre The behavior is undefined unless "Selection4" is the selection of this object.
3492
3493 // ACCESSORS
3494
3495 /// Format this object to the specified output `stream` at the
3496 /// optionally specified indentation `level` and return a reference to
3497 /// the modifiable `stream`. If `level` is specified, optionally
3498 /// specify `spacesPerLevel`, the number of spaces per indentation level
3499 /// for this and all of its nested objects. Each line is indented by
3500 /// the absolute value of `level * spacesPerLevel`. If `level` is
3501 /// negative, suppress indentation of the first line. If
3502 /// `spacesPerLevel` is negative, suppress line breaks and format the
3503 /// entire output on one line. If `stream` is initially invalid, this operation has no effect.
3504 ///
3505 /// \note Note that a trailing newline is provided
3506 /// in multiline mode only.
3507 bsl::ostream& print(bsl::ostream& stream,
3508 int level = 0,
3509 int spacesPerLevel = 4) const;
3510
3511 /// Write the value of this object to the specified output `stream`
3512 /// using the specified `version` format and return a reference to the
3513 /// modifiable `stream`. If `version` is not supported, `stream` is unmodified.
3514 ///
3515 /// \note Note that `version` is not written to `stream`.
3516 /// See the `bslx` package-level documentation for more information
3517 /// on `bdex` streaming of value-semantic types and containers.
3518 template <class STREAM>
3519 STREAM& bdexStreamOut(STREAM& stream, int version) const;
3520
3521 /// Return the id of the current selection if the selection is defined,
3522 /// and -1 otherwise.
3523 int selectionId() const;
3524
3525 /// Invoke the specified `accessor` on the non-modifiable selection,
3526 /// supplying `accessor` with the corresponding selection information
3527 /// structure. Return the value returned from the invocation of
3528 /// `accessor` if this object has a defined selection, and -1 otherwise.
3529 template<class ACCESSOR>
3530 int accessSelection(ACCESSOR& accessor) const;
3531
3532 /// Return a reference to the non-modifiable "Selection1" selection of
3533 /// this object if "Selection1" is the current selection.
3534 ///
3535 /// \pre The behavior is undefined unless "Selection1" is the selection of this object.
3536 const int& selection1() const;
3537
3538 /// Return a reference to the non-modifiable "Selection2" selection of
3539 /// this object if "Selection2" is the current selection.
3540 ///
3541 /// \pre The behavior is undefined unless "Selection2" is the selection of this object.
3542 const double& selection2() const;
3543
3544 /// Return a reference to the non-modifiable "Selection3" selection of
3545 /// this object if "Selection3" is the current selection.
3546 ///
3547 /// \pre The behavior is undefined unless "Selection3" is the selection of this object.
3548 const Sequence4& selection3() const;
3549
3550 /// Return a reference to the non-modifiable "Selection4" selection of
3551 /// this object if "Selection4" is the current selection.
3552 ///
3553 /// \pre The behavior is undefined unless "Selection4" is the selection of this object.
3554 const Choice2& selection4() const;
3555
3556 /// Return `true` if the value of this object is a "Selection1" value,
3557 /// and return `false` otherwise.
3558 bool isSelection1Value() const;
3559
3560 /// Return `true` if the value of this object is a "Selection2" value,
3561 /// and return `false` otherwise.
3562 bool isSelection2Value() const;
3563
3564 /// Return `true` if the value of this object is a "Selection3" value,
3565 /// and return `false` otherwise.
3566 bool isSelection3Value() const;
3567
3568 /// Return `true` if the value of this object is a "Selection4" value,
3569 /// and return `false` otherwise.
3570 bool isSelection4Value() const;
3571
3572 /// Return `true` if the value of this object is undefined, and `false`
3573 /// otherwise.
3574 bool isUndefinedValue() const;
3575
3576 /// Return the symbolic name of the current selection of this object.
3577 const char *selectionName() const;
3578};
3579
3580// FREE OPERATORS
3581
3582/// Return `true` if the specified `lhs` and `rhs` objects have the same
3583/// value, and `false` otherwise. Two `Choice1` objects have the same
3584/// value if either the selections in both objects have the same ids and
3585/// the same values, or both selections are undefined.
3586inline
3587bool operator==(const Choice1& lhs, const Choice1& rhs);
3588
3589/// Return `true` if the specified `lhs` and `rhs` objects do not have the
3590/// same values, as determined by `operator==`, and `false` otherwise.
3591inline
3592bool operator!=(const Choice1& lhs, const Choice1& rhs);
3593
3594/// Format the specified `rhs` to the specified output `stream` and
3595/// return a reference to the modifiable `stream`.
3596inline
3597bsl::ostream& operator<<(bsl::ostream& stream, const Choice1& rhs);
3598
3599} // close package namespace
3600
3601// TRAITS
3602
3604
3605namespace balb {
3606
3607 // =============
3608 // class Choice2
3609 // =============
3610
3611class Choice2 {
3612
3613 // INSTANCE DATA
3614 union {
3619 };
3620
3621 int d_selectionId;
3622 bslma::Allocator *d_allocator_p;
3623
3624 public:
3625 // TYPES
3626
3627 enum {
3634
3635 enum {
3636 NUM_SELECTIONS = 4
3638
3639 enum {
3645
3646 // CONSTANTS
3647 static const char CLASS_NAME[];
3648
3650
3651 // CLASS METHODS
3652
3653 /// Return the most current `bdex` streaming version number supported by
3654 /// this class. See the `bslx` package-level documentation for more
3655 /// information on `bdex` streaming of value-semantic types and
3656 /// containers.
3657 static int maxSupportedBdexVersion();
3658
3659 /// Return selection information for the selection indicated by the
3660 /// specified `id` if the selection exists, and 0 otherwise.
3662
3663 /// Return selection information for the selection indicated by the
3664 /// specified `name` of the specified `nameLength` if the selection
3665 /// exists, and 0 otherwise.
3667 const char *name,
3668 int nameLength);
3669
3670 // CREATORS
3671
3672 /// Create an object of type `Choice2` having the default value. Use
3673 /// the optionally specified `basicAllocator` to supply memory. If
3674 /// `basicAllocator` is 0, the currently installed default allocator is
3675 /// used.
3676 explicit Choice2(bslma::Allocator *basicAllocator = 0);
3677
3678 /// Create an object of type `Choice2` having the value of the specified
3679 /// `original` object. Use the optionally specified `basicAllocator` to
3680 /// supply memory. If `basicAllocator` is 0, the currently installed
3681 /// default allocator is used.
3682 Choice2(const Choice2& original,
3683 bslma::Allocator *basicAllocator = 0);
3684
3685 /// Destroy this object.
3686 ~Choice2();
3687
3688 // MANIPULATORS
3689
3690 /// Assign to this object the value of the specified `rhs` object.
3692
3693 /// Assign to this object the value read from the specified input
3694 /// `stream` using the specified `version` format and return a reference
3695 /// to the modifiable `stream`. If `stream` is initially invalid, this
3696 /// operation has no effect. If `stream` becomes invalid during this
3697 /// operation, this object is valid, but its value is undefined. If
3698 /// `version` is not supported, `stream` is marked invalid and this object is unaltered.
3699 ///
3700 /// \note Note that no version is read from `stream`.
3701 /// See the `bslx` package-level documentation for more information on
3702 /// `bdex` streaming of value-semantic types and containers.
3703 template <class STREAM>
3704 STREAM& bdexStreamIn(STREAM& stream, int version);
3705
3706 /// Reset this object to the default value (i.e., its value upon default
3707 /// construction).
3708 void reset();
3709
3710 /// Set the value of this object to be the default for the selection
3711 /// indicated by the specified `selectionId`. Return 0 on success, and
3712 /// non-zero value otherwise (i.e., the selection is not found).
3714
3715 /// Set the value of this object to be the default for the selection
3716 /// indicated by the specified `name` of the specified `nameLength`.
3717 /// Return 0 on success, and non-zero value otherwise (i.e., the
3718 /// selection is not found).
3719 int makeSelection(const char *name, int nameLength);
3720
3721 /// Set the value of this object to be a "Selection1" value. Optionally
3722 /// specify the `value` of the "Selection1". If `value` is not
3723 /// specified, the default "Selection1" value is used.
3725 bool& makeSelection1(bool value);
3726
3727 /// Set the value of this object to be a "Selection2" value. Optionally
3728 /// specify the `value` of the "Selection2". If `value` is not
3729 /// specified, the default "Selection2" value is used.
3732
3733 /// Set the value of this object to be a "Selection3" value. Optionally
3734 /// specify the `value` of the "Selection3". If `value` is not
3735 /// specified, the default "Selection3" value is used.
3738
3739 /// Set the value of this object to be a "Selection4" value. Optionally
3740 /// specify the `value` of the "Selection4". If `value` is not
3741 /// specified, the default "Selection4" value is used.
3742 unsigned int& makeSelection4();
3743 unsigned int& makeSelection4(unsigned int value);
3744
3745 /// Invoke the specified `manipulator` on the address of the modifiable
3746 /// selection, supplying `manipulator` with the corresponding selection
3747 /// information structure. Return the value returned from the
3748 /// invocation of `manipulator` if this object has a defined selection,
3749 /// and -1 otherwise.
3750 template<class MANIPULATOR>
3751 int manipulateSelection(MANIPULATOR& manipulator);
3752
3753 /// Return a reference to the modifiable "Selection1" selection of this
3754 /// object if "Selection1" is the current selection.
3755 ///
3756 /// \pre The behavior is undefined unless "Selection1" is the selection of this object.
3757 bool& selection1();
3758
3759 /// Return a reference to the modifiable "Selection2" selection of this
3760 /// object if "Selection2" is the current selection.
3761 ///
3762 /// \pre The behavior is undefined unless "Selection2" is the selection of this object.
3764
3765 /// Return a reference to the modifiable "Selection3" selection of this
3766 /// object if "Selection3" is the current selection.
3767 ///
3768 /// \pre The behavior is undefined unless "Selection3" is the selection of this object.
3770
3771 /// Return a reference to the modifiable "Selection4" selection of this
3772 /// object if "Selection4" is the current selection.
3773 ///
3774 /// \pre The behavior is undefined unless "Selection4" is the selection of this object.
3775 unsigned int& selection4();
3776
3777 // ACCESSORS
3778
3779 /// Format this object to the specified output `stream` at the
3780 /// optionally specified indentation `level` and return a reference to
3781 /// the modifiable `stream`. If `level` is specified, optionally
3782 /// specify `spacesPerLevel`, the number of spaces per indentation level
3783 /// for this and all of its nested objects. Each line is indented by
3784 /// the absolute value of `level * spacesPerLevel`. If `level` is
3785 /// negative, suppress indentation of the first line. If
3786 /// `spacesPerLevel` is negative, suppress line breaks and format the
3787 /// entire output on one line. If `stream` is initially invalid, this operation has no effect.
3788 ///
3789 /// \note Note that a trailing newline is provided
3790 /// in multiline mode only.
3791 bsl::ostream& print(bsl::ostream& stream,
3792 int level = 0,
3793 int spacesPerLevel = 4) const;
3794
3795 /// Write the value of this object to the specified output `stream`
3796 /// using the specified `version` format and return a reference to the
3797 /// modifiable `stream`. If `version` is not supported, `stream` is unmodified.
3798 ///
3799 /// \note Note that `version` is not written to `stream`.
3800 /// See the `bslx` package-level documentation for more information
3801 /// on `bdex` streaming of value-semantic types and containers.
3802 template <class STREAM>
3803 STREAM& bdexStreamOut(STREAM& stream, int version) const;
3804
3805 /// Return the id of the current selection if the selection is defined,
3806 /// and -1 otherwise.
3807 int selectionId() const;
3808
3809 /// Invoke the specified `accessor` on the non-modifiable selection,
3810 /// supplying `accessor` with the corresponding selection information
3811 /// structure. Return the value returned from the invocation of
3812 /// `accessor` if this object has a defined selection, and -1 otherwise.
3813 template<class ACCESSOR>
3814 int accessSelection(ACCESSOR& accessor) const;
3815
3816 /// Return a reference to the non-modifiable "Selection1" selection of
3817 /// this object if "Selection1" is the current selection.
3818 ///
3819 /// \pre The behavior is undefined unless "Selection1" is the selection of this object.
3820 const bool& selection1() const;
3821
3822 /// Return a reference to the non-modifiable "Selection2" selection of
3823 /// this object if "Selection2" is the current selection.
3824 ///
3825 /// \pre The behavior is undefined unless "Selection2" is the selection of this object.
3826 const bsl::string& selection2() const;
3827
3828 /// Return a reference to the non-modifiable "Selection3" selection of
3829 /// this object if "Selection3" is the current selection.
3830 ///
3831 /// \pre The behavior is undefined unless "Selection3" is the selection of this object.
3832 const Choice1& selection3() const;
3833
3834 /// Return a reference to the non-modifiable "Selection4" selection of
3835 /// this object if "Selection4" is the current selection.
3836 ///
3837 /// \pre The behavior is undefined unless "Selection4" is the selection of this object.
3838 const unsigned int& selection4() const;
3839
3840 /// Return `true` if the value of this object is a "Selection1" value,
3841 /// and return `false` otherwise.
3842 bool isSelection1Value() const;
3843
3844 /// Return `true` if the value of this object is a "Selection2" value,
3845 /// and return `false` otherwise.
3846 bool isSelection2Value() const;
3847
3848 /// Return `true` if the value of this object is a "Selection3" value,
3849 /// and return `false` otherwise.
3850 bool isSelection3Value() const;
3851
3852 /// Return `true` if the value of this object is a "Selection4" value,
3853 /// and return `false` otherwise.
3854 bool isSelection4Value() const;
3855
3856 /// Return `true` if the value of this object is undefined, and `false`
3857 /// otherwise.
3858 bool isUndefinedValue() const;
3859
3860 /// Return the symbolic name of the current selection of this object.
3861 const char *selectionName() const;
3862};
3863
3864// FREE OPERATORS
3865
3866/// Return `true` if the specified `lhs` and `rhs` objects have the same
3867/// value, and `false` otherwise. Two `Choice2` objects have the same
3868/// value if either the selections in both objects have the same ids and
3869/// the same values, or both selections are undefined.
3870inline
3871bool operator==(const Choice2& lhs, const Choice2& rhs);
3872
3873/// Return `true` if the specified `lhs` and `rhs` objects do not have the
3874/// same values, as determined by `operator==`, and `false` otherwise.
3875inline
3876bool operator!=(const Choice2& lhs, const Choice2& rhs);
3877
3878/// Format the specified `rhs` to the specified output `stream` and
3879/// return a reference to the modifiable `stream`.
3880inline
3881bsl::ostream& operator<<(bsl::ostream& stream, const Choice2& rhs);
3882
3883} // close package namespace
3884
3885// TRAITS
3886
3888
3889namespace balb {
3890
3891 // ===============
3892 // class Sequence4
3893 // ===============
3894
3896
3897 // INSTANCE DATA
3898 double d_element10;
3899 bsl::vector<int> d_element17;
3900 bsl::vector<double> d_element15;
3901 bsl::vector<char> d_element11;
3902 bsl::vector<bsl::vector<char> > d_element16;
3903 bsl::vector<bool> d_element14;
3905 bsl::vector<Sequence3> d_element1;
3906 bsl::vector<CustomString> d_element19;
3907 bsl::vector<Choice1> d_element2;
3908 bsl::string d_element9;
3912 int d_element12;
3913 bdlb::NullableValue<int> d_element4;
3915 Enumerated::Value d_element13;
3916 bool d_element8;
3917
3918 public:
3919 // TYPES
3920 enum {
3941
3942 enum {
3943 NUM_ATTRIBUTES = 19
3945
3946 enum {
3967
3968 // CONSTANTS
3969 static const char CLASS_NAME[];
3970
3972
3973 public:
3974 // CLASS METHODS
3975
3976 /// Return the most current `bdex` streaming version number supported by
3977 /// this class. See the `bslx` package-level documentation for more
3978 /// information on `bdex` streaming of value-semantic types and
3979 /// containers.
3980 static int maxSupportedBdexVersion();
3981
3982 /// Return attribute information for the attribute indicated by the
3983 /// specified `id` if the attribute exists, and 0 otherwise.
3985
3986 /// Return attribute information for the attribute indicated by the
3987 /// specified `name` of the specified `nameLength` if the attribute
3988 /// exists, and 0 otherwise.
3990 const char *name,
3991 int nameLength);
3992
3993 // CREATORS
3994
3995 /// Create an object of type `Sequence4` having the default value. Use
3996 /// the optionally specified `basicAllocator` to supply memory. If
3997 /// `basicAllocator` is 0, the currently installed default allocator is
3998 /// used.
3999 explicit Sequence4(bslma::Allocator *basicAllocator = 0);
4000
4001 /// Create an object of type `Sequence4` having the value of the
4002 /// specified `original` object. Use the optionally specified
4003 /// `basicAllocator` to supply memory. If `basicAllocator` is 0, the
4004 /// currently installed default allocator is used.
4005 Sequence4(const Sequence4& original,
4006 bslma::Allocator *basicAllocator = 0);
4007
4008 /// Destroy this object.
4010
4011 // MANIPULATORS
4012
4013 /// Assign to this object the value of the specified `rhs` object.
4015
4016 /// Assign to this object the value read from the specified input
4017 /// `stream` using the specified `version` format and return a reference
4018 /// to the modifiable `stream`. If `stream` is initially invalid, this
4019 /// operation has no effect. If `stream` becomes invalid during this
4020 /// operation, this object is valid, but its value is undefined. If
4021 /// `version` is not supported, `stream` is marked invalid and this object is unaltered.
4022 ///
4023 /// \note Note that no version is read from `stream`.
4024 /// See the `bslx` package-level documentation for more information on
4025 /// `bdex` streaming of value-semantic types and containers.
4026 template <class STREAM>
4027 STREAM& bdexStreamIn(STREAM& stream, int version);
4028
4029 /// Reset this object to the default value (i.e., its value upon
4030 /// default construction).
4031 void reset();
4032
4033 /// Invoke the specified `manipulator` sequentially on the address of
4034 /// each (modifiable) attribute of this object, supplying `manipulator`
4035 /// with the corresponding attribute information structure until such
4036 /// invocation returns a non-zero value. Return the value from the
4037 /// last invocation of `manipulator` (i.e., the invocation that
4038 /// terminated the sequence).
4039 template<class MANIPULATOR>
4040 int manipulateAttributes(MANIPULATOR& manipulator);
4041
4042 /// Invoke the specified `manipulator` on the address of
4043 /// the (modifiable) attribute indicated by the specified `id`,
4044 /// supplying `manipulator` with the corresponding attribute
4045 /// information structure. Return the value returned from the
4046 /// invocation of `manipulator` if `id` identifies an attribute of this
4047 /// class, and -1 otherwise.
4048 template<class MANIPULATOR>
4049 int manipulateAttribute(MANIPULATOR& manipulator, int id);
4050
4051 /// Invoke the specified `manipulator` on the address of
4052 /// the (modifiable) attribute indicated by the specified `name` of the
4053 /// specified `nameLength`, supplying `manipulator` with the
4054 /// corresponding attribute information structure. Return the value
4055 /// returned from the invocation of `manipulator` if `name` identifies
4056 /// an attribute of this class, and -1 otherwise.
4057 template<class MANIPULATOR>
4058 int manipulateAttribute(MANIPULATOR& manipulator,
4059 const char *name,
4060 int nameLength);
4061
4062 /// Return a reference to the modifiable "Element1" attribute of this
4063 /// object.
4065
4066 /// Return a reference to the modifiable "Element2" attribute of this
4067 /// object.
4069
4070 /// Return a reference to the modifiable "Element3" attribute of this
4071 /// object.
4073
4074 /// Return a reference to the modifiable "Element4" attribute of this
4075 /// object.
4077
4078 /// Return a reference to the modifiable "Element5" attribute of this
4079 /// object.
4081
4082 /// Return a reference to the modifiable "Element6" attribute of this
4083 /// object.
4085
4086 /// Return a reference to the modifiable "Element7" attribute of this
4087 /// object.
4089
4090 /// Return a reference to the modifiable "Element8" attribute of this
4091 /// object.
4092 bool& element8();
4093
4094 /// Return a reference to the modifiable "Element9" attribute of this
4095 /// object.
4097
4098 /// Return a reference to the modifiable "Element10" attribute of this
4099 /// object.
4100 double& element10();
4101
4102 /// Return a reference to the modifiable "Element11" attribute of this
4103 /// object.
4105
4106 /// Return a reference to the modifiable "Element12" attribute of this
4107 /// object.
4108 int& element12();
4109
4110 /// Return a reference to the modifiable "Element13" attribute of this
4111 /// object.
4113
4114 /// Return a reference to the modifiable "Element14" attribute of this
4115 /// object.
4117
4118 /// Return a reference to the modifiable "Element15" attribute of this
4119 /// object.
4121
4122 /// Return a reference to the modifiable "Element16" attribute of this
4123 /// object.
4125
4126 /// Return a reference to the modifiable "Element17" attribute of this
4127 /// object.
4129
4130 /// Return a reference to the modifiable "Element18" attribute of this
4131 /// object.
4133
4134 /// Return a reference to the modifiable "Element19" attribute of this
4135 /// object.
4137
4138 // ACCESSORS
4139
4140 /// Format this object to the specified output `stream` at the
4141 /// optionally specified indentation `level` and return a reference to
4142 /// the modifiable `stream`. If `level` is specified, optionally
4143 /// specify `spacesPerLevel`, the number of spaces per indentation level
4144 /// for this and all of its nested objects. Each line is indented by
4145 /// the absolute value of `level * spacesPerLevel`. If `level` is
4146 /// negative, suppress indentation of the first line. If
4147 /// `spacesPerLevel` is negative, suppress line breaks and format the
4148 /// entire output on one line. If `stream` is initially invalid, this operation has no effect.
4149 ///
4150 /// \note Note that a trailing newline is provided
4151 /// in multiline mode only.
4152 bsl::ostream& print(bsl::ostream& stream,
4153 int level = 0,
4154 int spacesPerLevel = 4) const;
4155
4156 /// Write the value of this object to the specified output `stream`
4157 /// using the specified `version` format and return a reference to the
4158 /// modifiable `stream`. If `version` is not supported, `stream` is unmodified.
4159 ///
4160 /// \note Note that `version` is not written to `stream`.
4161 /// See the `bslx` package-level documentation for more information
4162 /// on `bdex` streaming of value-semantic types and containers.
4163 template <class STREAM>
4164 STREAM& bdexStreamOut(STREAM& stream, int version) const;
4165
4166 /// Invoke the specified `accessor` sequentially on each
4167 /// (non-modifiable) attribute of this object, supplying `accessor`
4168 /// with the corresponding attribute information structure until such
4169 /// invocation returns a non-zero value. Return the value from the
4170 /// last invocation of `accessor` (i.e., the invocation that terminated
4171 /// the sequence).
4172 template<class ACCESSOR>
4173 int accessAttributes(ACCESSOR& accessor) const;
4174
4175 /// Invoke the specified `accessor` on the (non-modifiable) attribute
4176 /// of this object indicated by the specified `id`, supplying `accessor`
4177 /// with the corresponding attribute information structure. Return the
4178 /// value returned from the invocation of `accessor` if `id` identifies
4179 /// an attribute of this class, and -1 otherwise.
4180 template<class ACCESSOR>
4181 int accessAttribute(ACCESSOR& accessor, int id) const;
4182
4183 /// Invoke the specified `accessor` on the (non-modifiable) attribute
4184 /// of this object indicated by the specified `name` of the specified
4185 /// `nameLength`, supplying `accessor` with the corresponding attribute
4186 /// information structure. Return the value returned from the
4187 /// invocation of `accessor` if `name` identifies an attribute of this
4188 /// class, and -1 otherwise.
4189 template<class ACCESSOR>
4190 int accessAttribute(ACCESSOR& accessor,
4191 const char *name,
4192 int nameLength) const;
4193
4194 /// Return a reference to the non-modifiable "Element1" attribute of
4195 /// this object.
4196 const bsl::vector<Sequence3>& element1() const;
4197
4198 /// Return a reference to the non-modifiable "Element2" attribute of
4199 /// this object.
4200 const bsl::vector<Choice1>& element2() const;
4201
4202 /// Return a reference to the non-modifiable "Element3" attribute of
4203 /// this object.
4205
4206 /// Return a reference to the non-modifiable "Element4" attribute of
4207 /// this object.
4208 const bdlb::NullableValue<int>& element4() const;
4209
4210 /// Return a reference to the non-modifiable "Element5" attribute of
4211 /// this object.
4213
4214 /// Return a reference to the non-modifiable "Element6" attribute of
4215 /// this object.
4217
4218 /// Return a reference to the non-modifiable "Element7" attribute of
4219 /// this object.
4221
4222 /// Return a reference to the non-modifiable "Element8" attribute of
4223 /// this object.
4224 bool element8() const;
4225
4226 /// Return a reference to the non-modifiable "Element9" attribute of
4227 /// this object.
4228 const bsl::string& element9() const;
4229
4230 /// Return a reference to the non-modifiable "Element10" attribute of
4231 /// this object.
4232 double element10() const;
4233
4234 /// Return a reference to the non-modifiable "Element11" attribute of
4235 /// this object.
4236 const bsl::vector<char>& element11() const;
4237
4238 /// Return a reference to the non-modifiable "Element12" attribute of
4239 /// this object.
4240 int element12() const;
4241
4242 /// Return a reference to the non-modifiable "Element13" attribute of
4243 /// this object.
4245
4246 /// Return a reference to the non-modifiable "Element14" attribute of
4247 /// this object.
4248 const bsl::vector<bool>& element14() const;
4249
4250 /// Return a reference to the non-modifiable "Element15" attribute of
4251 /// this object.
4252 const bsl::vector<double>& element15() const;
4253
4254 /// Return a reference to the non-modifiable "Element16" attribute of
4255 /// this object.
4257
4258 /// Return a reference to the non-modifiable "Element17" attribute of
4259 /// this object.
4260 const bsl::vector<int>& element17() const;
4261
4262 /// Return a reference to the non-modifiable "Element18" attribute of
4263 /// this object.
4265
4266 /// Return a reference to the non-modifiable "Element19" attribute of
4267 /// this object.
4268 const bsl::vector<CustomString>& element19() const;
4269};
4270
4271// FREE OPERATORS
4272
4273/// Return `true` if the specified `lhs` and `rhs` attribute objects have
4274/// the same value, and `false` otherwise. Two attribute objects have the
4275/// same value if each respective attribute has the same value.
4276inline
4277bool operator==(const Sequence4& lhs, const Sequence4& rhs);
4278
4279/// Return `true` if the specified `lhs` and `rhs` attribute objects do not
4280/// have the same value, and `false` otherwise. Two attribute objects do
4281/// not have the same value if one or more respective attributes differ in
4282/// values.
4283inline
4284bool operator!=(const Sequence4& lhs, const Sequence4& rhs);
4285
4286/// Format the specified `rhs` to the specified output `stream` and
4287/// return a reference to the modifiable `stream`.
4288inline
4289bsl::ostream& operator<<(bsl::ostream& stream, const Sequence4& rhs);
4290
4291} // close package namespace
4292
4293// TRAITS
4294
4296
4297namespace balb {
4298
4299 // ===============
4300 // class Sequence1
4301 // ===============
4302
4304
4305 // INSTANCE DATA
4306 bslma::Allocator *d_allocator_p;
4308 bsl::vector<Choice3> d_element5;
4309 bsl::vector<Choice1> d_element2;
4311 Choice2 *d_element3;
4312
4313 public:
4314 // TYPES
4315 enum {
4322
4323 enum {
4324 NUM_ATTRIBUTES = 5
4326
4327 enum {
4334
4335 // CONSTANTS
4336 static const char CLASS_NAME[];
4337
4339
4340 public:
4341 // CLASS METHODS
4342
4343 /// Return the most current `bdex` streaming version number supported by
4344 /// this class. See the `bslx` package-level documentation for more
4345 /// information on `bdex` streaming of value-semantic types and
4346 /// containers.
4347 static int maxSupportedBdexVersion();
4348
4349 /// Return attribute information for the attribute indicated by the
4350 /// specified `id` if the attribute exists, and 0 otherwise.
4352
4353 /// Return attribute information for the attribute indicated by the
4354 /// specified `name` of the specified `nameLength` if the attribute
4355 /// exists, and 0 otherwise.
4357 const char *name,
4358 int nameLength);
4359
4360 // CREATORS
4361
4362 /// Create an object of type `Sequence1` having the default value. Use
4363 /// the optionally specified `basicAllocator` to supply memory. If
4364 /// `basicAllocator` is 0, the currently installed default allocator is
4365 /// used.
4366 explicit Sequence1(bslma::Allocator *basicAllocator = 0);
4367
4368 /// Create an object of type `Sequence1` having the value of the
4369 /// specified `original` object. Use the optionally specified
4370 /// `basicAllocator` to supply memory. If `basicAllocator` is 0, the
4371 /// currently installed default allocator is used.
4372 Sequence1(const Sequence1& original,
4373 bslma::Allocator *basicAllocator = 0);
4374
4375 /// Destroy this object.
4377
4378 // MANIPULATORS
4379
4380 /// Assign to this object the value of the specified `rhs` object.
4382
4383 /// Assign to this object the value read from the specified input
4384 /// `stream` using the specified `version` format and return a reference
4385 /// to the modifiable `stream`. If `stream` is initially invalid, this
4386 /// operation has no effect. If `stream` becomes invalid during this
4387 /// operation, this object is valid, but its value is undefined. If
4388 /// `version` is not supported, `stream` is marked invalid and this object is unaltered.
4389 ///
4390 /// \note Note that no version is read from `stream`.
4391 /// See the `bslx` package-level documentation for more information on
4392 /// `bdex` streaming of value-semantic types and containers.
4393 template <class STREAM>
4394 STREAM& bdexStreamIn(STREAM& stream, int version);
4395
4396 /// Reset this object to the default value (i.e., its value upon
4397 /// default construction).
4398 void reset();
4399
4400 /// Invoke the specified `manipulator` sequentially on the address of
4401 /// each (modifiable) attribute of this object, supplying `manipulator`
4402 /// with the corresponding attribute information structure until such
4403 /// invocation returns a non-zero value. Return the value from the
4404 /// last invocation of `manipulator` (i.e., the invocation that
4405 /// terminated the sequence).
4406 template<class MANIPULATOR>
4407 int manipulateAttributes(MANIPULATOR& manipulator);
4408
4409 /// Invoke the specified `manipulator` on the address of
4410 /// the (modifiable) attribute indicated by the specified `id`,
4411 /// supplying `manipulator` with the corresponding attribute
4412 /// information structure. Return the value returned from the
4413 /// invocation of `manipulator` if `id` identifies an attribute of this
4414 /// class, and -1 otherwise.
4415 template<class MANIPULATOR>
4416 int manipulateAttribute(MANIPULATOR& manipulator, int id);
4417
4418 /// Invoke the specified `manipulator` on the address of
4419 /// the (modifiable) attribute indicated by the specified `name` of the
4420 /// specified `nameLength`, supplying `manipulator` with the
4421 /// corresponding attribute information structure. Return the value
4422 /// returned from the invocation of `manipulator` if `name` identifies
4423 /// an attribute of this class, and -1 otherwise.
4424 template<class MANIPULATOR>
4425 int manipulateAttribute(MANIPULATOR& manipulator,
4426 const char *name,
4427 int nameLength);
4428
4429 /// Return a reference to the modifiable "Element1" attribute of this
4430 /// object.
4432
4433 /// Return a reference to the modifiable "Element2" attribute of this
4434 /// object.
4436
4437 /// Return a reference to the modifiable "Element3" attribute of this
4438 /// object.
4439 Choice2& element3();
4440
4441 /// Return a reference to the modifiable "Element4" attribute of this
4442 /// object.
4444
4445 /// Return a reference to the modifiable "Element5" attribute of this
4446 /// object.
4448
4449 // ACCESSORS
4450
4451 /// Format this object to the specified output `stream` at the
4452 /// optionally specified indentation `level` and return a reference to
4453 /// the modifiable `stream`. If `level` is specified, optionally
4454 /// specify `spacesPerLevel`, the number of spaces per indentation level
4455 /// for this and all of its nested objects. Each line is indented by
4456 /// the absolute value of `level * spacesPerLevel`. If `level` is
4457 /// negative, suppress indentation of the first line. If
4458 /// `spacesPerLevel` is negative, suppress line breaks and format the
4459 /// entire output on one line. If `stream` is initially invalid, this operation has no effect.
4460 ///
4461 /// \note Note that a trailing newline is provided
4462 /// in multiline mode only.
4463 bsl::ostream& print(bsl::ostream& stream,
4464 int level = 0,
4465 int spacesPerLevel = 4) const;
4466
4467 /// Write the value of this object to the specified output `stream`
4468 /// using the specified `version` format and return a reference to the
4469 /// modifiable `stream`. If `version` is not supported, `stream` is unmodified.
4470 ///
4471 /// \note Note that `version` is not written to `stream`.
4472 /// See the `bslx` package-level documentation for more information
4473 /// on `bdex` streaming of value-semantic types and containers.
4474 template <class STREAM>
4475 STREAM& bdexStreamOut(STREAM& stream, int version) const;
4476
4477 /// Invoke the specified `accessor` sequentially on each
4478 /// (non-modifiable) attribute of this object, supplying `accessor`
4479 /// with the corresponding attribute information structure until such
4480 /// invocation returns a non-zero value. Return the value from the
4481 /// last invocation of `accessor` (i.e., the invocation that terminated
4482 /// the sequence).
4483 template<class ACCESSOR>
4484 int accessAttributes(ACCESSOR& accessor) const;
4485
4486 /// Invoke the specified `accessor` on the (non-modifiable) attribute
4487 /// of this object indicated by the specified `id`, supplying `accessor`
4488 /// with the corresponding attribute information structure. Return the
4489 /// value returned from the invocation of `accessor` if `id` identifies
4490 /// an attribute of this class, and -1 otherwise.
4491 template<class ACCESSOR>
4492 int accessAttribute(ACCESSOR& accessor, int id) const;
4493
4494 /// Invoke the specified `accessor` on the (non-modifiable) attribute
4495 /// of this object indicated by the specified `name` of the specified
4496 /// `nameLength`, supplying `accessor` with the corresponding attribute
4497 /// information structure. Return the value returned from the
4498 /// invocation of `accessor` if `name` identifies an attribute of this
4499 /// class, and -1 otherwise.
4500 template<class ACCESSOR>
4501 int accessAttribute(ACCESSOR& accessor,
4502 const char *name,
4503 int nameLength) const;
4504
4505 /// Return a reference to the non-modifiable "Element1" attribute of
4506 /// this object.
4508
4509 /// Return a reference to the non-modifiable "Element2" attribute of
4510 /// this object.
4511 const bsl::vector<Choice1>& element2() const;
4512
4513 /// Return a reference to the non-modifiable "Element3" attribute of
4514 /// this object.
4515 const Choice2& element3() const;
4516
4517 /// Return a reference to the non-modifiable "Element4" attribute of
4518 /// this object.
4520
4521 /// Return a reference to the non-modifiable "Element5" attribute of
4522 /// this object.
4523 const bsl::vector<Choice3>& element5() const;
4524};
4525
4526// FREE OPERATORS
4527
4528/// Return `true` if the specified `lhs` and `rhs` attribute objects have
4529/// the same value, and `false` otherwise. Two attribute objects have the
4530/// same value if each respective attribute has the same value.
4531inline
4532bool operator==(const Sequence1& lhs, const Sequence1& rhs);
4533
4534/// Return `true` if the specified `lhs` and `rhs` attribute objects do not
4535/// have the same value, and `false` otherwise. Two attribute objects do
4536/// not have the same value if one or more respective attributes differ in
4537/// values.
4538inline
4539bool operator!=(const Sequence1& lhs, const Sequence1& rhs);
4540
4541/// Format the specified `rhs` to the specified output `stream` and
4542/// return a reference to the modifiable `stream`.
4543inline
4544bsl::ostream& operator<<(bsl::ostream& stream, const Sequence1& rhs);
4545
4546} // close package namespace
4547
4548// TRAITS
4549
4551
4552namespace balb {
4553
4554 // ===============
4555 // class Sequence2
4556 // ===============
4557
4559
4560 // INSTANCE DATA
4561 bdlt::DatetimeTz d_element3;
4562 bdlb::NullableValue<double> d_element5;
4564 CustomString d_element1;
4565 unsigned char d_element2;
4566
4567 public:
4568 // TYPES
4569 enum {
4576
4577 enum {
4578 NUM_ATTRIBUTES = 5
4580
4581 enum {
4588
4589 // CONSTANTS
4590 static const char CLASS_NAME[];
4591
4593
4594 public:
4595 // CLASS METHODS
4596
4597 /// Return the most current `bdex` streaming version number supported by
4598 /// this class. See the `bslx` package-level documentation for more
4599 /// information on `bdex` streaming of value-semantic types and
4600 /// containers.
4601 static int maxSupportedBdexVersion();
4602
4603 /// Return attribute information for the attribute indicated by the
4604 /// specified `id` if the attribute exists, and 0 otherwise.
4606
4607 /// Return attribute information for the attribute indicated by the
4608 /// specified `name` of the specified `nameLength` if the attribute
4609 /// exists, and 0 otherwise.
4611 const char *name,
4612 int nameLength);
4613
4614 // CREATORS
4615
4616 /// Create an object of type `Sequence2` having the default value. Use
4617 /// the optionally specified `basicAllocator` to supply memory. If
4618 /// `basicAllocator` is 0, the currently installed default allocator is
4619 /// used.
4620 explicit Sequence2(bslma::Allocator *basicAllocator = 0);
4621
4622 /// Create an object of type `Sequence2` having the value of the
4623 /// specified `original` object. Use the optionally specified
4624 /// `basicAllocator` to supply memory. If `basicAllocator` is 0, the
4625 /// currently installed default allocator is used.
4626 Sequence2(const Sequence2& original,
4627 bslma::Allocator *basicAllocator = 0);
4628
4629 /// Destroy this object.
4631
4632 // MANIPULATORS
4633
4634 /// Assign to this object the value of the specified `rhs` object.
4636
4637 /// Assign to this object the value read from the specified input
4638 /// `stream` using the specified `version` format and return a reference
4639 /// to the modifiable `stream`. If `stream` is initially invalid, this
4640 /// operation has no effect. If `stream` becomes invalid during this
4641 /// operation, this object is valid, but its value is undefined. If
4642 /// `version` is not supported, `stream` is marked invalid and this object is unaltered.
4643 ///
4644 /// \note Note that no version is read from `stream`.
4645 /// See the `bslx` package-level documentation for more information on
4646 /// `bdex` streaming of value-semantic types and containers.
4647 template <class STREAM>
4648 STREAM& bdexStreamIn(STREAM& stream, int version);
4649
4650 /// Reset this object to the default value (i.e., its value upon
4651 /// default construction).
4652 void reset();
4653
4654 /// Invoke the specified `manipulator` sequentially on the address of
4655 /// each (modifiable) attribute of this object, supplying `manipulator`
4656 /// with the corresponding attribute information structure until such
4657 /// invocation returns a non-zero value. Return the value from the
4658 /// last invocation of `manipulator` (i.e., the invocation that
4659 /// terminated the sequence).
4660 template<class MANIPULATOR>
4661 int manipulateAttributes(MANIPULATOR& manipulator);
4662
4663 /// Invoke the specified `manipulator` on the address of
4664 /// the (modifiable) attribute indicated by the specified `id`,
4665 /// supplying `manipulator` with the corresponding attribute
4666 /// information structure. Return the value returned from the
4667 /// invocation of `manipulator` if `id` identifies an attribute of this
4668 /// class, and -1 otherwise.
4669 template<class MANIPULATOR>
4670 int manipulateAttribute(MANIPULATOR& manipulator, int id);
4671
4672 /// Invoke the specified `manipulator` on the address of
4673 /// the (modifiable) attribute indicated by the specified `name` of the
4674 /// specified `nameLength`, supplying `manipulator` with the
4675 /// corresponding attribute information structure. Return the value
4676 /// returned from the invocation of `manipulator` if `name` identifies
4677 /// an attribute of this class, and -1 otherwise.
4678 template<class MANIPULATOR>
4679 int manipulateAttribute(MANIPULATOR& manipulator,
4680 const char *name,
4681 int nameLength);
4682
4683 /// Return a reference to the modifiable "Element1" attribute of this
4684 /// object.
4686
4687 /// Return a reference to the modifiable "Element2" attribute of this
4688 /// object.
4689 unsigned char& element2();
4690
4691 /// Return a reference to the modifiable "Element3" attribute of this
4692 /// object.
4694
4695 /// Return a reference to the modifiable "Element4" attribute of this
4696 /// object.
4698
4699 /// Return a reference to the modifiable "Element5" attribute of this
4700 /// object.
4702
4703 // ACCESSORS
4704
4705 /// Format this object to the specified output `stream` at the
4706 /// optionally specified indentation `level` and return a reference to
4707 /// the modifiable `stream`. If `level` is specified, optionally
4708 /// specify `spacesPerLevel`, the number of spaces per indentation level
4709 /// for this and all of its nested objects. Each line is indented by
4710 /// the absolute value of `level * spacesPerLevel`. If `level` is
4711 /// negative, suppress indentation of the first line. If
4712 /// `spacesPerLevel` is negative, suppress line breaks and format the
4713 /// entire output on one line. If `stream` is initially invalid, this operation has no effect.
4714 ///
4715 /// \note Note that a trailing newline is provided
4716 /// in multiline mode only.
4717 bsl::ostream& print(bsl::ostream& stream,
4718 int level = 0,
4719 int spacesPerLevel = 4) const;
4720
4721 /// Write the value of this object to the specified output `stream`
4722 /// using the specified `version` format and return a reference to the
4723 /// modifiable `stream`. If `version` is not supported, `stream` is unmodified.
4724 ///
4725 /// \note Note that `version` is not written to `stream`.
4726 /// See the `bslx` package-level documentation for more information
4727 /// on `bdex` streaming of value-semantic types and containers.
4728 template <class STREAM>
4729 STREAM& bdexStreamOut(STREAM& stream, int version) const;
4730
4731 /// Invoke the specified `accessor` sequentially on each
4732 /// (non-modifiable) attribute of this object, supplying `accessor`
4733 /// with the corresponding attribute information structure until such
4734 /// invocation returns a non-zero value. Return the value from the
4735 /// last invocation of `accessor` (i.e., the invocation that terminated
4736 /// the sequence).
4737 template<class ACCESSOR>
4738 int accessAttributes(ACCESSOR& accessor) const;
4739
4740 /// Invoke the specified `accessor` on the (non-modifiable) attribute
4741 /// of this object indicated by the specified `id`, supplying `accessor`
4742 /// with the corresponding attribute information structure. Return the
4743 /// value returned from the invocation of `accessor` if `id` identifies
4744 /// an attribute of this class, and -1 otherwise.
4745 template<class ACCESSOR>
4746 int accessAttribute(ACCESSOR& accessor, int id) const;
4747
4748 /// Invoke the specified `accessor` on the (non-modifiable) attribute
4749 /// of this object indicated by the specified `name` of the specified
4750 /// `nameLength`, supplying `accessor` with the corresponding attribute
4751 /// information structure. Return the value returned from the
4752 /// invocation of `accessor` if `name` identifies an attribute of this
4753 /// class, and -1 otherwise.
4754 template<class ACCESSOR>
4755 int accessAttribute(ACCESSOR& accessor,
4756 const char *name,
4757 int nameLength) const;
4758
4759 /// Return a reference to the non-modifiable "Element1" attribute of
4760 /// this object.
4761 const CustomString& element1() const;
4762
4763 /// Return a reference to the non-modifiable "Element2" attribute of
4764 /// this object.
4765 unsigned char element2() const;
4766
4767 /// Return a reference to the non-modifiable "Element3" attribute of
4768 /// this object.
4769 const bdlt::DatetimeTz& element3() const;
4770
4771 /// Return a reference to the non-modifiable "Element4" attribute of
4772 /// this object.
4774
4775 /// Return a reference to the non-modifiable "Element5" attribute of
4776 /// this object.
4778};
4779
4780// FREE OPERATORS
4781
4782/// Return `true` if the specified `lhs` and `rhs` attribute objects have
4783/// the same value, and `false` otherwise. Two attribute objects have the
4784/// same value if each respective attribute has the same value.
4785inline
4786bool operator==(const Sequence2& lhs, const Sequence2& rhs);
4787
4788/// Return `true` if the specified `lhs` and `rhs` attribute objects do not
4789/// have the same value, and `false` otherwise. Two attribute objects do
4790/// not have the same value if one or more respective attributes differ in
4791/// values.
4792inline
4793bool operator!=(const Sequence2& lhs, const Sequence2& rhs);
4794
4795/// Format the specified `rhs` to the specified output `stream` and
4796/// return a reference to the modifiable `stream`.
4797inline
4798bsl::ostream& operator<<(bsl::ostream& stream, const Sequence2& rhs);
4799
4800} // close package namespace
4801
4802// TRAITS
4803
4805
4806namespace balb {
4807
4808 // ==================================
4809 // class SequenceWithAnonymityChoice2
4810 // ==================================
4811
4813
4814 // INSTANCE DATA
4815 union {
4818 };
4819
4820 int d_selectionId;
4821 bslma::Allocator *d_allocator_p;
4822
4823 public:
4824 // TYPES
4825
4826 enum {
4831
4832 enum {
4833 NUM_SELECTIONS = 2
4835
4836 enum {
4840
4841 // CONSTANTS
4842 static const char CLASS_NAME[];
4843
4845
4846 // CLASS METHODS
4847
4848 /// Return the most current `bdex` streaming version number supported by
4849 /// this class. See the `bslx` package-level documentation for more
4850 /// information on `bdex` streaming of value-semantic types and
4851 /// containers.
4852 static int maxSupportedBdexVersion();
4853
4854 /// Return selection information for the selection indicated by the
4855 /// specified `id` if the selection exists, and 0 otherwise.
4857
4858 /// Return selection information for the selection indicated by the
4859 /// specified `name` of the specified `nameLength` if the selection
4860 /// exists, and 0 otherwise.
4862 const char *name,
4863 int nameLength);
4864
4865 // CREATORS
4866
4867 /// Create an object of type `SequenceWithAnonymityChoice2` having the
4868 /// default value. Use the optionally specified `basicAllocator` to
4869 /// supply memory. If `basicAllocator` is 0, the currently installed
4870 /// default allocator is used.
4871 explicit SequenceWithAnonymityChoice2(bslma::Allocator *basicAllocator = 0);
4872
4873 /// Create an object of type `SequenceWithAnonymityChoice2` having the
4874 /// value of the specified `original` object. Use the optionally
4875 /// specified `basicAllocator` to supply memory. If `basicAllocator` is
4876 /// 0, the currently installed default allocator is used.
4878 bslma::Allocator *basicAllocator = 0);
4879
4880 /// Destroy this object.
4882
4883 // MANIPULATORS
4884
4885 /// Assign to this object the value of the specified `rhs` object.
4887
4888 /// Assign to this object the value read from the specified input
4889 /// `stream` using the specified `version` format and return a reference
4890 /// to the modifiable `stream`. If `stream` is initially invalid, this
4891 /// operation has no effect. If `stream` becomes invalid during this
4892 /// operation, this object is valid, but its value is undefined. If
4893 /// `version` is not supported, `stream` is marked invalid and this object is unaltered.
4894 ///
4895 /// \note Note that no version is read from `stream`.
4896 /// See the `bslx` package-level documentation for more information on
4897 /// `bdex` streaming of value-semantic types and containers.
4898 template <class STREAM>
4899 STREAM& bdexStreamIn(STREAM& stream, int version);
4900
4901 /// Reset this object to the default value (i.e., its value upon default
4902 /// construction).
4903 void reset();
4904
4905 /// Set the value of this object to be the default for the selection
4906 /// indicated by the specified `selectionId`. Return 0 on success, and
4907 /// non-zero value otherwise (i.e., the selection is not found).
4909
4910 /// Set the value of this object to be the default for the selection
4911 /// indicated by the specified `name` of the specified `nameLength`.
4912 /// Return 0 on success, and non-zero value otherwise (i.e., the
4913 /// selection is not found).
4914 int makeSelection(const char *name, int nameLength);
4915
4916 /// Set the value of this object to be a "Selection7" value. Optionally
4917 /// specify the `value` of the "Selection7". If `value` is not
4918 /// specified, the default "Selection7" value is used.
4921
4922 /// Set the value of this object to be a "Selection8" value. Optionally
4923 /// specify the `value` of the "Selection8". If `value` is not
4924 /// specified, the default "Selection8" value is used.
4927
4928 /// Invoke the specified `manipulator` on the address of the modifiable
4929 /// selection, supplying `manipulator` with the corresponding selection
4930 /// information structure. Return the value returned from the
4931 /// invocation of `manipulator` if this object has a defined selection,
4932 /// and -1 otherwise.
4933 template<class MANIPULATOR>
4934 int manipulateSelection(MANIPULATOR& manipulator);
4935
4936 /// Return a reference to the modifiable "Selection7" selection of this
4937 /// object if "Selection7" is the current selection.
4938 ///
4939 /// \pre The behavior is undefined unless "Selection7" is the selection of this object.
4941
4942 /// Return a reference to the modifiable "Selection8" selection of this
4943 /// object if "Selection8" is the current selection.
4944 ///
4945 /// \pre The behavior is undefined unless "Selection8" is the selection of this object.
4947
4948 // ACCESSORS
4949
4950 /// Format this object to the specified output `stream` at the
4951 /// optionally specified indentation `level` and return a reference to
4952 /// the modifiable `stream`. If `level` is specified, optionally
4953 /// specify `spacesPerLevel`, the number of spaces per indentation level
4954 /// for this and all of its nested objects. Each line is indented by
4955 /// the absolute value of `level * spacesPerLevel`. If `level` is
4956 /// negative, suppress indentation of the first line. If
4957 /// `spacesPerLevel` is negative, suppress line breaks and format the
4958 /// entire output on one line. If `stream` is initially invalid, this operation has no effect.
4959 ///
4960 /// \note Note that a trailing newline is provided
4961 /// in multiline mode only.
4962 bsl::ostream& print(bsl::ostream& stream,
4963 int level = 0,
4964 int spacesPerLevel = 4) const;
4965
4966 /// Write the value of this object to the specified output `stream`
4967 /// using the specified `version` format and return a reference to the
4968 /// modifiable `stream`. If `version` is not supported, `stream` is unmodified.
4969 ///
4970 /// \note Note that `version` is not written to `stream`.
4971 /// See the `bslx` package-level documentation for more information
4972 /// on `bdex` streaming of value-semantic types and containers.
4973 template <class STREAM>
4974 STREAM& bdexStreamOut(STREAM& stream, int version) const;
4975
4976 /// Return the id of the current selection if the selection is defined,
4977 /// and -1 otherwise.
4978 int selectionId() const;
4979
4980 /// Invoke the specified `accessor` on the non-modifiable selection,
4981 /// supplying `accessor` with the corresponding selection information
4982 /// structure. Return the value returned from the invocation of
4983 /// `accessor` if this object has a defined selection, and -1 otherwise.
4984 template<class ACCESSOR>
4985 int accessSelection(ACCESSOR& accessor) const;
4986
4987 /// Return a reference to the non-modifiable "Selection7" selection of
4988 /// this object if "Selection7" is the current selection.
4989 ///
4990 /// \pre The behavior is undefined unless "Selection7" is the selection of this object.
4991 const Sequence4& selection7() const;
4992
4993 /// Return a reference to the non-modifiable "Selection8" selection of
4994 /// this object if "Selection8" is the current selection.
4995 ///
4996 /// \pre The behavior is undefined unless "Selection8" is the selection of this object.
4997 const Choice2& selection8() const;
4998
4999 /// Return `true` if the value of this object is a "Selection7" value,
5000 /// and return `false` otherwise.
5001 bool isSelection7Value() const;
5002
5003 /// Return `true` if the value of this object is a "Selection8" value,
5004 /// and return `false` otherwise.
5005 bool isSelection8Value() const;
5006
5007 /// Return `true` if the value of this object is undefined, and `false`
5008 /// otherwise.
5009 bool isUndefinedValue() const;
5010
5011 /// Return the symbolic name of the current selection of this object.
5012 const char *selectionName() const;
5013};
5014
5015// FREE OPERATORS
5016
5017/// Return `true` if the specified `lhs` and `rhs` objects have the same
5018/// value, and `false` otherwise. Two `SequenceWithAnonymityChoice2` objects have the same
5019/// value if either the selections in both objects have the same ids and
5020/// the same values, or both selections are undefined.
5021inline
5023
5024/// Return `true` if the specified `lhs` and `rhs` objects do not have the
5025/// same values, as determined by `operator==`, and `false` otherwise.
5026inline
5028
5029/// Format the specified `rhs` to the specified output `stream` and
5030/// return a reference to the modifiable `stream`.
5031inline
5032bsl::ostream& operator<<(bsl::ostream& stream, const SequenceWithAnonymityChoice2& rhs);
5033
5034} // close package namespace
5035
5036// TRAITS
5037
5039
5040namespace balb {
5041
5042 // ===========================
5043 // class SequenceWithAnonymity
5044 // ===========================
5045
5047
5048 // INSTANCE DATA
5052 Sequence6 d_element4;
5053
5054 public:
5055 // TYPES
5056 enum {
5062
5063 enum {
5064 NUM_ATTRIBUTES = 4
5066
5067 enum {
5073
5074 // CONSTANTS
5075 static const char CLASS_NAME[];
5076
5078
5079 public:
5080 // CLASS METHODS
5081
5082 /// Return the most current `bdex` streaming version number supported by
5083 /// this class. See the `bslx` package-level documentation for more
5084 /// information on `bdex` streaming of value-semantic types and
5085 /// containers.
5086 static int maxSupportedBdexVersion();
5087
5088 /// Return attribute information for the attribute indicated by the
5089 /// specified `id` if the attribute exists, and 0 otherwise.
5091
5092 /// Return attribute information for the attribute indicated by the
5093 /// specified `name` of the specified `nameLength` if the attribute
5094 /// exists, and 0 otherwise.
5096 const char *name,
5097 int nameLength);
5098
5099 // CREATORS
5100
5101 /// Create an object of type `SequenceWithAnonymity` having the default
5102 /// value. Use the optionally specified `basicAllocator` to supply
5103 /// memory. If `basicAllocator` is 0, the currently installed default
5104 /// allocator is used.
5105 explicit SequenceWithAnonymity(bslma::Allocator *basicAllocator = 0);
5106
5107 /// Create an object of type `SequenceWithAnonymity` having the value of
5108 /// the specified `original` object. Use the optionally specified
5109 /// `basicAllocator` to supply memory. If `basicAllocator` is 0, the
5110 /// currently installed default allocator is used.
5112 bslma::Allocator *basicAllocator = 0);
5113
5114 /// Destroy this object.
5116
5117 // MANIPULATORS
5118
5119 /// Assign to this object the value of the specified `rhs` object.
5121
5122 /// Assign to this object the value read from the specified input
5123 /// `stream` using the specified `version` format and return a reference
5124 /// to the modifiable `stream`. If `stream` is initially invalid, this
5125 /// operation has no effect. If `stream` becomes invalid during this
5126 /// operation, this object is valid, but its value is undefined. If
5127 /// `version` is not supported, `stream` is marked invalid and this object is unaltered.
5128 ///
5129 /// \note Note that no version is read from `stream`.
5130 /// See the `bslx` package-level documentation for more information on
5131 /// `bdex` streaming of value-semantic types and containers.
5132 template <class STREAM>
5133 STREAM& bdexStreamIn(STREAM& stream, int version);
5134
5135 /// Reset this object to the default value (i.e., its value upon
5136 /// default construction).
5137 void reset();
5138
5139 /// Invoke the specified `manipulator` sequentially on the address of
5140 /// each (modifiable) attribute of this object, supplying `manipulator`
5141 /// with the corresponding attribute information structure until such
5142 /// invocation returns a non-zero value. Return the value from the
5143 /// last invocation of `manipulator` (i.e., the invocation that
5144 /// terminated the sequence).
5145 template<class MANIPULATOR>
5146 int manipulateAttributes(MANIPULATOR& manipulator);
5147
5148 /// Invoke the specified `manipulator` on the address of
5149 /// the (modifiable) attribute indicated by the specified `id`,
5150 /// supplying `manipulator` with the corresponding attribute
5151 /// information structure. Return the value returned from the
5152 /// invocation of `manipulator` if `id` identifies an attribute of this
5153 /// class, and -1 otherwise.
5154 template<class MANIPULATOR>
5155 int manipulateAttribute(MANIPULATOR& manipulator, int id);
5156
5157 /// Invoke the specified `manipulator` on the address of
5158 /// the (modifiable) attribute indicated by the specified `name` of the
5159 /// specified `nameLength`, supplying `manipulator` with the
5160 /// corresponding attribute information structure. Return the value
5161 /// returned from the invocation of `manipulator` if `name` identifies
5162 /// an attribute of this class, and -1 otherwise.
5163 template<class MANIPULATOR>
5164 int manipulateAttribute(MANIPULATOR& manipulator,
5165 const char *name,
5166 int nameLength);
5167
5168 /// Return a reference to the modifiable "Choice" attribute of this
5169 /// object.
5171
5172 /// Return a reference to the modifiable "Choice1" attribute of this
5173 /// object.
5175
5176 /// Return a reference to the modifiable "Choice2" attribute of this
5177 /// object.
5179
5180 /// Return a reference to the modifiable "Element4" attribute of this
5181 /// object.
5183
5184 // ACCESSORS
5185
5186 /// Format this object to the specified output `stream` at the
5187 /// optionally specified indentation `level` and return a reference to
5188 /// the modifiable `stream`. If `level` is specified, optionally
5189 /// specify `spacesPerLevel`, the number of spaces per indentation level
5190 /// for this and all of its nested objects. Each line is indented by
5191 /// the absolute value of `level * spacesPerLevel`. If `level` is
5192 /// negative, suppress indentation of the first line. If
5193 /// `spacesPerLevel` is negative, suppress line breaks and format the
5194 /// entire output on one line. If `stream` is initially invalid, this operation has no effect.
5195 ///
5196 /// \note Note that a trailing newline is provided
5197 /// in multiline mode only.
5198 bsl::ostream& print(bsl::ostream& stream,
5199 int level = 0,
5200 int spacesPerLevel = 4) const;
5201
5202 /// Write the value of this object to the specified output `stream`
5203 /// using the specified `version` format and return a reference to the
5204 /// modifiable `stream`. If `version` is not supported, `stream` is unmodified.
5205 ///
5206 /// \note Note that `version` is not written to `stream`.
5207 /// See the `bslx` package-level documentation for more information
5208 /// on `bdex` streaming of value-semantic types and containers.
5209 template <class STREAM>
5210 STREAM& bdexStreamOut(STREAM& stream, int version) const;
5211
5212 /// Invoke the specified `accessor` sequentially on each
5213 /// (non-modifiable) attribute of this object, supplying `accessor`
5214 /// with the corresponding attribute information structure until such
5215 /// invocation returns a non-zero value. Return the value from the
5216 /// last invocation of `accessor` (i.e., the invocation that terminated
5217 /// the sequence).
5218 template<class ACCESSOR>
5219 int accessAttributes(ACCESSOR& accessor) const;
5220
5221 /// Invoke the specified `accessor` on the (non-modifiable) attribute
5222 /// of this object indicated by the specified `id`, supplying `accessor`
5223 /// with the corresponding attribute information structure. Return the
5224 /// value returned from the invocation of `accessor` if `id` identifies
5225 /// an attribute of this class, and -1 otherwise.
5226 template<class ACCESSOR>
5227 int accessAttribute(ACCESSOR& accessor, int id) const;
5228
5229 /// Invoke the specified `accessor` on the (non-modifiable) attribute
5230 /// of this object indicated by the specified `name` of the specified
5231 /// `nameLength`, supplying `accessor` with the corresponding attribute
5232 /// information structure. Return the value returned from the
5233 /// invocation of `accessor` if `name` identifies an attribute of this
5234 /// class, and -1 otherwise.
5235 template<class ACCESSOR>
5236 int accessAttribute(ACCESSOR& accessor,
5237 const char *name,
5238 int nameLength) const;
5239
5240 /// Return a reference to the non-modifiable "Choice" attribute of this
5241 /// object.
5242 const SequenceWithAnonymityChoice& choice() const;
5243
5244 /// Return a reference to the non-modifiable "Choice1" attribute of this
5245 /// object.
5247
5248 /// Return a reference to the non-modifiable "Choice2" attribute of this
5249 /// object.
5251
5252 /// Return a reference to the non-modifiable "Element4" attribute of
5253 /// this object.
5254 const Sequence6& element4() const;
5255};
5256
5257// FREE OPERATORS
5258
5259/// Return `true` if the specified `lhs` and `rhs` attribute objects have
5260/// the same value, and `false` otherwise. Two attribute objects have the
5261/// same value if each respective attribute has the same value.
5262inline
5264
5265/// Return `true` if the specified `lhs` and `rhs` attribute objects do not
5266/// have the same value, and `false` otherwise. Two attribute objects do
5267/// not have the same value if one or more respective attributes differ in
5268/// values.
5269inline
5271
5272/// Format the specified `rhs` to the specified output `stream` and
5273/// return a reference to the modifiable `stream`.
5274inline
5275bsl::ostream& operator<<(bsl::ostream& stream, const SequenceWithAnonymity& rhs);
5276
5277} // close package namespace
5278
5279// TRAITS
5280
5282
5283namespace balb {
5284
5285 // ========================
5286 // class FeatureTestMessage
5287 // ========================
5288
5290
5291 // INSTANCE DATA
5292 union {
5304 };
5305
5306 int d_selectionId;
5307 bslma::Allocator *d_allocator_p;
5308
5309 public:
5310 // TYPES
5311
5312 enum {
5326
5327 enum {
5328 NUM_SELECTIONS = 11
5330
5331 enum {
5344
5345 // CONSTANTS
5346 static const char CLASS_NAME[];
5347
5349
5350 // CLASS METHODS
5351
5352 /// Return the most current `bdex` streaming version number supported by
5353 /// this class. See the `bslx` package-level documentation for more
5354 /// information on `bdex` streaming of value-semantic types and
5355 /// containers.
5356 static int maxSupportedBdexVersion();
5357
5358 /// Return selection information for the selection indicated by the
5359 /// specified `id` if the selection exists, and 0 otherwise.
5361
5362 /// Return selection information for the selection indicated by the
5363 /// specified `name` of the specified `nameLength` if the selection
5364 /// exists, and 0 otherwise.
5366 const char *name,
5367 int nameLength);
5368
5369 // CREATORS
5370
5371 /// Create an object of type `FeatureTestMessage` having the default
5372 /// value. Use the optionally specified `basicAllocator` to supply
5373 /// memory. If `basicAllocator` is 0, the currently installed default
5374 /// allocator is used.
5375 explicit FeatureTestMessage(bslma::Allocator *basicAllocator = 0);
5376
5377 /// Create an object of type `FeatureTestMessage` having the value of
5378 /// the specified `original` object. Use the optionally specified
5379 /// `basicAllocator` to supply memory. If `basicAllocator` is 0, the
5380 /// currently installed default allocator is used.
5382 bslma::Allocator *basicAllocator = 0);
5383
5384 /// Destroy this object.
5386
5387 // MANIPULATORS
5388
5389 /// Assign to this object the value of the specified `rhs` object.
5391
5392 /// Assign to this object the value read from the specified input
5393 /// `stream` using the specified `version` format and return a reference
5394 /// to the modifiable `stream`. If `stream` is initially invalid, this
5395 /// operation has no effect. If `stream` becomes invalid during this
5396 /// operation, this object is valid, but its value is undefined. If
5397 /// `version` is not supported, `stream` is marked invalid and this object is unaltered.
5398 ///
5399 /// \note Note that no version is read from `stream`.
5400 /// See the `bslx` package-level documentation for more information on
5401 /// `bdex` streaming of value-semantic types and containers.
5402 template <class STREAM>
5403 STREAM& bdexStreamIn(STREAM& stream, int version);
5404
5405 /// Reset this object to the default value (i.e., its value upon default
5406 /// construction).
5407 void reset();
5408
5409 /// Set the value of this object to be the default for the selection
5410 /// indicated by the specified `selectionId`. Return 0 on success, and
5411 /// non-zero value otherwise (i.e., the selection is not found).
5413
5414 /// Set the value of this object to be the default for the selection
5415 /// indicated by the specified `name` of the specified `nameLength`.
5416 /// Return 0 on success, and non-zero value otherwise (i.e., the
5417 /// selection is not found).
5418 int makeSelection(const char *name, int nameLength);
5419
5420 /// Set the value of this object to be a "Selection1" value. Optionally
5421 /// specify the `value` of the "Selection1". If `value` is not
5422 /// specified, the default "Selection1" value is used.
5425
5426 /// Set the value of this object to be a "Selection2" value. Optionally
5427 /// specify the `value` of the "Selection2". If `value` is not
5428 /// specified, the default "Selection2" value is used.
5431
5432 /// Set the value of this object to be a "Selection3" value. Optionally
5433 /// specify the `value` of the "Selection3". If `value` is not
5434 /// specified, the default "Selection3" value is used.
5437
5438 /// Set the value of this object to be a "Selection4" value. Optionally
5439 /// specify the `value` of the "Selection4". If `value` is not
5440 /// specified, the default "Selection4" value is used.
5443
5444 /// Set the value of this object to be a "Selection5" value. Optionally
5445 /// specify the `value` of the "Selection5". If `value` is not
5446 /// specified, the default "Selection5" value is used.
5449
5450 /// Set the value of this object to be a "Selection6" value. Optionally
5451 /// specify the `value` of the "Selection6". If `value` is not
5452 /// specified, the default "Selection6" value is used.
5455
5456 /// Set the value of this object to be a "Selection7" value. Optionally
5457 /// specify the `value` of the "Selection7". If `value` is not
5458 /// specified, the default "Selection7" value is used.
5461
5462 /// Set the value of this object to be a "Selection8" value. Optionally
5463 /// specify the `value` of the "Selection8". If `value` is not
5464 /// specified, the default "Selection8" value is used.
5467
5468 /// Set the value of this object to be a "Selection9" value. Optionally
5469 /// specify the `value` of the "Selection9". If `value` is not
5470 /// specified, the default "Selection9" value is used.
5473
5474 /// Set the value of this object to be a "Selection10" value.
5475 /// Optionally specify the `value` of the "Selection10". If `value` is
5476 /// not specified, the default "Selection10" value is used.
5479
5480 /// Set the value of this object to be a "Selection11" value.
5481 /// Optionally specify the `value` of the "Selection11". If `value` is
5482 /// not specified, the default "Selection11" value is used.
5485
5486 /// Invoke the specified `manipulator` on the address of the modifiable
5487 /// selection, supplying `manipulator` with the corresponding selection
5488 /// information structure. Return the value returned from the
5489 /// invocation of `manipulator` if this object has a defined selection,
5490 /// and -1 otherwise.
5491 template<class MANIPULATOR>
5492 int manipulateSelection(MANIPULATOR& manipulator);
5493
5494 /// Return a reference to the modifiable "Selection1" selection of this
5495 /// object if "Selection1" is the current selection.
5496 ///
5497 /// \pre The behavior is undefined unless "Selection1" is the selection of this object.
5499
5500 /// Return a reference to the modifiable "Selection2" selection of this
5501 /// object if "Selection2" is the current selection.
5502 ///
5503 /// \pre The behavior is undefined unless "Selection2" is the selection of this object.
5505
5506 /// Return a reference to the modifiable "Selection3" selection of this
5507 /// object if "Selection3" is the current selection.
5508 ///
5509 /// \pre The behavior is undefined unless "Selection3" is the selection of this object.
5511
5512 /// Return a reference to the modifiable "Selection4" selection of this
5513 /// object if "Selection4" is the current selection.
5514 ///
5515 /// \pre The behavior is undefined unless "Selection4" is the selection of this object.
5517
5518 /// Return a reference to the modifiable "Selection5" selection of this
5519 /// object if "Selection5" is the current selection.
5520 ///
5521 /// \pre The behavior is undefined unless "Selection5" is the selection of this object.
5523
5524 /// Return a reference to the modifiable "Selection6" selection of this
5525 /// object if "Selection6" is the current selection.
5526 ///
5527 /// \pre The behavior is undefined unless "Selection6" is the selection of this object.
5529
5530 /// Return a reference to the modifiable "Selection7" selection of this
5531 /// object if "Selection7" is the current selection.
5532 ///
5533 /// \pre The behavior is undefined unless "Selection7" is the selection of this object.
5535
5536 /// Return a reference to the modifiable "Selection8" selection of this
5537 /// object if "Selection8" is the current selection.
5538 ///
5539 /// \pre The behavior is undefined unless "Selection8" is the selection of this object.
5541
5542 /// Return a reference to the modifiable "Selection9" selection of this
5543 /// object if "Selection9" is the current selection.
5544 ///
5545 /// \pre The behavior is undefined unless "Selection9" is the selection of this object.
5547
5548 /// Return a reference to the modifiable "Selection10" selection of this
5549 /// object if "Selection10" is the current selection.
5550 ///
5551 /// \pre The behavior is undefined unless "Selection10" is the selection of this object.
5553
5554 /// Return a reference to the modifiable "Selection11" selection of this
5555 /// object if "Selection11" is the current selection.
5556 ///
5557 /// \pre The behavior is undefined unless "Selection11" is the selection of this object.
5559
5560 // ACCESSORS
5561
5562 /// Format this object to the specified output `stream` at the
5563 /// optionally specified indentation `level` and return a reference to
5564 /// the modifiable `stream`. If `level` is specified, optionally
5565 /// specify `spacesPerLevel`, the number of spaces per indentation level
5566 /// for this and all of its nested objects. Each line is indented by
5567 /// the absolute value of `level * spacesPerLevel`. If `level` is
5568 /// negative, suppress indentation of the first line. If
5569 /// `spacesPerLevel` is negative, suppress line breaks and format the
5570 /// entire output on one line. If `stream` is initially invalid, this operation has no effect.
5571 ///
5572 /// \note Note that a trailing newline is provided
5573 /// in multiline mode only.
5574 bsl::ostream& print(bsl::ostream& stream,
5575 int level = 0,
5576 int spacesPerLevel = 4) const;
5577
5578 /// Write the value of this object to the specified output `stream`
5579 /// using the specified `version` format and return a reference to the
5580 /// modifiable `stream`. If `version` is not supported, `stream` is unmodified.
5581 ///
5582 /// \note Note that `version` is not written to `stream`.
5583 /// See the `bslx` package-level documentation for more information
5584 /// on `bdex` streaming of value-semantic types and containers.
5585 template <class STREAM>
5586 STREAM& bdexStreamOut(STREAM& stream, int version) const;
5587
5588 /// Return the id of the current selection if the selection is defined,
5589 /// and -1 otherwise.
5590 int selectionId() const;
5591
5592 /// Invoke the specified `accessor` on the non-modifiable selection,
5593 /// supplying `accessor` with the corresponding selection information
5594 /// structure. Return the value returned from the invocation of
5595 /// `accessor` if this object has a defined selection, and -1 otherwise.
5596 template<class ACCESSOR>
5597 int accessSelection(ACCESSOR& accessor) const;
5598
5599 /// Return a reference to the non-modifiable "Selection1" selection of
5600 /// this object if "Selection1" is the current selection.
5601 ///
5602 /// \pre The behavior is undefined unless "Selection1" is the selection of this object.
5603 const Sequence1& selection1() const;
5604
5605 /// Return a reference to the non-modifiable "Selection2" selection of
5606 /// this object if "Selection2" is the current selection.
5607 ///
5608 /// \pre The behavior is undefined unless "Selection2" is the selection of this object.
5609 const bsl::vector<char>& selection2() const;
5610
5611 /// Return a reference to the non-modifiable "Selection3" selection of
5612 /// this object if "Selection3" is the current selection.
5613 ///
5614 /// \pre The behavior is undefined unless "Selection3" is the selection of this object.
5615 const Sequence2& selection3() const;
5616
5617 /// Return a reference to the non-modifiable "Selection4" selection of
5618 /// this object if "Selection4" is the current selection.
5619 ///
5620 /// \pre The behavior is undefined unless "Selection4" is the selection of this object.
5621 const Sequence3& selection4() const;
5622
5623 /// Return a reference to the non-modifiable "Selection5" selection of
5624 /// this object if "Selection5" is the current selection.
5625 ///
5626 /// \pre The behavior is undefined unless "Selection5" is the selection of this object.
5627 const bdlt::DatetimeTz& selection5() const;
5628
5629 /// Return a reference to the non-modifiable "Selection6" selection of
5630 /// this object if "Selection6" is the current selection.
5631 ///
5632 /// \pre The behavior is undefined unless "Selection6" is the selection of this object.
5633 const CustomString& selection6() const;
5634
5635 /// Return a reference to the non-modifiable "Selection7" selection of
5636 /// this object if "Selection7" is the current selection.
5637 ///
5638 /// \pre The behavior is undefined unless "Selection7" is the selection of this object.
5639 const Enumerated::Value& selection7() const;
5640
5641 /// Return a reference to the non-modifiable "Selection8" selection of
5642 /// this object if "Selection8" is the current selection.
5643 ///
5644 /// \pre The behavior is undefined unless "Selection8" is the selection of this object.
5645 const Choice3& selection8() const;
5646
5647 /// Return a reference to the non-modifiable "Selection9" selection of
5648 /// this object if "Selection9" is the current selection.
5649 ///
5650 /// \pre The behavior is undefined unless "Selection9" is the selection of this object.
5651 const VoidSequence& selection9() const;
5652
5653 /// Return a reference to the non-modifiable "Selection10" selection of
5654 /// this object if "Selection10" is the current selection.
5655 ///
5656 /// \pre The behavior is undefined unless "Selection10" is the selection of this object.
5657 const UnsignedSequence& selection10() const;
5658
5659 /// Return a reference to the non-modifiable "Selection11" selection of
5660 /// this object if "Selection11" is the current selection.
5661 ///
5662 /// \pre The behavior is undefined unless "Selection11" is the selection of this object.
5663 const SequenceWithAnonymity& selection11() const;
5664
5665 /// Return `true` if the value of this object is a "Selection1" value,
5666 /// and return `false` otherwise.
5667 bool isSelection1Value() const;
5668
5669 /// Return `true` if the value of this object is a "Selection2" value,
5670 /// and return `false` otherwise.
5671 bool isSelection2Value() const;
5672
5673 /// Return `true` if the value of this object is a "Selection3" value,
5674 /// and return `false` otherwise.
5675 bool isSelection3Value() const;
5676
5677 /// Return `true` if the value of this object is a "Selection4" value,
5678 /// and return `false` otherwise.
5679 bool isSelection4Value() const;
5680
5681 /// Return `true` if the value of this object is a "Selection5" value,
5682 /// and return `false` otherwise.
5683 bool isSelection5Value() const;
5684
5685 /// Return `true` if the value of this object is a "Selection6" value,
5686 /// and return `false` otherwise.
5687 bool isSelection6Value() const;
5688
5689 /// Return `true` if the value of this object is a "Selection7" value,
5690 /// and return `false` otherwise.
5691 bool isSelection7Value() const;
5692
5693 /// Return `true` if the value of this object is a "Selection8" value,
5694 /// and return `false` otherwise.
5695 bool isSelection8Value() const;
5696
5697 /// Return `true` if the value of this object is a "Selection9" value,
5698 /// and return `false` otherwise.
5699 bool isSelection9Value() const;
5700
5701 /// Return `true` if the value of this object is a "Selection10" value,
5702 /// and return `false` otherwise.
5703 bool isSelection10Value() const;
5704
5705 /// Return `true` if the value of this object is a "Selection11" value,
5706 /// and return `false` otherwise.
5707 bool isSelection11Value() const;
5708
5709 /// Return `true` if the value of this object is undefined, and `false`
5710 /// otherwise.
5711 bool isUndefinedValue() const;
5712
5713 /// Return the symbolic name of the current selection of this object.
5714 const char *selectionName() const;
5715};
5716
5717// FREE OPERATORS
5718
5719/// Return `true` if the specified `lhs` and `rhs` objects have the same
5720/// value, and `false` otherwise. Two `FeatureTestMessage` objects have the same
5721/// value if either the selections in both objects have the same ids and
5722/// the same values, or both selections are undefined.
5723inline
5725
5726/// Return `true` if the specified `lhs` and `rhs` objects do not have the
5727/// same values, as determined by `operator==`, and `false` otherwise.
5728inline
5730
5731/// Format the specified `rhs` to the specified output `stream` and
5732/// return a reference to the modifiable `stream`.
5733inline
5734bsl::ostream& operator<<(bsl::ostream& stream, const FeatureTestMessage& rhs);
5735
5736} // close package namespace
5737
5738// TRAITS
5739
5741
5742namespace balb {
5743
5744 // =============
5745 // class Request
5746 // =============
5747
5748class Request {
5749
5750 // INSTANCE DATA
5751 union {
5754 };
5755
5756 int d_selectionId;
5757 bslma::Allocator *d_allocator_p;
5758
5759 public:
5760 // TYPES
5761
5762 enum {
5767
5768 enum {
5769 NUM_SELECTIONS = 2
5771
5772 enum {
5776
5777 // CONSTANTS
5778 static const char CLASS_NAME[];
5779
5781
5782 // CLASS METHODS
5783
5784 /// Return the most current `bdex` streaming version number supported by
5785 /// this class. See the `bslx` package-level documentation for more
5786 /// information on `bdex` streaming of value-semantic types and
5787 /// containers.
5788 static int maxSupportedBdexVersion();
5789
5790 /// Return selection information for the selection indicated by the
5791 /// specified `id` if the selection exists, and 0 otherwise.
5793
5794 /// Return selection information for the selection indicated by the
5795 /// specified `name` of the specified `nameLength` if the selection
5796 /// exists, and 0 otherwise.
5798 const char *name,
5799 int nameLength);
5800
5801 // CREATORS
5802
5803 /// Create an object of type `Request` having the default value. Use
5804 /// the optionally specified `basicAllocator` to supply memory. If
5805 /// `basicAllocator` is 0, the currently installed default allocator is
5806 /// used.
5807 explicit Request(bslma::Allocator *basicAllocator = 0);
5808
5809 /// Create an object of type `Request` having the value of the specified
5810 /// `original` object. Use the optionally specified `basicAllocator` to
5811 /// supply memory. If `basicAllocator` is 0, the currently installed
5812 /// default allocator is used.
5813 Request(const Request& original,
5814 bslma::Allocator *basicAllocator = 0);
5815
5816 /// Destroy this object.
5817 ~Request();
5818
5819 // MANIPULATORS
5820
5821 /// Assign to this object the value of the specified `rhs` object.
5823
5824 /// Assign to this object the value read from the specified input
5825 /// `stream` using the specified `version` format and return a reference
5826 /// to the modifiable `stream`. If `stream` is initially invalid, this
5827 /// operation has no effect. If `stream` becomes invalid during this
5828 /// operation, this object is valid, but its value is undefined. If
5829 /// `version` is not supported, `stream` is marked invalid and this object is unaltered.
5830 ///
5831 /// \note Note that no version is read from `stream`.
5832 /// See the `bslx` package-level documentation for more information on
5833 /// `bdex` streaming of value-semantic types and containers.
5834 template <class STREAM>
5835 STREAM& bdexStreamIn(STREAM& stream, int version);
5836
5837 /// Reset this object to the default value (i.e., its value upon default
5838 /// construction).
5839 void reset();
5840
5841 /// Set the value of this object to be the default for the selection
5842 /// indicated by the specified `selectionId`. Return 0 on success, and
5843 /// non-zero value otherwise (i.e., the selection is not found).
5845
5846 /// Set the value of this object to be the default for the selection
5847 /// indicated by the specified `name` of the specified `nameLength`.
5848 /// Return 0 on success, and non-zero value otherwise (i.e., the
5849 /// selection is not found).
5850 int makeSelection(const char *name, int nameLength);
5851
5852 /// Set the value of this object to be a "SimpleRequest" value.
5853 /// Optionally specify the `value` of the "SimpleRequest". If `value`
5854 /// is not specified, the default "SimpleRequest" value is used.
5857
5858 /// Set the value of this object to be a "FeatureRequest" value.
5859 /// Optionally specify the `value` of the "FeatureRequest". If `value`
5860 /// is not specified, the default "FeatureRequest" value is used.
5863
5864 /// Invoke the specified `manipulator` on the address of the modifiable
5865 /// selection, supplying `manipulator` with the corresponding selection
5866 /// information structure. Return the value returned from the
5867 /// invocation of `manipulator` if this object has a defined selection,
5868 /// and -1 otherwise.
5869 template<class MANIPULATOR>
5870 int manipulateSelection(MANIPULATOR& manipulator);
5871
5872 /// Return a reference to the modifiable "SimpleRequest" selection of
5873 /// this object if "SimpleRequest" is the current selection.
5874 ///
5875 /// \pre The behavior is undefined unless "SimpleRequest" is the selection of
5876 /// this object.
5878
5879 /// Return a reference to the modifiable "FeatureRequest" selection of
5880 /// this object if "FeatureRequest" is the current selection.
5881 ///
5882 /// \pre The behavior is undefined unless "FeatureRequest" is the selection of
5883 /// this object.
5885
5886 // ACCESSORS
5887
5888 /// Format this object to the specified output `stream` at the
5889 /// optionally specified indentation `level` and return a reference to
5890 /// the modifiable `stream`. If `level` is specified, optionally
5891 /// specify `spacesPerLevel`, the number of spaces per indentation level
5892 /// for this and all of its nested objects. Each line is indented by
5893 /// the absolute value of `level * spacesPerLevel`. If `level` is
5894 /// negative, suppress indentation of the first line. If
5895 /// `spacesPerLevel` is negative, suppress line breaks and format the
5896 /// entire output on one line. If `stream` is initially invalid, this operation has no effect.
5897 ///
5898 /// \note Note that a trailing newline is provided
5899 /// in multiline mode only.
5900 bsl::ostream& print(bsl::ostream& stream,
5901 int level = 0,
5902 int spacesPerLevel = 4) const;
5903
5904 /// Write the value of this object to the specified output `stream`
5905 /// using the specified `version` format and return a reference to the
5906 /// modifiable `stream`. If `version` is not supported, `stream` is unmodified.
5907 ///
5908 /// \note Note that `version` is not written to `stream`.
5909 /// See the `bslx` package-level documentation for more information
5910 /// on `bdex` streaming of value-semantic types and containers.
5911 template <class STREAM>
5912 STREAM& bdexStreamOut(STREAM& stream, int version) const;
5913
5914 /// Return the id of the current selection if the selection is defined,
5915 /// and -1 otherwise.
5916 int selectionId() const;
5917
5918 /// Invoke the specified `accessor` on the non-modifiable selection,
5919 /// supplying `accessor` with the corresponding selection information
5920 /// structure. Return the value returned from the invocation of
5921 /// `accessor` if this object has a defined selection, and -1 otherwise.
5922 template<class ACCESSOR>
5923 int accessSelection(ACCESSOR& accessor) const;
5924
5925 /// Return a reference to the non-modifiable "SimpleRequest" selection
5926 /// of this object if "SimpleRequest" is the current selection.
5927 ///
5928 /// \pre The behavior is undefined unless "SimpleRequest" is the selection of
5929 /// this object.
5930 const SimpleRequest& simpleRequest() const;
5931
5932 /// Return a reference to the non-modifiable "FeatureRequest" selection
5933 /// of this object if "FeatureRequest" is the current selection.
5934 ///
5935 /// \pre The behavior is undefined unless "FeatureRequest" is the selection of
5936 /// this object.
5937 const FeatureTestMessage& featureRequest() const;
5938
5939 /// Return `true` if the value of this object is a "SimpleRequest"
5940 /// value, and return `false` otherwise.
5941 bool isSimpleRequestValue() const;
5942
5943 /// Return `true` if the value of this object is a "FeatureRequest"
5944 /// value, and return `false` otherwise.
5945 bool isFeatureRequestValue() const;
5946
5947 /// Return `true` if the value of this object is undefined, and `false`
5948 /// otherwise.
5949 bool isUndefinedValue() const;
5950
5951 /// Return the symbolic name of the current selection of this object.
5952 const char *selectionName() const;
5953};
5954
5955// FREE OPERATORS
5956
5957/// Return `true` if the specified `lhs` and `rhs` objects have the same
5958/// value, and `false` otherwise. Two `Request` objects have the same
5959/// value if either the selections in both objects have the same ids and
5960/// the same values, or both selections are undefined.
5961inline
5962bool operator==(const Request& lhs, const Request& rhs);
5963
5964/// Return `true` if the specified `lhs` and `rhs` objects do not have the
5965/// same values, as determined by `operator==`, and `false` otherwise.
5966inline
5967bool operator!=(const Request& lhs, const Request& rhs);
5968
5969/// Format the specified `rhs` to the specified output `stream` and
5970/// return a reference to the modifiable `stream`.
5971inline
5972bsl::ostream& operator<<(bsl::ostream& stream, const Request& rhs);
5973
5974} // close package namespace
5975
5976// TRAITS
5977
5979
5980namespace balb {
5981
5982 // ==============
5983 // class Response
5984 // ==============
5985
5987
5988 // INSTANCE DATA
5989 union {
5992 };
5993
5994 int d_selectionId;
5995 bslma::Allocator *d_allocator_p;
5996
5997 public:
5998 // TYPES
5999
6000 enum {
6005
6006 enum {
6007 NUM_SELECTIONS = 2
6009
6010 enum {
6014
6015 // CONSTANTS
6016 static const char CLASS_NAME[];
6017
6019
6020 // CLASS METHODS
6021
6022 /// Return the most current `bdex` streaming version number supported by
6023 /// this class. See the `bslx` package-level documentation for more
6024 /// information on `bdex` streaming of value-semantic types and
6025 /// containers.
6026 static int maxSupportedBdexVersion();
6027
6028 /// Return selection information for the selection indicated by the
6029 /// specified `id` if the selection exists, and 0 otherwise.
6031
6032 /// Return selection information for the selection indicated by the
6033 /// specified `name` of the specified `nameLength` if the selection
6034 /// exists, and 0 otherwise.
6036 const char *name,
6037 int nameLength);
6038
6039 // CREATORS
6040
6041 /// Create an object of type `Response` having the default value. Use
6042 /// the optionally specified `basicAllocator` to supply memory. If
6043 /// `basicAllocator` is 0, the currently installed default allocator is
6044 /// used.
6045 explicit Response(bslma::Allocator *basicAllocator = 0);
6046
6047 /// Create an object of type `Response` having the value of the
6048 /// specified `original` object. Use the optionally specified
6049 /// `basicAllocator` to supply memory. If `basicAllocator` is 0, the
6050 /// currently installed default allocator is used.
6051 Response(const Response& original,
6052 bslma::Allocator *basicAllocator = 0);
6053
6054 /// Destroy this object.
6055 ~Response();
6056
6057 // MANIPULATORS
6058
6059 /// Assign to this object the value of the specified `rhs` object.
6061
6062 /// Assign to this object the value read from the specified input
6063 /// `stream` using the specified `version` format and return a reference
6064 /// to the modifiable `stream`. If `stream` is initially invalid, this
6065 /// operation has no effect. If `stream` becomes invalid during this
6066 /// operation, this object is valid, but its value is undefined. If
6067 /// `version` is not supported, `stream` is marked invalid and this object is unaltered.
6068 ///
6069 /// \note Note that no version is read from `stream`.
6070 /// See the `bslx` package-level documentation for more information on
6071 /// `bdex` streaming of value-semantic types and containers.
6072 template <class STREAM>
6073 STREAM& bdexStreamIn(STREAM& stream, int version);
6074
6075 /// Reset this object to the default value (i.e., its value upon default
6076 /// construction).
6077 void reset();
6078
6079 /// Set the value of this object to be the default for the selection
6080 /// indicated by the specified `selectionId`. Return 0 on success, and
6081 /// non-zero value otherwise (i.e., the selection is not found).
6083
6084 /// Set the value of this object to be the default for the selection
6085 /// indicated by the specified `name` of the specified `nameLength`.
6086 /// Return 0 on success, and non-zero value otherwise (i.e., the
6087 /// selection is not found).
6088 int makeSelection(const char *name, int nameLength);
6089
6090 /// Set the value of this object to be a "ResponseData" value.
6091 /// Optionally specify the `value` of the "ResponseData". If `value` is
6092 /// not specified, the default "ResponseData" value is used.
6095
6096 /// Set the value of this object to be a "FeatureResponse" value.
6097 /// Optionally specify the `value` of the "FeatureResponse". If `value`
6098 /// is not specified, the default "FeatureResponse" value is used.
6101
6102 /// Invoke the specified `manipulator` on the address of the modifiable
6103 /// selection, supplying `manipulator` with the corresponding selection
6104 /// information structure. Return the value returned from the
6105 /// invocation of `manipulator` if this object has a defined selection,
6106 /// and -1 otherwise.
6107 template<class MANIPULATOR>
6108 int manipulateSelection(MANIPULATOR& manipulator);
6109
6110 /// Return a reference to the modifiable "ResponseData" selection of
6111 /// this object if "ResponseData" is the current selection.
6112 ///
6113 /// \pre The behavior is undefined unless "ResponseData" is the selection of this
6114 /// object.
6116
6117 /// Return a reference to the modifiable "FeatureResponse" selection of
6118 /// this object if "FeatureResponse" is the current selection.
6119 ///
6120 /// \pre The behavior is undefined unless "FeatureResponse" is the selection of
6121 /// this object.
6123
6124 // ACCESSORS
6125
6126 /// Format this object to the specified output `stream` at the
6127 /// optionally specified indentation `level` and return a reference to
6128 /// the modifiable `stream`. If `level` is specified, optionally
6129 /// specify `spacesPerLevel`, the number of spaces per indentation level
6130 /// for this and all of its nested objects. Each line is indented by
6131 /// the absolute value of `level * spacesPerLevel`. If `level` is
6132 /// negative, suppress indentation of the first line. If
6133 /// `spacesPerLevel` is negative, suppress line breaks and format the
6134 /// entire output on one line. If `stream` is initially invalid, this operation has no effect.
6135 ///
6136 /// \note Note that a trailing newline is provided
6137 /// in multiline mode only.
6138 bsl::ostream& print(bsl::ostream& stream,
6139 int level = 0,
6140 int spacesPerLevel = 4) const;
6141
6142 /// Write the value of this object to the specified output `stream`
6143 /// using the specified `version` format and return a reference to the
6144 /// modifiable `stream`. If `version` is not supported, `stream` is unmodified.
6145 ///
6146 /// \note Note that `version` is not written to `stream`.
6147 /// See the `bslx` package-level documentation for more information
6148 /// on `bdex` streaming of value-semantic types and containers.
6149 template <class STREAM>
6150 STREAM& bdexStreamOut(STREAM& stream, int version) const;
6151
6152 /// Return the id of the current selection if the selection is defined,
6153 /// and -1 otherwise.
6154 int selectionId() const;
6155
6156 /// Invoke the specified `accessor` on the non-modifiable selection,
6157 /// supplying `accessor` with the corresponding selection information
6158 /// structure. Return the value returned from the invocation of
6159 /// `accessor` if this object has a defined selection, and -1 otherwise.
6160 template<class ACCESSOR>
6161 int accessSelection(ACCESSOR& accessor) const;
6162
6163 /// Return a reference to the non-modifiable "ResponseData" selection of
6164 /// this object if "ResponseData" is the current selection.
6165 ///
6166 /// \pre The behavior is undefined unless "ResponseData" is the selection of this
6167 /// object.
6168 const bsl::string& responseData() const;
6169
6170 /// Return a reference to the non-modifiable "FeatureResponse" selection
6171 /// of this object if "FeatureResponse" is the current selection.
6172 ///
6173 /// \pre The behavior is undefined unless "FeatureResponse" is the selection of
6174 /// this object.
6175 const FeatureTestMessage& featureResponse() const;
6176
6177 /// Return `true` if the value of this object is a "ResponseData" value,
6178 /// and return `false` otherwise.
6179 bool isResponseDataValue() const;
6180
6181 /// Return `true` if the value of this object is a "FeatureResponse"
6182 /// value, and return `false` otherwise.
6183 bool isFeatureResponseValue() const;
6184
6185 /// Return `true` if the value of this object is undefined, and `false`
6186 /// otherwise.
6187 bool isUndefinedValue() const;
6188
6189 /// Return the symbolic name of the current selection of this object.
6190 const char *selectionName() const;
6191};
6192
6193// FREE OPERATORS
6194
6195/// Return `true` if the specified `lhs` and `rhs` objects have the same
6196/// value, and `false` otherwise. Two `Response` objects have the same
6197/// value if either the selections in both objects have the same ids and
6198/// the same values, or both selections are undefined.
6199inline
6200bool operator==(const Response& lhs, const Response& rhs);
6201
6202/// Return `true` if the specified `lhs` and `rhs` objects do not have the
6203/// same values, as determined by `operator==`, and `false` otherwise.
6204inline
6205bool operator!=(const Response& lhs, const Response& rhs);
6206
6207/// Format the specified `rhs` to the specified output `stream` and
6208/// return a reference to the modifiable `stream`.
6209inline
6210bsl::ostream& operator<<(bsl::ostream& stream, const Response& rhs);
6211
6212} // close package namespace
6213
6214// TRAITS
6215
6217
6218namespace balb {
6219
6220 // ==================
6221 // class Testmessages
6222 // ==================
6223
6224/// This class serves as a place holder to reserve a type having the same
6225/// name as this component. Doing so ensures that such a type cannot be
6226/// defined outside of this component in the current namespace.
6227///
6228/// See @ref balb_testmessages
6230};
6231
6232} // close package namespace
6233
6234// ============================================================================
6235// INLINE FUNCTION DEFINITIONS
6236// ============================================================================
6237
6238namespace balb {
6239
6240 // -------------
6241 // class Choice4
6242 // -------------
6243
6244// CLASS METHODS
6245inline
6247{
6248 return 1; // versions start at 1.
6249}
6250
6251// CREATORS
6252inline
6254: d_selectionId(SELECTION_ID_UNDEFINED)
6255, d_allocator_p(bslma::Default::allocator(basicAllocator))
6256{
6257}
6258
6259inline
6261{
6262 reset();
6263}
6264
6265// MANIPULATORS
6266template <class STREAM>
6267STREAM& Choice4::bdexStreamIn(STREAM& stream, int version)
6268{
6269 if (stream) {
6270 switch (version) {
6271 case 1: {
6272 short selectionId;
6273 stream.getInt16(selectionId);
6274 if (!stream) {
6275 return stream;
6276 }
6277 switch (selectionId) {
6281 stream, d_selection1.object(), 1);
6282 } break;
6286 stream, d_selection2.object(), 1);
6287 } break;
6289 reset();
6290 } break;
6291 default:
6292 stream.invalidate();
6293 }
6294 } break;
6295 default: {
6296 stream.invalidate();
6297 }
6298 }
6299 }
6300 return stream;
6301}
6302
6303template <class MANIPULATOR>
6304int Choice4::manipulateSelection(MANIPULATOR& manipulator)
6305{
6306 switch (d_selectionId) {
6308 return manipulator(&d_selection1.object(),
6311 return manipulator(&d_selection2.object(),
6313 default:
6315 return -1;
6316 }
6317}
6318
6319inline
6321{
6322 BSLS_ASSERT(SELECTION_ID_SELECTION1 == d_selectionId);
6323 return d_selection1.object();
6324}
6325
6326inline
6328{
6329 BSLS_ASSERT(SELECTION_ID_SELECTION2 == d_selectionId);
6330 return d_selection2.object();
6331}
6332
6333// ACCESSORS
6334template <class STREAM>
6335STREAM& Choice4::bdexStreamOut(STREAM& stream, int version) const
6336{
6337 switch (version) {
6338 case 1: {
6339 stream.putInt16(d_selectionId);
6340 switch (d_selectionId) {
6343 stream, d_selection1.object(), 1);
6344 } break;
6347 stream, d_selection2.object(), 1);
6348 } break;
6349 default:
6350 BSLS_ASSERT(SELECTION_ID_UNDEFINED == d_selectionId);
6351 }
6352 } break;
6353 }
6354 return stream;
6355}
6356
6357inline
6359{
6360 return d_selectionId;
6361}
6362
6363template <class ACCESSOR>
6364int Choice4::accessSelection(ACCESSOR& accessor) const
6365{
6366 switch (d_selectionId) {
6368 return accessor(d_selection1.object(),
6371 return accessor(d_selection2.object(),
6373 default:
6374 BSLS_ASSERT(SELECTION_ID_UNDEFINED == d_selectionId);
6375 return -1;
6376 }
6377}
6378
6379inline
6381{
6382 BSLS_ASSERT(SELECTION_ID_SELECTION1 == d_selectionId);
6383 return d_selection1.object();
6384}
6385
6386inline
6387const int& Choice4::selection2() const
6388{
6389 BSLS_ASSERT(SELECTION_ID_SELECTION2 == d_selectionId);
6390 return d_selection2.object();
6391}
6392
6393inline
6395{
6396 return SELECTION_ID_SELECTION1 == d_selectionId;
6397}
6398
6399inline
6401{
6402 return SELECTION_ID_SELECTION2 == d_selectionId;
6403}
6404
6405inline
6407{
6408 return SELECTION_ID_UNDEFINED == d_selectionId;
6409}
6410
6411
6412 // ---------------
6413 // class CustomInt
6414 // ---------------
6415
6416// CREATORS
6417inline
6419: d_value()
6420{
6421}
6422
6423inline
6425: d_value(original.d_value)
6426{
6427}
6428
6429inline
6430CustomInt::CustomInt(const int& value)
6431: d_value(value)
6432{
6433 BSLS_ASSERT(checkRestrictions(value) == 0);
6434}
6435
6436inline
6440
6441// MANIPULATORS
6442inline
6444{
6445 d_value = rhs.d_value;
6446 return *this;
6447}
6448
6449template <class STREAM>
6450STREAM& CustomInt::bdexStreamIn(STREAM& stream, int version)
6451{
6452 int temp;
6453
6454 bslx::InStreamFunctions::bdexStreamIn(stream, temp, version);
6455
6456 if (!stream) {
6457 return stream;
6458 }
6459
6460 if (fromInt(temp)!=0) {
6461 stream.invalidate();
6462 }
6463
6464 return stream;
6465}
6466
6467inline
6469{
6471}
6472
6473inline
6474int CustomInt::fromInt(const int& value)
6475{
6476 int ret = checkRestrictions(value);
6477 if (0 == ret) {
6478 d_value = value;
6479 }
6480
6481 return ret;
6482}
6483
6484// ACCESSORS
6485template <class STREAM>
6486STREAM& CustomInt::bdexStreamOut(STREAM& stream, int version) const
6487{
6488 return bslx::OutStreamFunctions::bdexStreamOut(stream, d_value, version);
6489}
6490
6491inline
6493{
6494 return bslx::VersionFunctions::maxSupportedBdexVersion(&d_value, 20171121);
6495}
6496
6497inline
6498bsl::ostream& CustomInt::print(bsl::ostream& stream,
6499 int level,
6500 int spacesPerLevel) const
6501{
6502 return bdlb::PrintMethods::print(stream, d_value, level, spacesPerLevel);
6503}
6504
6505inline
6506const int& CustomInt::toInt() const
6507{
6508 return d_value;
6509}
6510
6511
6512
6513 // ------------------
6514 // class CustomString
6515 // ------------------
6516
6517// CREATORS
6518inline
6520: d_value(basicAllocator)
6521{
6522}
6523
6524inline
6526: d_value(original.d_value, basicAllocator)
6527{
6528}
6529
6530inline
6532: d_value(value, basicAllocator)
6533{
6534 BSLS_ASSERT(checkRestrictions(value) == 0);
6535}
6536
6537inline
6541
6542// MANIPULATORS
6543inline
6545{
6546 d_value = rhs.d_value;
6547 return *this;
6548}
6549
6550template <class STREAM>
6551STREAM& CustomString::bdexStreamIn(STREAM& stream, int version)
6552{
6553 bsl::string temp;
6554
6555 bslx::InStreamFunctions::bdexStreamIn(stream, temp, version);
6556
6557 if (!stream) {
6558 return stream;
6559 }
6560
6561 if (fromString(temp)!=0) {
6562 stream.invalidate();
6563 }
6564
6565 return stream;
6566}
6567
6568inline
6570{
6572}
6573
6574inline
6576{
6577 int ret = checkRestrictions(value);
6578 if (0 == ret) {
6579 d_value = value;
6580 }
6581
6582 return ret;
6583}
6584
6585// ACCESSORS
6586template <class STREAM>
6587STREAM& CustomString::bdexStreamOut(STREAM& stream, int version) const
6588{
6589 return bslx::OutStreamFunctions::bdexStreamOut(stream, d_value, version);
6590}
6591
6592inline
6597
6598inline
6599bsl::ostream& CustomString::print(bsl::ostream& stream,
6600 int level,
6601 int spacesPerLevel) const
6602{
6603 return bdlb::PrintMethods::print(stream, d_value, level, spacesPerLevel);
6604}
6605
6606inline
6608{
6609 return d_value;
6610}
6611
6612
6613
6614 // ----------------
6615 // class Enumerated
6616 // ----------------
6617
6618// CLASS METHODS
6619inline
6621{
6622 return 1; // versions start at 1
6623}
6624
6625inline
6626int Enumerated::fromString(Value *result, const bsl::string& string)
6627{
6628 return fromString(result, string.c_str(), static_cast<int>(string.length()));
6629}
6630
6631inline
6632bsl::ostream& Enumerated::print(bsl::ostream& stream,
6633 Enumerated::Value value)
6634{
6635 return stream << toString(value);
6636}
6637
6638template <class STREAM>
6639STREAM& Enumerated::bdexStreamIn(STREAM& stream,
6640 Enumerated::Value& value,
6641 int version)
6642{
6643 switch(version) {
6644 case 1: {
6645 int readValue;
6646 stream.getInt32(readValue);
6647 if (stream) {
6648 if (fromInt(&value, readValue)) {
6649 stream.invalidate(); // bad value in stream
6650 }
6651 }
6652 } break;
6653 default: {
6654 stream.invalidate(); // unrecognized version number
6655 } break;
6656 }
6657 return stream;
6658}
6659
6660template <class STREAM>
6661STREAM& Enumerated::bdexStreamOut(STREAM& stream,
6662 Enumerated::Value value,
6663 int version)
6664{
6665 switch (version) {
6666 case 1: {
6667 stream.putInt32(value); // Write the value as an int
6668 } break;
6669 }
6670 return stream;
6671}
6672
6673
6674
6675 // ----------------------------------
6676 // class SequenceWithAnonymityChoice1
6677 // ----------------------------------
6678
6679// CLASS METHODS
6680inline
6682{
6683 return 1; // versions start at 1.
6684}
6685
6686// CREATORS
6687inline
6689: d_selectionId(SELECTION_ID_UNDEFINED)
6690, d_allocator_p(bslma::Default::allocator(basicAllocator))
6691{
6692}
6693
6694inline
6699
6700// MANIPULATORS
6701template <class STREAM>
6702STREAM& SequenceWithAnonymityChoice1::bdexStreamIn(STREAM& stream, int version)
6703{
6704 if (stream) {
6705 switch (version) {
6706 case 1: {
6707 short selectionId;
6708 stream.getInt16(selectionId);
6709 if (!stream) {
6710 return stream;
6711 }
6712 switch (selectionId) {
6716 stream, d_selection5.object(), 1);
6717 } break;
6721 stream, d_selection6.object(), 1);
6722 } break;
6724 reset();
6725 } break;
6726 default:
6727 stream.invalidate();
6728 }
6729 } break;
6730 default: {
6731 stream.invalidate();
6732 }
6733 }
6734 }
6735 return stream;
6736}
6737
6738template <class MANIPULATOR>
6740{
6741 switch (d_selectionId) {
6743 return manipulator(&d_selection5.object(),
6746 return manipulator(&d_selection6.object(),
6748 default:
6750 return -1;
6751 }
6752}
6753
6754inline
6760
6761inline
6767
6768// ACCESSORS
6769template <class STREAM>
6770STREAM& SequenceWithAnonymityChoice1::bdexStreamOut(STREAM& stream, int version) const
6771{
6772 switch (version) {
6773 case 1: {
6774 stream.putInt16(d_selectionId);
6775 switch (d_selectionId) {
6778 stream, d_selection5.object(), 1);
6779 } break;
6782 stream, d_selection6.object(), 1);
6783 } break;
6784 default:
6785 BSLS_ASSERT(SELECTION_ID_UNDEFINED == d_selectionId);
6786 }
6787 } break;
6788 }
6789 return stream;
6790}
6791
6792inline
6794{
6795 return d_selectionId;
6796}
6797
6798template <class ACCESSOR>
6800{
6801 switch (d_selectionId) {
6803 return accessor(d_selection5.object(),
6806 return accessor(d_selection6.object(),
6808 default:
6809 BSLS_ASSERT(SELECTION_ID_UNDEFINED == d_selectionId);
6810 return -1;
6811 }
6812}
6813
6814inline
6816{
6817 BSLS_ASSERT(SELECTION_ID_SELECTION5 == d_selectionId);
6818 return d_selection5.object();
6819}
6820
6821inline
6823{
6824 BSLS_ASSERT(SELECTION_ID_SELECTION6 == d_selectionId);
6825 return d_selection6.object();
6826}
6827
6828inline
6830{
6831 return SELECTION_ID_SELECTION5 == d_selectionId;
6832}
6833
6834inline
6836{
6837 return SELECTION_ID_SELECTION6 == d_selectionId;
6838}
6839
6840inline
6842{
6843 return SELECTION_ID_UNDEFINED == d_selectionId;
6844}
6845
6846
6847 // -------------------
6848 // class SimpleRequest
6849 // -------------------
6850
6851// CLASS METHODS
6852inline
6854{
6855 return 1; // versions start at 1.
6856}
6857
6858// MANIPULATORS
6859template <class STREAM>
6860STREAM& SimpleRequest::bdexStreamIn(STREAM& stream, int version)
6861{
6862 if (stream) {
6863 switch (version) {
6864 case 1: {
6865 bslx::InStreamFunctions::bdexStreamIn(stream, d_data, 1);
6866 bslx::InStreamFunctions::bdexStreamIn(stream, d_responseLength, 1);
6867 } break;
6868 default: {
6869 stream.invalidate();
6870 }
6871 }
6872 }
6873 return stream;
6874}
6875
6876template <class MANIPULATOR>
6877int SimpleRequest::manipulateAttributes(MANIPULATOR& manipulator)
6878{
6879 int ret;
6880
6881 ret = manipulator(&d_data, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_DATA]);
6882 if (ret) {
6883 return ret;
6884 }
6885
6886 ret = manipulator(&d_responseLength, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_RESPONSE_LENGTH]);
6887 if (ret) {
6888 return ret;
6889 }
6890
6891 return ret;
6892}
6893
6894template <class MANIPULATOR>
6895int SimpleRequest::manipulateAttribute(MANIPULATOR& manipulator, int id)
6896{
6897 enum { NOT_FOUND = -1 };
6898
6899 switch (id) {
6900 case ATTRIBUTE_ID_DATA: {
6901 return manipulator(&d_data, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_DATA]);
6902 } break;
6904 return manipulator(&d_responseLength, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_RESPONSE_LENGTH]);
6905 } break;
6906 default:
6907 return NOT_FOUND;
6908 }
6909}
6910
6911template <class MANIPULATOR>
6913 MANIPULATOR& manipulator,
6914 const char *name,
6915 int nameLength)
6916{
6917 enum { NOT_FOUND = -1 };
6918
6919 const bdlat_AttributeInfo *attributeInfo =
6920 lookupAttributeInfo(name, nameLength);
6921 if (0 == attributeInfo) {
6922 return NOT_FOUND;
6923 }
6924
6925 return manipulateAttribute(manipulator, attributeInfo->d_id);
6926}
6927
6928inline
6930{
6931 return d_data;
6932}
6933
6934inline
6936{
6937 return d_responseLength;
6938}
6939
6940// ACCESSORS
6941template <class STREAM>
6942STREAM& SimpleRequest::bdexStreamOut(STREAM& stream, int version) const
6943{
6944 switch (version) {
6945 case 1: {
6946 bslx::OutStreamFunctions::bdexStreamOut(stream, d_data, 1);
6947 bslx::OutStreamFunctions::bdexStreamOut(stream, d_responseLength, 1);
6948 } break;
6949 }
6950 return stream;
6951}
6952
6953template <class ACCESSOR>
6954int SimpleRequest::accessAttributes(ACCESSOR& accessor) const
6955{
6956 int ret;
6957
6958 ret = accessor(d_data, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_DATA]);
6959 if (ret) {
6960 return ret;
6961 }
6962
6963 ret = accessor(d_responseLength, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_RESPONSE_LENGTH]);
6964 if (ret) {
6965 return ret;
6966 }
6967
6968 return ret;
6969}
6970
6971template <class ACCESSOR>
6972int SimpleRequest::accessAttribute(ACCESSOR& accessor, int id) const
6973{
6974 enum { NOT_FOUND = -1 };
6975
6976 switch (id) {
6977 case ATTRIBUTE_ID_DATA: {
6978 return accessor(d_data, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_DATA]);
6979 } break;
6981 return accessor(d_responseLength, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_RESPONSE_LENGTH]);
6982 } break;
6983 default:
6984 return NOT_FOUND;
6985 }
6986}
6987
6988template <class ACCESSOR>
6990 ACCESSOR& accessor,
6991 const char *name,
6992 int nameLength) const
6993{
6994 enum { NOT_FOUND = -1 };
6995
6996 const bdlat_AttributeInfo *attributeInfo =
6997 lookupAttributeInfo(name, nameLength);
6998 if (0 == attributeInfo) {
6999 return NOT_FOUND;
7000 }
7001
7002 return accessAttribute(accessor, attributeInfo->d_id);
7003}
7004
7005inline
7007{
7008 return d_data;
7009}
7010
7011inline
7013{
7014 return d_responseLength;
7015}
7016
7017
7018
7019 // ----------------------
7020 // class UnsignedSequence
7021 // ----------------------
7022
7023// CLASS METHODS
7024inline
7026{
7027 return 1; // versions start at 1.
7028}
7029
7030// MANIPULATORS
7031template <class STREAM>
7032STREAM& UnsignedSequence::bdexStreamIn(STREAM& stream, int version)
7033{
7034 if (stream) {
7035 switch (version) {
7036 case 1: {
7037 bslx::InStreamFunctions::bdexStreamIn(stream, d_element1, 1);
7038 bslx::InStreamFunctions::bdexStreamIn(stream, d_element2, 1);
7039 bslx::InStreamFunctions::bdexStreamIn(stream, d_element3, 1);
7040 } break;
7041 default: {
7042 stream.invalidate();
7043 }
7044 }
7045 }
7046 return stream;
7047}
7048
7049template <class MANIPULATOR>
7050int UnsignedSequence::manipulateAttributes(MANIPULATOR& manipulator)
7051{
7052 int ret;
7053
7054 ret = manipulator(&d_element1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT1]);
7055 if (ret) {
7056 return ret;
7057 }
7058
7059 ret = manipulator(&d_element2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT2]);
7060 if (ret) {
7061 return ret;
7062 }
7063
7064 ret = manipulator(&d_element3, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT3]);
7065 if (ret) {
7066 return ret;
7067 }
7068
7069 return ret;
7070}
7071
7072template <class MANIPULATOR>
7073int UnsignedSequence::manipulateAttribute(MANIPULATOR& manipulator, int id)
7074{
7075 enum { NOT_FOUND = -1 };
7076
7077 switch (id) {
7078 case ATTRIBUTE_ID_ELEMENT1: {
7079 return manipulator(&d_element1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT1]);
7080 } break;
7081 case ATTRIBUTE_ID_ELEMENT2: {
7082 return manipulator(&d_element2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT2]);
7083 } break;
7084 case ATTRIBUTE_ID_ELEMENT3: {
7085 return manipulator(&d_element3, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT3]);
7086 } break;
7087 default:
7088 return NOT_FOUND;
7089 }
7090}
7091
7092template <class MANIPULATOR>
7094 MANIPULATOR& manipulator,
7095 const char *name,
7096 int nameLength)
7097{
7098 enum { NOT_FOUND = -1 };
7099
7100 const bdlat_AttributeInfo *attributeInfo =
7101 lookupAttributeInfo(name, nameLength);
7102 if (0 == attributeInfo) {
7103 return NOT_FOUND;
7104 }
7105
7106 return manipulateAttribute(manipulator, attributeInfo->d_id);
7107}
7108
7109inline
7111{
7112 return d_element1;
7113}
7114
7115inline
7117{
7118 return d_element2;
7119}
7120
7121inline
7123{
7124 return d_element3;
7125}
7126
7127// ACCESSORS
7128template <class STREAM>
7129STREAM& UnsignedSequence::bdexStreamOut(STREAM& stream, int version) const
7130{
7131 switch (version) {
7132 case 1: {
7133 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element1, 1);
7134 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element2, 1);
7135 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element3, 1);
7136 } break;
7137 }
7138 return stream;
7139}
7140
7141template <class ACCESSOR>
7142int UnsignedSequence::accessAttributes(ACCESSOR& accessor) const
7143{
7144 int ret;
7145
7146 ret = accessor(d_element1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT1]);
7147 if (ret) {
7148 return ret;
7149 }
7150
7151 ret = accessor(d_element2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT2]);
7152 if (ret) {
7153 return ret;
7154 }
7155
7156 ret = accessor(d_element3, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT3]);
7157 if (ret) {
7158 return ret;
7159 }
7160
7161 return ret;
7162}
7163
7164template <class ACCESSOR>
7165int UnsignedSequence::accessAttribute(ACCESSOR& accessor, int id) const
7166{
7167 enum { NOT_FOUND = -1 };
7168
7169 switch (id) {
7170 case ATTRIBUTE_ID_ELEMENT1: {
7171 return accessor(d_element1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT1]);
7172 } break;
7173 case ATTRIBUTE_ID_ELEMENT2: {
7174 return accessor(d_element2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT2]);
7175 } break;
7176 case ATTRIBUTE_ID_ELEMENT3: {
7177 return accessor(d_element3, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT3]);
7178 } break;
7179 default:
7180 return NOT_FOUND;
7181 }
7182}
7183
7184template <class ACCESSOR>
7186 ACCESSOR& accessor,
7187 const char *name,
7188 int nameLength) const
7189{
7190 enum { NOT_FOUND = -1 };
7191
7192 const bdlat_AttributeInfo *attributeInfo =
7193 lookupAttributeInfo(name, nameLength);
7194 if (0 == attributeInfo) {
7195 return NOT_FOUND;
7196 }
7197
7198 return accessAttribute(accessor, attributeInfo->d_id);
7199}
7200
7201inline
7202unsigned int UnsignedSequence::element1() const
7203{
7204 return d_element1;
7205}
7206
7207inline
7208unsigned short UnsignedSequence::element2() const
7209{
7210 return d_element2;
7211}
7212
7213inline
7215{
7216 return d_element3;
7217}
7218
7219
7220
7221 // ------------------
7222 // class VoidSequence
7223 // ------------------
7224
7225// CLASS METHODS
7226inline
7228{
7229 return 1; // versions start at 1.
7230}
7231
7232// MANIPULATORS
7233template <class STREAM>
7234STREAM& VoidSequence::bdexStreamIn(STREAM& stream, int version)
7235{
7236 if (stream) {
7237 switch (version) {
7238 case 1: {
7239 } break;
7240 default: {
7241 stream.invalidate();
7242 }
7243 }
7244 }
7245 return stream;
7246}
7247
7248template <class MANIPULATOR>
7249int VoidSequence::manipulateAttributes(MANIPULATOR& manipulator)
7250{
7251 (void)manipulator;
7252 int ret = 0;
7253
7254 return ret;
7255}
7256
7257template <class MANIPULATOR>
7258int VoidSequence::manipulateAttribute(MANIPULATOR& manipulator, int id)
7259{
7260 (void)manipulator;
7261 enum { NOT_FOUND = -1 };
7262
7263 switch (id) {
7264 default:
7265 return NOT_FOUND;
7266 }
7267}
7268
7269template <class MANIPULATOR>
7271 MANIPULATOR& manipulator,
7272 const char *name,
7273 int nameLength)
7274{
7275 enum { NOT_FOUND = -1 };
7276
7277 const bdlat_AttributeInfo *attributeInfo =
7278 lookupAttributeInfo(name, nameLength);
7279 if (0 == attributeInfo) {
7280 return NOT_FOUND;
7281 }
7282
7283 return manipulateAttribute(manipulator, attributeInfo->d_id);
7284}
7285
7286// ACCESSORS
7287template <class STREAM>
7288STREAM& VoidSequence::bdexStreamOut(STREAM& stream, int version) const
7289{
7290 switch (version) {
7291 case 1: {
7292 } break;
7293 }
7294 return stream;
7295}
7296
7297template <class ACCESSOR>
7298int VoidSequence::accessAttributes(ACCESSOR& accessor) const
7299{
7300 (void)accessor;
7301 int ret = 0;
7302
7303 return ret;
7304}
7305
7306template <class ACCESSOR>
7307int VoidSequence::accessAttribute(ACCESSOR& accessor, int id) const
7308{
7309 (void)accessor;
7310 enum { NOT_FOUND = -1 };
7311
7312 switch (id) {
7313 default:
7314 return NOT_FOUND;
7315 }
7316}
7317
7318template <class ACCESSOR>
7320 ACCESSOR& accessor,
7321 const char *name,
7322 int nameLength) const
7323{
7324 enum { NOT_FOUND = -1 };
7325
7326 const bdlat_AttributeInfo *attributeInfo =
7327 lookupAttributeInfo(name, nameLength);
7328 if (0 == attributeInfo) {
7329 return NOT_FOUND;
7330 }
7331
7332 return accessAttribute(accessor, attributeInfo->d_id);
7333}
7334
7335
7336
7337 // -------------
7338 // class Choice5
7339 // -------------
7340
7341// CLASS METHODS
7342inline
7344{
7345 return 1; // versions start at 1.
7346}
7347
7348// CREATORS
7349inline
7351: d_selectionId(SELECTION_ID_UNDEFINED)
7352, d_allocator_p(bslma::Default::allocator(basicAllocator))
7353{
7354}
7355
7356inline
7358{
7359 reset();
7360}
7361
7362// MANIPULATORS
7363template <class STREAM>
7364STREAM& Choice5::bdexStreamIn(STREAM& stream, int version)
7365{
7366 if (stream) {
7367 switch (version) {
7368 case 1: {
7369 short selectionId;
7370 stream.getInt16(selectionId);
7371 if (!stream) {
7372 return stream;
7373 }
7374 switch (selectionId) {
7378 stream, d_selection1.object(), 1);
7379 } break;
7383 stream, d_selection2.object(), 1);
7384 } break;
7386 reset();
7387 } break;
7388 default:
7389 stream.invalidate();
7390 }
7391 } break;
7392 default: {
7393 stream.invalidate();
7394 }
7395 }
7396 }
7397 return stream;
7398}
7399
7400template <class MANIPULATOR>
7401int Choice5::manipulateSelection(MANIPULATOR& manipulator)
7402{
7403 switch (d_selectionId) {
7405 return manipulator(&d_selection1.object(),
7408 return manipulator(&d_selection2.object(),
7410 default:
7412 return -1;
7413 }
7414}
7415
7416inline
7418{
7419 BSLS_ASSERT(SELECTION_ID_SELECTION1 == d_selectionId);
7420 return d_selection1.object();
7421}
7422
7423inline
7425{
7426 BSLS_ASSERT(SELECTION_ID_SELECTION2 == d_selectionId);
7427 return d_selection2.object();
7428}
7429
7430// ACCESSORS
7431template <class STREAM>
7432STREAM& Choice5::bdexStreamOut(STREAM& stream, int version) const
7433{
7434 switch (version) {
7435 case 1: {
7436 stream.putInt16(d_selectionId);
7437 switch (d_selectionId) {
7440 stream, d_selection1.object(), 1);
7441 } break;
7444 stream, d_selection2.object(), 1);
7445 } break;
7446 default:
7447 BSLS_ASSERT(SELECTION_ID_UNDEFINED == d_selectionId);
7448 }
7449 } break;
7450 }
7451 return stream;
7452}
7453
7454inline
7456{
7457 return d_selectionId;
7458}
7459
7460template <class ACCESSOR>
7461int Choice5::accessSelection(ACCESSOR& accessor) const
7462{
7463 switch (d_selectionId) {
7465 return accessor(d_selection1.object(),
7468 return accessor(d_selection2.object(),
7470 default:
7471 BSLS_ASSERT(SELECTION_ID_UNDEFINED == d_selectionId);
7472 return -1;
7473 }
7474}
7475
7476inline
7478{
7479 BSLS_ASSERT(SELECTION_ID_SELECTION1 == d_selectionId);
7480 return d_selection1.object();
7481}
7482
7483inline
7484const int& Choice5::selection2() const
7485{
7486 BSLS_ASSERT(SELECTION_ID_SELECTION2 == d_selectionId);
7487 return d_selection2.object();
7488}
7489
7490inline
7492{
7493 return SELECTION_ID_SELECTION1 == d_selectionId;
7494}
7495
7496inline
7498{
7499 return SELECTION_ID_SELECTION2 == d_selectionId;
7500}
7501
7502inline
7504{
7505 return SELECTION_ID_UNDEFINED == d_selectionId;
7506}
7507
7508
7509 // ---------------
7510 // class Sequence3
7511 // ---------------
7512
7513// CLASS METHODS
7514inline
7516{
7517 return 1; // versions start at 1.
7518}
7519
7520// MANIPULATORS
7521template <class STREAM>
7522STREAM& Sequence3::bdexStreamIn(STREAM& stream, int version)
7523{
7524 if (stream) {
7525 switch (version) {
7526 case 1: {
7527 bslx::InStreamFunctions::bdexStreamIn(stream, d_element1, 1);
7528 bslx::InStreamFunctions::bdexStreamIn(stream, d_element2, 1);
7529 bslx::InStreamFunctions::bdexStreamIn(stream, d_element3, 1);
7530 bslx::InStreamFunctions::bdexStreamIn(stream, d_element4, 1);
7531 bslx::InStreamFunctions::bdexStreamIn(stream, d_element5, 1);
7532 bslx::InStreamFunctions::bdexStreamIn(stream, d_element6, 1);
7533 } break;
7534 default: {
7535 stream.invalidate();
7536 }
7537 }
7538 }
7539 return stream;
7540}
7541
7542template <class MANIPULATOR>
7543int Sequence3::manipulateAttributes(MANIPULATOR& manipulator)
7544{
7545 int ret;
7546
7547 ret = manipulator(&d_element1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT1]);
7548 if (ret) {
7549 return ret;
7550 }
7551
7552 ret = manipulator(&d_element2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT2]);
7553 if (ret) {
7554 return ret;
7555 }
7556
7557 ret = manipulator(&d_element3, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT3]);
7558 if (ret) {
7559 return ret;
7560 }
7561
7562 ret = manipulator(&d_element4, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT4]);
7563 if (ret) {
7564 return ret;
7565 }
7566
7567 ret = manipulator(&d_element5, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT5]);
7568 if (ret) {
7569 return ret;
7570 }
7571
7572 ret = manipulator(&d_element6, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT6]);
7573 if (ret) {
7574 return ret;
7575 }
7576
7577 return ret;
7578}
7579
7580template <class MANIPULATOR>
7581int Sequence3::manipulateAttribute(MANIPULATOR& manipulator, int id)
7582{
7583 enum { NOT_FOUND = -1 };
7584
7585 switch (id) {
7586 case ATTRIBUTE_ID_ELEMENT1: {
7587 return manipulator(&d_element1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT1]);
7588 } break;
7589 case ATTRIBUTE_ID_ELEMENT2: {
7590 return manipulator(&d_element2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT2]);
7591 } break;
7592 case ATTRIBUTE_ID_ELEMENT3: {
7593 return manipulator(&d_element3, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT3]);
7594 } break;
7595 case ATTRIBUTE_ID_ELEMENT4: {
7596 return manipulator(&d_element4, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT4]);
7597 } break;
7598 case ATTRIBUTE_ID_ELEMENT5: {
7599 return manipulator(&d_element5, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT5]);
7600 } break;
7601 case ATTRIBUTE_ID_ELEMENT6: {
7602 return manipulator(&d_element6, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT6]);
7603 } break;
7604 default:
7605 return NOT_FOUND;
7606 }
7607}
7608
7609template <class MANIPULATOR>
7611 MANIPULATOR& manipulator,
7612 const char *name,
7613 int nameLength)
7614{
7615 enum { NOT_FOUND = -1 };
7616
7617 const bdlat_AttributeInfo *attributeInfo =
7618 lookupAttributeInfo(name, nameLength);
7619 if (0 == attributeInfo) {
7620 return NOT_FOUND;
7621 }
7622
7623 return manipulateAttribute(manipulator, attributeInfo->d_id);
7624}
7625
7626inline
7628{
7629 return d_element1;
7630}
7631
7632inline
7634{
7635 return d_element2;
7636}
7637
7638inline
7640{
7641 return d_element3;
7642}
7643
7644inline
7646{
7647 return d_element4;
7648}
7649
7650inline
7655
7656inline
7661
7662// ACCESSORS
7663template <class STREAM>
7664STREAM& Sequence3::bdexStreamOut(STREAM& stream, int version) const
7665{
7666 switch (version) {
7667 case 1: {
7668 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element1, 1);
7669 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element2, 1);
7670 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element3, 1);
7671 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element4, 1);
7672 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element5, 1);
7673 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element6, 1);
7674 } break;
7675 }
7676 return stream;
7677}
7678
7679template <class ACCESSOR>
7680int Sequence3::accessAttributes(ACCESSOR& accessor) const
7681{
7682 int ret;
7683
7684 ret = accessor(d_element1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT1]);
7685 if (ret) {
7686 return ret;
7687 }
7688
7689 ret = accessor(d_element2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT2]);
7690 if (ret) {
7691 return ret;
7692 }
7693
7694 ret = accessor(d_element3, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT3]);
7695 if (ret) {
7696 return ret;
7697 }
7698
7699 ret = accessor(d_element4, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT4]);
7700 if (ret) {
7701 return ret;
7702 }
7703
7704 ret = accessor(d_element5, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT5]);
7705 if (ret) {
7706 return ret;
7707 }
7708
7709 ret = accessor(d_element6, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT6]);
7710 if (ret) {
7711 return ret;
7712 }
7713
7714 return ret;
7715}
7716
7717template <class ACCESSOR>
7718int Sequence3::accessAttribute(ACCESSOR& accessor, int id) const
7719{
7720 enum { NOT_FOUND = -1 };
7721
7722 switch (id) {
7723 case ATTRIBUTE_ID_ELEMENT1: {
7724 return accessor(d_element1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT1]);
7725 } break;
7726 case ATTRIBUTE_ID_ELEMENT2: {
7727 return accessor(d_element2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT2]);
7728 } break;
7729 case ATTRIBUTE_ID_ELEMENT3: {
7730 return accessor(d_element3, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT3]);
7731 } break;
7732 case ATTRIBUTE_ID_ELEMENT4: {
7733 return accessor(d_element4, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT4]);
7734 } break;
7735 case ATTRIBUTE_ID_ELEMENT5: {
7736 return accessor(d_element5, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT5]);
7737 } break;
7738 case ATTRIBUTE_ID_ELEMENT6: {
7739 return accessor(d_element6, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT6]);
7740 } break;
7741 default:
7742 return NOT_FOUND;
7743 }
7744}
7745
7746template <class ACCESSOR>
7748 ACCESSOR& accessor,
7749 const char *name,
7750 int nameLength) const
7751{
7752 enum { NOT_FOUND = -1 };
7753
7754 const bdlat_AttributeInfo *attributeInfo =
7755 lookupAttributeInfo(name, nameLength);
7756 if (0 == attributeInfo) {
7757 return NOT_FOUND;
7758 }
7759
7760 return accessAttribute(accessor, attributeInfo->d_id);
7761}
7762
7763inline
7765{
7766 return d_element1;
7767}
7768
7769inline
7771{
7772 return d_element2;
7773}
7774
7775inline
7777{
7778 return d_element3;
7779}
7780
7781inline
7783{
7784 return d_element4;
7785}
7786
7787inline
7789{
7790 return d_element5;
7791}
7792
7793inline
7795{
7796 return d_element6;
7797}
7798
7799
7800
7801 // ---------------
7802 // class Sequence5
7803 // ---------------
7804
7805// CLASS METHODS
7806inline
7808{
7809 return 1; // versions start at 1.
7810}
7811
7812// MANIPULATORS
7813template <class STREAM>
7814STREAM& Sequence5::bdexStreamIn(STREAM& stream, int version)
7815{
7816 if (stream) {
7817 switch (version) {
7818 case 1: {
7819 bslx::InStreamFunctions::bdexStreamIn(stream, *d_element1, 1);
7820 bslx::InStreamFunctions::bdexStreamIn(stream, d_element2, 1);
7821 bslx::InStreamFunctions::bdexStreamIn(stream, d_element3, 1);
7822 bslx::InStreamFunctions::bdexStreamIn(stream, d_element4, 1);
7823 bslx::InStreamFunctions::bdexStreamIn(stream, d_element5, 1);
7824 bslx::InStreamFunctions::bdexStreamIn(stream, d_element6, 1);
7825 bslx::InStreamFunctions::bdexStreamIn(stream, d_element7, 1);
7826 } break;
7827 default: {
7828 stream.invalidate();
7829 }
7830 }
7831 }
7832 return stream;
7833}
7834
7835template <class MANIPULATOR>
7836int Sequence5::manipulateAttributes(MANIPULATOR& manipulator)
7837{
7838 int ret;
7839
7840 ret = manipulator(d_element1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT1]);
7841 if (ret) {
7842 return ret;
7843 }
7844
7845 ret = manipulator(&d_element2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT2]);
7846 if (ret) {
7847 return ret;
7848 }
7849
7850 ret = manipulator(&d_element3, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT3]);
7851 if (ret) {
7852 return ret;
7853 }
7854
7855 ret = manipulator(&d_element4, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT4]);
7856 if (ret) {
7857 return ret;
7858 }
7859
7860 ret = manipulator(&d_element5, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT5]);
7861 if (ret) {
7862 return ret;
7863 }
7864
7865 ret = manipulator(&d_element6, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT6]);
7866 if (ret) {
7867 return ret;
7868 }
7869
7870 ret = manipulator(&d_element7, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT7]);
7871 if (ret) {
7872 return ret;
7873 }
7874
7875 return ret;
7876}
7877
7878template <class MANIPULATOR>
7879int Sequence5::manipulateAttribute(MANIPULATOR& manipulator, int id)
7880{
7881 enum { NOT_FOUND = -1 };
7882
7883 switch (id) {
7884 case ATTRIBUTE_ID_ELEMENT1: {
7885 return manipulator(d_element1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT1]);
7886 } break;
7887 case ATTRIBUTE_ID_ELEMENT2: {
7888 return manipulator(&d_element2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT2]);
7889 } break;
7890 case ATTRIBUTE_ID_ELEMENT3: {
7891 return manipulator(&d_element3, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT3]);
7892 } break;
7893 case ATTRIBUTE_ID_ELEMENT4: {
7894 return manipulator(&d_element4, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT4]);
7895 } break;
7896 case ATTRIBUTE_ID_ELEMENT5: {
7897 return manipulator(&d_element5, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT5]);
7898 } break;
7899 case ATTRIBUTE_ID_ELEMENT6: {
7900 return manipulator(&d_element6, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT6]);
7901 } break;
7902 case ATTRIBUTE_ID_ELEMENT7: {
7903 return manipulator(&d_element7, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT7]);
7904 } break;
7905 default:
7906 return NOT_FOUND;
7907 }
7908}
7909
7910template <class MANIPULATOR>
7912 MANIPULATOR& manipulator,
7913 const char *name,
7914 int nameLength)
7915{
7916 enum { NOT_FOUND = -1 };
7917
7918 const bdlat_AttributeInfo *attributeInfo =
7919 lookupAttributeInfo(name, nameLength);
7920 if (0 == attributeInfo) {
7921 return NOT_FOUND;
7922 }
7923
7924 return manipulateAttribute(manipulator, attributeInfo->d_id);
7925}
7926
7927inline
7929{
7930 return *d_element1;
7931}
7932
7933inline
7935{
7936 return d_element2;
7937}
7938
7939inline
7941{
7942 return d_element3;
7943}
7944
7945inline
7950
7951inline
7953{
7954 return d_element5;
7955}
7956
7957inline
7962
7963inline
7968
7969// ACCESSORS
7970template <class STREAM>
7971STREAM& Sequence5::bdexStreamOut(STREAM& stream, int version) const
7972{
7973 switch (version) {
7974 case 1: {
7975 bslx::OutStreamFunctions::bdexStreamOut(stream, *d_element1, 1);
7976 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element2, 1);
7977 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element3, 1);
7978 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element4, 1);
7979 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element5, 1);
7980 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element6, 1);
7981 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element7, 1);
7982 } break;
7983 }
7984 return stream;
7985}
7986
7987template <class ACCESSOR>
7988int Sequence5::accessAttributes(ACCESSOR& accessor) const
7989{
7990 int ret;
7991
7992 ret = accessor(*d_element1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT1]);
7993 if (ret) {
7994 return ret;
7995 }
7996
7997 ret = accessor(d_element2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT2]);
7998 if (ret) {
7999 return ret;
8000 }
8001
8002 ret = accessor(d_element3, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT3]);
8003 if (ret) {
8004 return ret;
8005 }
8006
8007 ret = accessor(d_element4, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT4]);
8008 if (ret) {
8009 return ret;
8010 }
8011
8012 ret = accessor(d_element5, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT5]);
8013 if (ret) {
8014 return ret;
8015 }
8016
8017 ret = accessor(d_element6, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT6]);
8018 if (ret) {
8019 return ret;
8020 }
8021
8022 ret = accessor(d_element7, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT7]);
8023 if (ret) {
8024 return ret;
8025 }
8026
8027 return ret;
8028}
8029
8030template <class ACCESSOR>
8031int Sequence5::accessAttribute(ACCESSOR& accessor, int id) const
8032{
8033 enum { NOT_FOUND = -1 };
8034
8035 switch (id) {
8036 case ATTRIBUTE_ID_ELEMENT1: {
8037 return accessor(*d_element1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT1]);
8038 } break;
8039 case ATTRIBUTE_ID_ELEMENT2: {
8040 return accessor(d_element2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT2]);
8041 } break;
8042 case ATTRIBUTE_ID_ELEMENT3: {
8043 return accessor(d_element3, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT3]);
8044 } break;
8045 case ATTRIBUTE_ID_ELEMENT4: {
8046 return accessor(d_element4, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT4]);
8047 } break;
8048 case ATTRIBUTE_ID_ELEMENT5: {
8049 return accessor(d_element5, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT5]);
8050 } break;
8051 case ATTRIBUTE_ID_ELEMENT6: {
8052 return accessor(d_element6, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT6]);
8053 } break;
8054 case ATTRIBUTE_ID_ELEMENT7: {
8055 return accessor(d_element7, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT7]);
8056 } break;
8057 default:
8058 return NOT_FOUND;
8059 }
8060}
8061
8062template <class ACCESSOR>
8064 ACCESSOR& accessor,
8065 const char *name,
8066 int nameLength) const
8067{
8068 enum { NOT_FOUND = -1 };
8069
8070 const bdlat_AttributeInfo *attributeInfo =
8071 lookupAttributeInfo(name, nameLength);
8072 if (0 == attributeInfo) {
8073 return NOT_FOUND;
8074 }
8075
8076 return accessAttribute(accessor, attributeInfo->d_id);
8077}
8078
8079inline
8081{
8082 return *d_element1;
8083}
8084
8085inline
8087{
8088 return d_element2;
8089}
8090
8091inline
8093{
8094 return d_element3;
8095}
8096
8097inline
8099{
8100 return d_element4;
8101}
8102
8103inline
8105{
8106 return d_element5;
8107}
8108
8109inline
8111{
8112 return d_element6;
8113}
8114
8115inline
8117{
8118 return d_element7;
8119}
8120
8121
8122
8123 // ---------------
8124 // class Sequence6
8125 // ---------------
8126
8127// CLASS METHODS
8128inline
8130{
8131 return 1; // versions start at 1.
8132}
8133
8134// MANIPULATORS
8135template <class STREAM>
8136STREAM& Sequence6::bdexStreamIn(STREAM& stream, int version)
8137{
8138 if (stream) {
8139 switch (version) {
8140 case 1: {
8141 bslx::InStreamFunctions::bdexStreamIn(stream, d_element1, 1);
8142 bslx::InStreamFunctions::bdexStreamIn(stream, d_element2, 1);
8143 bslx::InStreamFunctions::bdexStreamIn(stream, d_element3, 1);
8144 bslx::InStreamFunctions::bdexStreamIn(stream, d_element4, 1);
8145 bslx::InStreamFunctions::bdexStreamIn(stream, d_element5, 1);
8146 bslx::InStreamFunctions::bdexStreamIn(stream, d_element6, 1);
8147 bslx::InStreamFunctions::bdexStreamIn(stream, d_element7, 1);
8148 bslx::InStreamFunctions::bdexStreamIn(stream, d_element8, 1);
8149 bslx::InStreamFunctions::bdexStreamIn(stream, d_element9, 1);
8150 bslx::InStreamFunctions::bdexStreamIn(stream, d_element10, 1);
8151 bslx::InStreamFunctions::bdexStreamIn(stream, d_element11, 1);
8152 bslx::InStreamFunctions::bdexStreamIn(stream, d_element12, 1);
8153 bslx::InStreamFunctions::bdexStreamIn(stream, d_element13, 1);
8154 bslx::InStreamFunctions::bdexStreamIn(stream, d_element14, 1);
8155 bslx::InStreamFunctions::bdexStreamIn(stream, d_element15, 1);
8156 } break;
8157 default: {
8158 stream.invalidate();
8159 }
8160 }
8161 }
8162 return stream;
8163}
8164
8165template <class MANIPULATOR>
8166int Sequence6::manipulateAttributes(MANIPULATOR& manipulator)
8167{
8168 int ret;
8169
8170 ret = manipulator(&d_element1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT1]);
8171 if (ret) {
8172 return ret;
8173 }
8174
8175 ret = manipulator(&d_element2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT2]);
8176 if (ret) {
8177 return ret;
8178 }
8179
8180 ret = manipulator(&d_element3, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT3]);
8181 if (ret) {
8182 return ret;
8183 }
8184
8185 ret = manipulator(&d_element4, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT4]);
8186 if (ret) {
8187 return ret;
8188 }
8189
8190 ret = manipulator(&d_element5, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT5]);
8191 if (ret) {
8192 return ret;
8193 }
8194
8195 ret = manipulator(&d_element6, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT6]);
8196 if (ret) {
8197 return ret;
8198 }
8199
8200 ret = manipulator(&d_element7, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT7]);
8201 if (ret) {
8202 return ret;
8203 }
8204
8205 ret = manipulator(&d_element8, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT8]);
8206 if (ret) {
8207 return ret;
8208 }
8209
8210 ret = manipulator(&d_element9, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT9]);
8211 if (ret) {
8212 return ret;
8213 }
8214
8215 ret = manipulator(&d_element10, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT10]);
8216 if (ret) {
8217 return ret;
8218 }
8219
8220 ret = manipulator(&d_element11, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT11]);
8221 if (ret) {
8222 return ret;
8223 }
8224
8225 ret = manipulator(&d_element12, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT12]);
8226 if (ret) {
8227 return ret;
8228 }
8229
8230 ret = manipulator(&d_element13, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT13]);
8231 if (ret) {
8232 return ret;
8233 }
8234
8235 ret = manipulator(&d_element14, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT14]);
8236 if (ret) {
8237 return ret;
8238 }
8239
8240 ret = manipulator(&d_element15, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT15]);
8241 if (ret) {
8242 return ret;
8243 }
8244
8245 return ret;
8246}
8247
8248template <class MANIPULATOR>
8249int Sequence6::manipulateAttribute(MANIPULATOR& manipulator, int id)
8250{
8251 enum { NOT_FOUND = -1 };
8252
8253 switch (id) {
8254 case ATTRIBUTE_ID_ELEMENT1: {
8255 return manipulator(&d_element1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT1]);
8256 } break;
8257 case ATTRIBUTE_ID_ELEMENT2: {
8258 return manipulator(&d_element2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT2]);
8259 } break;
8260 case ATTRIBUTE_ID_ELEMENT3: {
8261 return manipulator(&d_element3, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT3]);
8262 } break;
8263 case ATTRIBUTE_ID_ELEMENT4: {
8264 return manipulator(&d_element4, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT4]);
8265 } break;
8266 case ATTRIBUTE_ID_ELEMENT5: {
8267 return manipulator(&d_element5, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT5]);
8268 } break;
8269 case ATTRIBUTE_ID_ELEMENT6: {
8270 return manipulator(&d_element6, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT6]);
8271 } break;
8272 case ATTRIBUTE_ID_ELEMENT7: {
8273 return manipulator(&d_element7, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT7]);
8274 } break;
8275 case ATTRIBUTE_ID_ELEMENT8: {
8276 return manipulator(&d_element8, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT8]);
8277 } break;
8278 case ATTRIBUTE_ID_ELEMENT9: {
8279 return manipulator(&d_element9, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT9]);
8280 } break;
8282 return manipulator(&d_element10, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT10]);
8283 } break;
8285 return manipulator(&d_element11, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT11]);
8286 } break;
8288 return manipulator(&d_element12, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT12]);
8289 } break;
8291 return manipulator(&d_element13, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT13]);
8292 } break;
8294 return manipulator(&d_element14, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT14]);
8295 } break;
8297 return manipulator(&d_element15, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT15]);
8298 } break;
8299 default:
8300 return NOT_FOUND;
8301 }
8302}
8303
8304template <class MANIPULATOR>
8306 MANIPULATOR& manipulator,
8307 const char *name,
8308 int nameLength)
8309{
8310 enum { NOT_FOUND = -1 };
8311
8312 const bdlat_AttributeInfo *attributeInfo =
8313 lookupAttributeInfo(name, nameLength);
8314 if (0 == attributeInfo) {
8315 return NOT_FOUND;
8316 }
8317
8318 return manipulateAttribute(manipulator, attributeInfo->d_id);
8319}
8320
8321inline
8323{
8324 return d_element1;
8325}
8326
8327inline
8329{
8330 return d_element2;
8331}
8332
8333inline
8335{
8336 return d_element3;
8337}
8338
8339inline
8340unsigned int& Sequence6::element4()
8341{
8342 return d_element4;
8343}
8344
8345inline
8346unsigned char& Sequence6::element5()
8347{
8348 return d_element5;
8349}
8350
8351inline
8356
8357inline
8359{
8360 return d_element7;
8361}
8362
8363inline
8365{
8366 return d_element8;
8367}
8368
8369inline
8371{
8372 return d_element9;
8373}
8374
8375inline
8377{
8378 return d_element10;
8379}
8380
8381inline
8383{
8384 return d_element11;
8385}
8386
8387inline
8389{
8390 return d_element12;
8391}
8392
8393inline
8398
8399inline
8401{
8402 return d_element14;
8403}
8404
8405inline
8410
8411// ACCESSORS
8412template <class STREAM>
8413STREAM& Sequence6::bdexStreamOut(STREAM& stream, int version) const
8414{
8415 switch (version) {
8416 case 1: {
8417 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element1, 1);
8418 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element2, 1);
8419 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element3, 1);
8420 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element4, 1);
8421 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element5, 1);
8422 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element6, 1);
8423 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element7, 1);
8424 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element8, 1);
8425 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element9, 1);
8426 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element10, 1);
8427 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element11, 1);
8428 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element12, 1);
8429 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element13, 1);
8430 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element14, 1);
8431 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element15, 1);
8432 } break;
8433 }
8434 return stream;
8435}
8436
8437template <class ACCESSOR>
8438int Sequence6::accessAttributes(ACCESSOR& accessor) const
8439{
8440 int ret;
8441
8442 ret = accessor(d_element1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT1]);
8443 if (ret) {
8444 return ret;
8445 }
8446
8447 ret = accessor(d_element2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT2]);
8448 if (ret) {
8449 return ret;
8450 }
8451
8452 ret = accessor(d_element3, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT3]);
8453 if (ret) {
8454 return ret;
8455 }
8456
8457 ret = accessor(d_element4, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT4]);
8458 if (ret) {
8459 return ret;
8460 }
8461
8462 ret = accessor(d_element5, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT5]);
8463 if (ret) {
8464 return ret;
8465 }
8466
8467 ret = accessor(d_element6, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT6]);
8468 if (ret) {
8469 return ret;
8470 }
8471
8472 ret = accessor(d_element7, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT7]);
8473 if (ret) {
8474 return ret;
8475 }
8476
8477 ret = accessor(d_element8, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT8]);
8478 if (ret) {
8479 return ret;
8480 }
8481
8482 ret = accessor(d_element9, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT9]);
8483 if (ret) {
8484 return ret;
8485 }
8486
8487 ret = accessor(d_element10, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT10]);
8488 if (ret) {
8489 return ret;
8490 }
8491
8492 ret = accessor(d_element11, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT11]);
8493 if (ret) {
8494 return ret;
8495 }
8496
8497 ret = accessor(d_element12, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT12]);
8498 if (ret) {
8499 return ret;
8500 }
8501
8502 ret = accessor(d_element13, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT13]);
8503 if (ret) {
8504 return ret;
8505 }
8506
8507 ret = accessor(d_element14, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT14]);
8508 if (ret) {
8509 return ret;
8510 }
8511
8512 ret = accessor(d_element15, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT15]);
8513 if (ret) {
8514 return ret;
8515 }
8516
8517 return ret;
8518}
8519
8520template <class ACCESSOR>
8521int Sequence6::accessAttribute(ACCESSOR& accessor, int id) const
8522{
8523 enum { NOT_FOUND = -1 };
8524
8525 switch (id) {
8526 case ATTRIBUTE_ID_ELEMENT1: {
8527 return accessor(d_element1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT1]);
8528 } break;
8529 case ATTRIBUTE_ID_ELEMENT2: {
8530 return accessor(d_element2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT2]);
8531 } break;
8532 case ATTRIBUTE_ID_ELEMENT3: {
8533 return accessor(d_element3, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT3]);
8534 } break;
8535 case ATTRIBUTE_ID_ELEMENT4: {
8536 return accessor(d_element4, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT4]);
8537 } break;
8538 case ATTRIBUTE_ID_ELEMENT5: {
8539 return accessor(d_element5, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT5]);
8540 } break;
8541 case ATTRIBUTE_ID_ELEMENT6: {
8542 return accessor(d_element6, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT6]);
8543 } break;
8544 case ATTRIBUTE_ID_ELEMENT7: {
8545 return accessor(d_element7, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT7]);
8546 } break;
8547 case ATTRIBUTE_ID_ELEMENT8: {
8548 return accessor(d_element8, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT8]);
8549 } break;
8550 case ATTRIBUTE_ID_ELEMENT9: {
8551 return accessor(d_element9, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT9]);
8552 } break;
8554 return accessor(d_element10, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT10]);
8555 } break;
8557 return accessor(d_element11, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT11]);
8558 } break;
8560 return accessor(d_element12, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT12]);
8561 } break;
8563 return accessor(d_element13, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT13]);
8564 } break;
8566 return accessor(d_element14, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT14]);
8567 } break;
8569 return accessor(d_element15, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT15]);
8570 } break;
8571 default:
8572 return NOT_FOUND;
8573 }
8574}
8575
8576template <class ACCESSOR>
8578 ACCESSOR& accessor,
8579 const char *name,
8580 int nameLength) const
8581{
8582 enum { NOT_FOUND = -1 };
8583
8584 const bdlat_AttributeInfo *attributeInfo =
8585 lookupAttributeInfo(name, nameLength);
8586 if (0 == attributeInfo) {
8587 return NOT_FOUND;
8588 }
8589
8590 return accessAttribute(accessor, attributeInfo->d_id);
8591}
8592
8593inline
8595{
8596 return d_element1;
8597}
8598
8599inline
8601{
8602 return d_element2;
8603}
8604
8605inline
8607{
8608 return d_element3;
8609}
8610
8611inline
8612unsigned int Sequence6::element4() const
8613{
8614 return d_element4;
8615}
8616
8617inline
8618unsigned char Sequence6::element5() const
8619{
8620 return d_element5;
8621}
8622
8623inline
8625{
8626 return d_element6;
8627}
8628
8629inline
8631{
8632 return d_element7;
8633}
8634
8635inline
8637{
8638 return d_element8;
8639}
8640
8641inline
8643{
8644 return d_element9;
8645}
8646
8647inline
8649{
8650 return d_element10;
8651}
8652
8653inline
8655{
8656 return d_element11;
8657}
8658
8659inline
8661{
8662 return d_element12;
8663}
8664
8665inline
8667{
8668 return d_element13;
8669}
8670
8671inline
8673{
8674 return d_element14;
8675}
8676
8677inline
8679{
8680 return d_element15;
8681}
8682
8683
8684
8685 // -------------
8686 // class Choice3
8687 // -------------
8688
8689// CLASS METHODS
8690inline
8692{
8693 return 1; // versions start at 1.
8694}
8695
8696// CREATORS
8697inline
8699: d_selectionId(SELECTION_ID_UNDEFINED)
8700, d_allocator_p(bslma::Default::allocator(basicAllocator))
8701{
8702}
8703
8704inline
8706{
8707 reset();
8708}
8709
8710// MANIPULATORS
8711template <class STREAM>
8712STREAM& Choice3::bdexStreamIn(STREAM& stream, int version)
8713{
8714 if (stream) {
8715 switch (version) {
8716 case 1: {
8717 short selectionId;
8718 stream.getInt16(selectionId);
8719 if (!stream) {
8720 return stream;
8721 }
8722 switch (selectionId) {
8726 stream, d_selection1.object(), 1);
8727 } break;
8731 stream, d_selection2.object(), 1);
8732 } break;
8736 stream, d_selection3.object(), 1);
8737 } break;
8741 stream, d_selection4.object(), 1);
8742 } break;
8744 reset();
8745 } break;
8746 default:
8747 stream.invalidate();
8748 }
8749 } break;
8750 default: {
8751 stream.invalidate();
8752 }
8753 }
8754 }
8755 return stream;
8756}
8757
8758template <class MANIPULATOR>
8759int Choice3::manipulateSelection(MANIPULATOR& manipulator)
8760{
8761 switch (d_selectionId) {
8763 return manipulator(&d_selection1.object(),
8766 return manipulator(&d_selection2.object(),
8769 return manipulator(&d_selection3.object(),
8772 return manipulator(&d_selection4.object(),
8774 default:
8776 return -1;
8777 }
8778}
8779
8780inline
8782{
8783 BSLS_ASSERT(SELECTION_ID_SELECTION1 == d_selectionId);
8784 return d_selection1.object();
8785}
8786
8787inline
8788unsigned char& Choice3::selection2()
8789{
8790 BSLS_ASSERT(SELECTION_ID_SELECTION2 == d_selectionId);
8791 return d_selection2.object();
8792}
8793
8794inline
8796{
8797 BSLS_ASSERT(SELECTION_ID_SELECTION3 == d_selectionId);
8798 return d_selection3.object();
8799}
8800
8801inline
8803{
8804 BSLS_ASSERT(SELECTION_ID_SELECTION4 == d_selectionId);
8805 return d_selection4.object();
8806}
8807
8808// ACCESSORS
8809template <class STREAM>
8810STREAM& Choice3::bdexStreamOut(STREAM& stream, int version) const
8811{
8812 switch (version) {
8813 case 1: {
8814 stream.putInt16(d_selectionId);
8815 switch (d_selectionId) {
8818 stream, d_selection1.object(), 1);
8819 } break;
8822 stream, d_selection2.object(), 1);
8823 } break;
8826 stream, d_selection3.object(), 1);
8827 } break;
8830 stream, d_selection4.object(), 1);
8831 } break;
8832 default:
8833 BSLS_ASSERT(SELECTION_ID_UNDEFINED == d_selectionId);
8834 }
8835 } break;
8836 }
8837 return stream;
8838}
8839
8840inline
8842{
8843 return d_selectionId;
8844}
8845
8846template <class ACCESSOR>
8847int Choice3::accessSelection(ACCESSOR& accessor) const
8848{
8849 switch (d_selectionId) {
8851 return accessor(d_selection1.object(),
8854 return accessor(d_selection2.object(),
8857 return accessor(d_selection3.object(),
8860 return accessor(d_selection4.object(),
8862 default:
8863 BSLS_ASSERT(SELECTION_ID_UNDEFINED == d_selectionId);
8864 return -1;
8865 }
8866}
8867
8868inline
8870{
8871 BSLS_ASSERT(SELECTION_ID_SELECTION1 == d_selectionId);
8872 return d_selection1.object();
8873}
8874
8875inline
8876const unsigned char& Choice3::selection2() const
8877{
8878 BSLS_ASSERT(SELECTION_ID_SELECTION2 == d_selectionId);
8879 return d_selection2.object();
8880}
8881
8882inline
8884{
8885 BSLS_ASSERT(SELECTION_ID_SELECTION3 == d_selectionId);
8886 return d_selection3.object();
8887}
8888
8889inline
8891{
8892 BSLS_ASSERT(SELECTION_ID_SELECTION4 == d_selectionId);
8893 return d_selection4.object();
8894}
8895
8896inline
8898{
8899 return SELECTION_ID_SELECTION1 == d_selectionId;
8900}
8901
8902inline
8904{
8905 return SELECTION_ID_SELECTION2 == d_selectionId;
8906}
8907
8908inline
8910{
8911 return SELECTION_ID_SELECTION3 == d_selectionId;
8912}
8913
8914inline
8916{
8917 return SELECTION_ID_SELECTION4 == d_selectionId;
8918}
8919
8920inline
8922{
8923 return SELECTION_ID_UNDEFINED == d_selectionId;
8924}
8925
8926
8927 // ---------------------------------
8928 // class SequenceWithAnonymityChoice
8929 // ---------------------------------
8930
8931// CLASS METHODS
8932inline
8934{
8935 return 1; // versions start at 1.
8936}
8937
8938// CREATORS
8939inline
8941: d_selectionId(SELECTION_ID_UNDEFINED)
8942, d_allocator_p(bslma::Default::allocator(basicAllocator))
8943{
8944}
8945
8946inline
8951
8952// MANIPULATORS
8953template <class STREAM>
8954STREAM& SequenceWithAnonymityChoice::bdexStreamIn(STREAM& stream, int version)
8955{
8956 if (stream) {
8957 switch (version) {
8958 case 1: {
8959 short selectionId;
8960 stream.getInt16(selectionId);
8961 if (!stream) {
8962 return stream;
8963 }
8964 switch (selectionId) {
8968 stream, d_selection1.object(), 1);
8969 } break;
8973 stream, d_selection2.object(), 1);
8974 } break;
8978 stream, d_selection3.object(), 1);
8979 } break;
8983 stream, d_selection4.object(), 1);
8984 } break;
8986 reset();
8987 } break;
8988 default:
8989 stream.invalidate();
8990 }
8991 } break;
8992 default: {
8993 stream.invalidate();
8994 }
8995 }
8996 }
8997 return stream;
8998}
8999
9000template <class MANIPULATOR>
9021
9022inline
9024{
9025 BSLS_ASSERT(SELECTION_ID_SELECTION1 == d_selectionId);
9026 return d_selection1.object();
9027}
9028
9029inline
9031{
9032 BSLS_ASSERT(SELECTION_ID_SELECTION2 == d_selectionId);
9033 return d_selection2.object();
9034}
9035
9036inline
9042
9043inline
9045{
9046 BSLS_ASSERT(SELECTION_ID_SELECTION4 == d_selectionId);
9047 return d_selection4.object();
9048}
9049
9050// ACCESSORS
9051template <class STREAM>
9052STREAM& SequenceWithAnonymityChoice::bdexStreamOut(STREAM& stream, int version) const
9053{
9054 switch (version) {
9055 case 1: {
9056 stream.putInt16(d_selectionId);
9057 switch (d_selectionId) {
9060 stream, d_selection1.object(), 1);
9061 } break;
9064 stream, d_selection2.object(), 1);
9065 } break;
9068 stream, d_selection3.object(), 1);
9069 } break;
9072 stream, d_selection4.object(), 1);
9073 } break;
9074 default:
9075 BSLS_ASSERT(SELECTION_ID_UNDEFINED == d_selectionId);
9076 }
9077 } break;
9078 }
9079 return stream;
9080}
9081
9082inline
9084{
9085 return d_selectionId;
9086}
9087
9088template <class ACCESSOR>
9090{
9091 switch (d_selectionId) {
9093 return accessor(d_selection1.object(),
9096 return accessor(d_selection2.object(),
9099 return accessor(d_selection3.object(),
9102 return accessor(d_selection4.object(),
9104 default:
9105 BSLS_ASSERT(SELECTION_ID_UNDEFINED == d_selectionId);
9106 return -1;
9107 }
9108}
9109
9110inline
9112{
9113 BSLS_ASSERT(SELECTION_ID_SELECTION1 == d_selectionId);
9114 return d_selection1.object();
9115}
9116
9117inline
9119{
9120 BSLS_ASSERT(SELECTION_ID_SELECTION2 == d_selectionId);
9121 return d_selection2.object();
9122}
9123
9124inline
9126{
9127 BSLS_ASSERT(SELECTION_ID_SELECTION3 == d_selectionId);
9128 return d_selection3.object();
9129}
9130
9131inline
9133{
9134 BSLS_ASSERT(SELECTION_ID_SELECTION4 == d_selectionId);
9135 return d_selection4.object();
9136}
9137
9138inline
9140{
9141 return SELECTION_ID_SELECTION1 == d_selectionId;
9142}
9143
9144inline
9146{
9147 return SELECTION_ID_SELECTION2 == d_selectionId;
9148}
9149
9150inline
9152{
9153 return SELECTION_ID_SELECTION3 == d_selectionId;
9154}
9155
9156inline
9158{
9159 return SELECTION_ID_SELECTION4 == d_selectionId;
9160}
9161
9162inline
9164{
9165 return SELECTION_ID_UNDEFINED == d_selectionId;
9166}
9167
9168
9169 // -------------
9170 // class Choice1
9171 // -------------
9172
9173// CLASS METHODS
9174inline
9176{
9177 return 1; // versions start at 1.
9178}
9179
9180// CREATORS
9181inline
9183: d_selectionId(SELECTION_ID_UNDEFINED)
9184, d_allocator_p(bslma::Default::allocator(basicAllocator))
9185{
9186}
9187
9188inline
9190{
9191 reset();
9192}
9193
9194// MANIPULATORS
9195template <class STREAM>
9196STREAM& Choice1::bdexStreamIn(STREAM& stream, int version)
9197{
9198 if (stream) {
9199 switch (version) {
9200 case 1: {
9201 short selectionId;
9202 stream.getInt16(selectionId);
9203 if (!stream) {
9204 return stream;
9205 }
9206 switch (selectionId) {
9210 stream, d_selection1.object(), 1);
9211 } break;
9215 stream, d_selection2.object(), 1);
9216 } break;
9220 stream, *d_selection3, 1);
9221 } break;
9225 stream, *d_selection4, 1);
9226 } break;
9228 reset();
9229 } break;
9230 default:
9231 stream.invalidate();
9232 }
9233 } break;
9234 default: {
9235 stream.invalidate();
9236 }
9237 }
9238 }
9239 return stream;
9240}
9241
9242template <class MANIPULATOR>
9243int Choice1::manipulateSelection(MANIPULATOR& manipulator)
9244{
9245 switch (d_selectionId) {
9247 return manipulator(&d_selection1.object(),
9250 return manipulator(&d_selection2.object(),
9253 return manipulator(d_selection3,
9256 return manipulator(d_selection4,
9258 default:
9260 return -1;
9261 }
9262}
9263
9264inline
9266{
9267 BSLS_ASSERT(SELECTION_ID_SELECTION1 == d_selectionId);
9268 return d_selection1.object();
9269}
9270
9271inline
9273{
9274 BSLS_ASSERT(SELECTION_ID_SELECTION2 == d_selectionId);
9275 return d_selection2.object();
9276}
9277
9278inline
9280{
9281 BSLS_ASSERT(SELECTION_ID_SELECTION3 == d_selectionId);
9282 return *d_selection3;
9283}
9284
9285inline
9287{
9288 BSLS_ASSERT(SELECTION_ID_SELECTION4 == d_selectionId);
9289 return *d_selection4;
9290}
9291
9292// ACCESSORS
9293template <class STREAM>
9294STREAM& Choice1::bdexStreamOut(STREAM& stream, int version) const
9295{
9296 switch (version) {
9297 case 1: {
9298 stream.putInt16(d_selectionId);
9299 switch (d_selectionId) {
9302 stream, d_selection1.object(), 1);
9303 } break;
9306 stream, d_selection2.object(), 1);
9307 } break;
9310 stream, *d_selection3, 1);
9311 } break;
9314 stream, *d_selection4, 1);
9315 } break;
9316 default:
9317 BSLS_ASSERT(SELECTION_ID_UNDEFINED == d_selectionId);
9318 }
9319 } break;
9320 }
9321 return stream;
9322}
9323
9324inline
9326{
9327 return d_selectionId;
9328}
9329
9330template <class ACCESSOR>
9331int Choice1::accessSelection(ACCESSOR& accessor) const
9332{
9333 switch (d_selectionId) {
9335 return accessor(d_selection1.object(),
9338 return accessor(d_selection2.object(),
9341 return accessor(*d_selection3,
9344 return accessor(*d_selection4,
9346 default:
9347 BSLS_ASSERT(SELECTION_ID_UNDEFINED == d_selectionId);
9348 return -1;
9349 }
9350}
9351
9352inline
9353const int& Choice1::selection1() const
9354{
9355 BSLS_ASSERT(SELECTION_ID_SELECTION1 == d_selectionId);
9356 return d_selection1.object();
9357}
9358
9359inline
9360const double& Choice1::selection2() const
9361{
9362 BSLS_ASSERT(SELECTION_ID_SELECTION2 == d_selectionId);
9363 return d_selection2.object();
9364}
9365
9366inline
9368{
9369 BSLS_ASSERT(SELECTION_ID_SELECTION3 == d_selectionId);
9370 return *d_selection3;
9371}
9372
9373inline
9375{
9376 BSLS_ASSERT(SELECTION_ID_SELECTION4 == d_selectionId);
9377 return *d_selection4;
9378}
9379
9380inline
9382{
9383 return SELECTION_ID_SELECTION1 == d_selectionId;
9384}
9385
9386inline
9388{
9389 return SELECTION_ID_SELECTION2 == d_selectionId;
9390}
9391
9392inline
9394{
9395 return SELECTION_ID_SELECTION3 == d_selectionId;
9396}
9397
9398inline
9400{
9401 return SELECTION_ID_SELECTION4 == d_selectionId;
9402}
9403
9404inline
9406{
9407 return SELECTION_ID_UNDEFINED == d_selectionId;
9408}
9409
9410
9411 // -------------
9412 // class Choice2
9413 // -------------
9414
9415// CLASS METHODS
9416inline
9418{
9419 return 1; // versions start at 1.
9420}
9421
9422// CREATORS
9423inline
9425: d_selectionId(SELECTION_ID_UNDEFINED)
9426, d_allocator_p(bslma::Default::allocator(basicAllocator))
9427{
9428}
9429
9430inline
9432{
9433 reset();
9434}
9435
9436// MANIPULATORS
9437template <class STREAM>
9438STREAM& Choice2::bdexStreamIn(STREAM& stream, int version)
9439{
9440 if (stream) {
9441 switch (version) {
9442 case 1: {
9443 short selectionId;
9444 stream.getInt16(selectionId);
9445 if (!stream) {
9446 return stream;
9447 }
9448 switch (selectionId) {
9452 stream, d_selection1.object(), 1);
9453 } break;
9457 stream, d_selection2.object(), 1);
9458 } break;
9462 stream, *d_selection3, 1);
9463 } break;
9467 stream, d_selection4.object(), 1);
9468 } break;
9470 reset();
9471 } break;
9472 default:
9473 stream.invalidate();
9474 }
9475 } break;
9476 default: {
9477 stream.invalidate();
9478 }
9479 }
9480 }
9481 return stream;
9482}
9483
9484template <class MANIPULATOR>
9485int Choice2::manipulateSelection(MANIPULATOR& manipulator)
9486{
9487 switch (d_selectionId) {
9489 return manipulator(&d_selection1.object(),
9492 return manipulator(&d_selection2.object(),
9495 return manipulator(d_selection3,
9498 return manipulator(&d_selection4.object(),
9500 default:
9502 return -1;
9503 }
9504}
9505
9506inline
9508{
9509 BSLS_ASSERT(SELECTION_ID_SELECTION1 == d_selectionId);
9510 return d_selection1.object();
9511}
9512
9513inline
9515{
9516 BSLS_ASSERT(SELECTION_ID_SELECTION2 == d_selectionId);
9517 return d_selection2.object();
9518}
9519
9520inline
9522{
9523 BSLS_ASSERT(SELECTION_ID_SELECTION3 == d_selectionId);
9524 return *d_selection3;
9525}
9526
9527inline
9528unsigned int& Choice2::selection4()
9529{
9530 BSLS_ASSERT(SELECTION_ID_SELECTION4 == d_selectionId);
9531 return d_selection4.object();
9532}
9533
9534// ACCESSORS
9535template <class STREAM>
9536STREAM& Choice2::bdexStreamOut(STREAM& stream, int version) const
9537{
9538 switch (version) {
9539 case 1: {
9540 stream.putInt16(d_selectionId);
9541 switch (d_selectionId) {
9544 stream, d_selection1.object(), 1);
9545 } break;
9548 stream, d_selection2.object(), 1);
9549 } break;
9552 stream, *d_selection3, 1);
9553 } break;
9556 stream, d_selection4.object(), 1);
9557 } break;
9558 default:
9559 BSLS_ASSERT(SELECTION_ID_UNDEFINED == d_selectionId);
9560 }
9561 } break;
9562 }
9563 return stream;
9564}
9565
9566inline
9568{
9569 return d_selectionId;
9570}
9571
9572template <class ACCESSOR>
9573int Choice2::accessSelection(ACCESSOR& accessor) const
9574{
9575 switch (d_selectionId) {
9577 return accessor(d_selection1.object(),
9580 return accessor(d_selection2.object(),
9583 return accessor(*d_selection3,
9586 return accessor(d_selection4.object(),
9588 default:
9589 BSLS_ASSERT(SELECTION_ID_UNDEFINED == d_selectionId);
9590 return -1;
9591 }
9592}
9593
9594inline
9595const bool& Choice2::selection1() const
9596{
9597 BSLS_ASSERT(SELECTION_ID_SELECTION1 == d_selectionId);
9598 return d_selection1.object();
9599}
9600
9601inline
9603{
9604 BSLS_ASSERT(SELECTION_ID_SELECTION2 == d_selectionId);
9605 return d_selection2.object();
9606}
9607
9608inline
9610{
9611 BSLS_ASSERT(SELECTION_ID_SELECTION3 == d_selectionId);
9612 return *d_selection3;
9613}
9614
9615inline
9616const unsigned int& Choice2::selection4() const
9617{
9618 BSLS_ASSERT(SELECTION_ID_SELECTION4 == d_selectionId);
9619 return d_selection4.object();
9620}
9621
9622inline
9624{
9625 return SELECTION_ID_SELECTION1 == d_selectionId;
9626}
9627
9628inline
9630{
9631 return SELECTION_ID_SELECTION2 == d_selectionId;
9632}
9633
9634inline
9636{
9637 return SELECTION_ID_SELECTION3 == d_selectionId;
9638}
9639
9640inline
9642{
9643 return SELECTION_ID_SELECTION4 == d_selectionId;
9644}
9645
9646inline
9648{
9649 return SELECTION_ID_UNDEFINED == d_selectionId;
9650}
9651
9652
9653 // ---------------
9654 // class Sequence4
9655 // ---------------
9656
9657// CLASS METHODS
9658inline
9660{
9661 return 1; // versions start at 1.
9662}
9663
9664// MANIPULATORS
9665template <class STREAM>
9666STREAM& Sequence4::bdexStreamIn(STREAM& stream, int version)
9667{
9668 if (stream) {
9669 switch (version) {
9670 case 1: {
9671 bslx::InStreamFunctions::bdexStreamIn(stream, d_element1, 1);
9672 bslx::InStreamFunctions::bdexStreamIn(stream, d_element2, 1);
9673 bslx::InStreamFunctions::bdexStreamIn(stream, d_element3, 1);
9674 bslx::InStreamFunctions::bdexStreamIn(stream, d_element4, 1);
9675 bslx::InStreamFunctions::bdexStreamIn(stream, d_element5, 1);
9676 bslx::InStreamFunctions::bdexStreamIn(stream, d_element6, 1);
9677 bslx::InStreamFunctions::bdexStreamIn(stream, d_element7, 1);
9678 bslx::InStreamFunctions::bdexStreamIn(stream, d_element8, 1);
9679 bslx::InStreamFunctions::bdexStreamIn(stream, d_element9, 1);
9680 bslx::InStreamFunctions::bdexStreamIn(stream, d_element10, 1);
9681 bslx::InStreamFunctions::bdexStreamIn(stream, d_element11, 1);
9682 bslx::InStreamFunctions::bdexStreamIn(stream, d_element12, 1);
9683 Enumerated::bdexStreamIn(stream, d_element13, 1);
9684 bslx::InStreamFunctions::bdexStreamIn(stream, d_element14, 1);
9685 bslx::InStreamFunctions::bdexStreamIn(stream, d_element15, 1);
9686 bslx::InStreamFunctions::bdexStreamIn(stream, d_element16, 1);
9687 bslx::InStreamFunctions::bdexStreamIn(stream, d_element17, 1);
9688 bslx::InStreamFunctions::bdexStreamIn(stream, d_element18, 1);
9689 bslx::InStreamFunctions::bdexStreamIn(stream, d_element19, 1);
9690 } break;
9691 default: {
9692 stream.invalidate();
9693 }
9694 }
9695 }
9696 return stream;
9697}
9698
9699template <class MANIPULATOR>
9700int Sequence4::manipulateAttributes(MANIPULATOR& manipulator)
9701{
9702 int ret;
9703
9704 ret = manipulator(&d_element1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT1]);
9705 if (ret) {
9706 return ret;
9707 }
9708
9709 ret = manipulator(&d_element2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT2]);
9710 if (ret) {
9711 return ret;
9712 }
9713
9714 ret = manipulator(&d_element3, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT3]);
9715 if (ret) {
9716 return ret;
9717 }
9718
9719 ret = manipulator(&d_element4, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT4]);
9720 if (ret) {
9721 return ret;
9722 }
9723
9724 ret = manipulator(&d_element5, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT5]);
9725 if (ret) {
9726 return ret;
9727 }
9728
9729 ret = manipulator(&d_element6, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT6]);
9730 if (ret) {
9731 return ret;
9732 }
9733
9734 ret = manipulator(&d_element7, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT7]);
9735 if (ret) {
9736 return ret;
9737 }
9738
9739 ret = manipulator(&d_element8, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT8]);
9740 if (ret) {
9741 return ret;
9742 }
9743
9744 ret = manipulator(&d_element9, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT9]);
9745 if (ret) {
9746 return ret;
9747 }
9748
9749 ret = manipulator(&d_element10, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT10]);
9750 if (ret) {
9751 return ret;
9752 }
9753
9754 ret = manipulator(&d_element11, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT11]);
9755 if (ret) {
9756 return ret;
9757 }
9758
9759 ret = manipulator(&d_element12, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT12]);
9760 if (ret) {
9761 return ret;
9762 }
9763
9764 ret = manipulator(&d_element13, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT13]);
9765 if (ret) {
9766 return ret;
9767 }
9768
9769 ret = manipulator(&d_element14, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT14]);
9770 if (ret) {
9771 return ret;
9772 }
9773
9774 ret = manipulator(&d_element15, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT15]);
9775 if (ret) {
9776 return ret;
9777 }
9778
9779 ret = manipulator(&d_element16, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT16]);
9780 if (ret) {
9781 return ret;
9782 }
9783
9784 ret = manipulator(&d_element17, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT17]);
9785 if (ret) {
9786 return ret;
9787 }
9788
9789 ret = manipulator(&d_element18, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT18]);
9790 if (ret) {
9791 return ret;
9792 }
9793
9794 ret = manipulator(&d_element19, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT19]);
9795 if (ret) {
9796 return ret;
9797 }
9798
9799 return ret;
9800}
9801
9802template <class MANIPULATOR>
9803int Sequence4::manipulateAttribute(MANIPULATOR& manipulator, int id)
9804{
9805 enum { NOT_FOUND = -1 };
9806
9807 switch (id) {
9808 case ATTRIBUTE_ID_ELEMENT1: {
9809 return manipulator(&d_element1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT1]);
9810 } break;
9811 case ATTRIBUTE_ID_ELEMENT2: {
9812 return manipulator(&d_element2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT2]);
9813 } break;
9814 case ATTRIBUTE_ID_ELEMENT3: {
9815 return manipulator(&d_element3, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT3]);
9816 } break;
9817 case ATTRIBUTE_ID_ELEMENT4: {
9818 return manipulator(&d_element4, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT4]);
9819 } break;
9820 case ATTRIBUTE_ID_ELEMENT5: {
9821 return manipulator(&d_element5, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT5]);
9822 } break;
9823 case ATTRIBUTE_ID_ELEMENT6: {
9824 return manipulator(&d_element6, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT6]);
9825 } break;
9826 case ATTRIBUTE_ID_ELEMENT7: {
9827 return manipulator(&d_element7, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT7]);
9828 } break;
9829 case ATTRIBUTE_ID_ELEMENT8: {
9830 return manipulator(&d_element8, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT8]);
9831 } break;
9832 case ATTRIBUTE_ID_ELEMENT9: {
9833 return manipulator(&d_element9, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT9]);
9834 } break;
9836 return manipulator(&d_element10, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT10]);
9837 } break;
9839 return manipulator(&d_element11, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT11]);
9840 } break;
9842 return manipulator(&d_element12, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT12]);
9843 } break;
9845 return manipulator(&d_element13, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT13]);
9846 } break;
9848 return manipulator(&d_element14, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT14]);
9849 } break;
9851 return manipulator(&d_element15, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT15]);
9852 } break;
9854 return manipulator(&d_element16, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT16]);
9855 } break;
9857 return manipulator(&d_element17, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT17]);
9858 } break;
9860 return manipulator(&d_element18, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT18]);
9861 } break;
9863 return manipulator(&d_element19, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT19]);
9864 } break;
9865 default:
9866 return NOT_FOUND;
9867 }
9868}
9869
9870template <class MANIPULATOR>
9872 MANIPULATOR& manipulator,
9873 const char *name,
9874 int nameLength)
9875{
9876 enum { NOT_FOUND = -1 };
9877
9878 const bdlat_AttributeInfo *attributeInfo =
9879 lookupAttributeInfo(name, nameLength);
9880 if (0 == attributeInfo) {
9881 return NOT_FOUND;
9882 }
9883
9884 return manipulateAttribute(manipulator, attributeInfo->d_id);
9885}
9886
9887inline
9889{
9890 return d_element1;
9891}
9892
9893inline
9895{
9896 return d_element2;
9897}
9898
9899inline
9901{
9902 return d_element3;
9903}
9904
9905inline
9907{
9908 return d_element4;
9909}
9910
9911inline
9913{
9914 return d_element5;
9915}
9916
9917inline
9919{
9920 return d_element6;
9921}
9922
9923inline
9928
9929inline
9931{
9932 return d_element8;
9933}
9934
9935inline
9937{
9938 return d_element9;
9939}
9940
9941inline
9943{
9944 return d_element10;
9945}
9946
9947inline
9949{
9950 return d_element11;
9951}
9952
9953inline
9955{
9956 return d_element12;
9957}
9958
9959inline
9961{
9962 return d_element13;
9963}
9964
9965inline
9967{
9968 return d_element14;
9969}
9970
9971inline
9973{
9974 return d_element15;
9975}
9976
9977inline
9979{
9980 return d_element16;
9981}
9982
9983inline
9985{
9986 return d_element17;
9987}
9988
9989inline
9991{
9992 return d_element18;
9993}
9994
9995inline
9997{
9998 return d_element19;
9999}
10000
10001// ACCESSORS
10002template <class STREAM>
10003STREAM& Sequence4::bdexStreamOut(STREAM& stream, int version) const
10004{
10005 switch (version) {
10006 case 1: {
10007 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element1, 1);
10008 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element2, 1);
10009 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element3, 1);
10010 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element4, 1);
10011 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element5, 1);
10012 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element6, 1);
10013 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element7, 1);
10014 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element8, 1);
10015 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element9, 1);
10016 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element10, 1);
10017 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element11, 1);
10018 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element12, 1);
10019 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element13, 1);
10020 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element14, 1);
10021 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element15, 1);
10022 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element16, 1);
10023 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element17, 1);
10024 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element18, 1);
10025 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element19, 1);
10026 } break;
10027 }
10028 return stream;
10029}
10030
10031template <class ACCESSOR>
10032int Sequence4::accessAttributes(ACCESSOR& accessor) const
10033{
10034 int ret;
10035
10036 ret = accessor(d_element1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT1]);
10037 if (ret) {
10038 return ret;
10039 }
10040
10041 ret = accessor(d_element2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT2]);
10042 if (ret) {
10043 return ret;
10044 }
10045
10046 ret = accessor(d_element3, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT3]);
10047 if (ret) {
10048 return ret;
10049 }
10050
10051 ret = accessor(d_element4, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT4]);
10052 if (ret) {
10053 return ret;
10054 }
10055
10056 ret = accessor(d_element5, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT5]);
10057 if (ret) {
10058 return ret;
10059 }
10060
10061 ret = accessor(d_element6, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT6]);
10062 if (ret) {
10063 return ret;
10064 }
10065
10066 ret = accessor(d_element7, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT7]);
10067 if (ret) {
10068 return ret;
10069 }
10070
10071 ret = accessor(d_element8, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT8]);
10072 if (ret) {
10073 return ret;
10074 }
10075
10076 ret = accessor(d_element9, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT9]);
10077 if (ret) {
10078 return ret;
10079 }
10080
10081 ret = accessor(d_element10, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT10]);
10082 if (ret) {
10083 return ret;
10084 }
10085
10086 ret = accessor(d_element11, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT11]);
10087 if (ret) {
10088 return ret;
10089 }
10090
10091 ret = accessor(d_element12, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT12]);
10092 if (ret) {
10093 return ret;
10094 }
10095
10096 ret = accessor(d_element13, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT13]);
10097 if (ret) {
10098 return ret;
10099 }
10100
10101 ret = accessor(d_element14, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT14]);
10102 if (ret) {
10103 return ret;
10104 }
10105
10106 ret = accessor(d_element15, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT15]);
10107 if (ret) {
10108 return ret;
10109 }
10110
10111 ret = accessor(d_element16, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT16]);
10112 if (ret) {
10113 return ret;
10114 }
10115
10116 ret = accessor(d_element17, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT17]);
10117 if (ret) {
10118 return ret;
10119 }
10120
10121 ret = accessor(d_element18, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT18]);
10122 if (ret) {
10123 return ret;
10124 }
10125
10126 ret = accessor(d_element19, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT19]);
10127 if (ret) {
10128 return ret;
10129 }
10130
10131 return ret;
10132}
10133
10134template <class ACCESSOR>
10135int Sequence4::accessAttribute(ACCESSOR& accessor, int id) const
10136{
10137 enum { NOT_FOUND = -1 };
10138
10139 switch (id) {
10140 case ATTRIBUTE_ID_ELEMENT1: {
10141 return accessor(d_element1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT1]);
10142 } break;
10143 case ATTRIBUTE_ID_ELEMENT2: {
10144 return accessor(d_element2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT2]);
10145 } break;
10146 case ATTRIBUTE_ID_ELEMENT3: {
10147 return accessor(d_element3, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT3]);
10148 } break;
10149 case ATTRIBUTE_ID_ELEMENT4: {
10150 return accessor(d_element4, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT4]);
10151 } break;
10152 case ATTRIBUTE_ID_ELEMENT5: {
10153 return accessor(d_element5, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT5]);
10154 } break;
10155 case ATTRIBUTE_ID_ELEMENT6: {
10156 return accessor(d_element6, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT6]);
10157 } break;
10158 case ATTRIBUTE_ID_ELEMENT7: {
10159 return accessor(d_element7, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT7]);
10160 } break;
10161 case ATTRIBUTE_ID_ELEMENT8: {
10162 return accessor(d_element8, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT8]);
10163 } break;
10164 case ATTRIBUTE_ID_ELEMENT9: {
10165 return accessor(d_element9, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT9]);
10166 } break;
10168 return accessor(d_element10, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT10]);
10169 } break;
10171 return accessor(d_element11, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT11]);
10172 } break;
10174 return accessor(d_element12, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT12]);
10175 } break;
10177 return accessor(d_element13, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT13]);
10178 } break;
10180 return accessor(d_element14, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT14]);
10181 } break;
10183 return accessor(d_element15, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT15]);
10184 } break;
10186 return accessor(d_element16, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT16]);
10187 } break;
10189 return accessor(d_element17, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT17]);
10190 } break;
10192 return accessor(d_element18, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT18]);
10193 } break;
10195 return accessor(d_element19, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT19]);
10196 } break;
10197 default:
10198 return NOT_FOUND;
10199 }
10200}
10201
10202template <class ACCESSOR>
10204 ACCESSOR& accessor,
10205 const char *name,
10206 int nameLength) const
10207{
10208 enum { NOT_FOUND = -1 };
10209
10210 const bdlat_AttributeInfo *attributeInfo =
10211 lookupAttributeInfo(name, nameLength);
10212 if (0 == attributeInfo) {
10213 return NOT_FOUND;
10214 }
10215
10216 return accessAttribute(accessor, attributeInfo->d_id);
10217}
10218
10219inline
10221{
10222 return d_element1;
10223}
10224
10225inline
10227{
10228 return d_element2;
10229}
10230
10231inline
10233{
10234 return d_element3;
10235}
10236
10237inline
10239{
10240 return d_element4;
10241}
10242
10243inline
10245{
10246 return d_element5;
10247}
10248
10249inline
10251{
10252 return d_element6;
10253}
10254
10255inline
10257{
10258 return d_element7;
10259}
10260
10261inline
10263{
10264 return d_element8;
10265}
10266
10267inline
10269{
10270 return d_element9;
10271}
10272
10273inline
10275{
10276 return d_element10;
10277}
10278
10279inline
10281{
10282 return d_element11;
10283}
10284
10285inline
10287{
10288 return d_element12;
10289}
10290
10291inline
10293{
10294 return d_element13;
10295}
10296
10297inline
10299{
10300 return d_element14;
10301}
10302
10303inline
10305{
10306 return d_element15;
10307}
10308
10309inline
10311{
10312 return d_element16;
10313}
10314
10315inline
10317{
10318 return d_element17;
10319}
10320
10321inline
10323{
10324 return d_element18;
10325}
10326
10327inline
10329{
10330 return d_element19;
10331}
10332
10333
10334
10335 // ---------------
10336 // class Sequence1
10337 // ---------------
10338
10339// CLASS METHODS
10340inline
10342{
10343 return 1; // versions start at 1.
10344}
10345
10346// MANIPULATORS
10347template <class STREAM>
10348STREAM& Sequence1::bdexStreamIn(STREAM& stream, int version)
10349{
10350 if (stream) {
10351 switch (version) {
10352 case 1: {
10353 bslx::InStreamFunctions::bdexStreamIn(stream, d_element1, 1);
10354 bslx::InStreamFunctions::bdexStreamIn(stream, d_element2, 1);
10355 bslx::InStreamFunctions::bdexStreamIn(stream, *d_element3, 1);
10356 bslx::InStreamFunctions::bdexStreamIn(stream, d_element4, 1);
10357 bslx::InStreamFunctions::bdexStreamIn(stream, d_element5, 1);
10358 } break;
10359 default: {
10360 stream.invalidate();
10361 }
10362 }
10363 }
10364 return stream;
10365}
10366
10367template <class MANIPULATOR>
10368int Sequence1::manipulateAttributes(MANIPULATOR& manipulator)
10369{
10370 int ret;
10371
10372 ret = manipulator(&d_element1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT1]);
10373 if (ret) {
10374 return ret;
10375 }
10376
10377 ret = manipulator(&d_element2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT2]);
10378 if (ret) {
10379 return ret;
10380 }
10381
10382 ret = manipulator(d_element3, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT3]);
10383 if (ret) {
10384 return ret;
10385 }
10386
10387 ret = manipulator(&d_element4, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT4]);
10388 if (ret) {
10389 return ret;
10390 }
10391
10392 ret = manipulator(&d_element5, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT5]);
10393 if (ret) {
10394 return ret;
10395 }
10396
10397 return ret;
10398}
10399
10400template <class MANIPULATOR>
10401int Sequence1::manipulateAttribute(MANIPULATOR& manipulator, int id)
10402{
10403 enum { NOT_FOUND = -1 };
10404
10405 switch (id) {
10406 case ATTRIBUTE_ID_ELEMENT1: {
10407 return manipulator(&d_element1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT1]);
10408 } break;
10409 case ATTRIBUTE_ID_ELEMENT2: {
10410 return manipulator(&d_element2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT2]);
10411 } break;
10412 case ATTRIBUTE_ID_ELEMENT3: {
10413 return manipulator(d_element3, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT3]);
10414 } break;
10415 case ATTRIBUTE_ID_ELEMENT4: {
10416 return manipulator(&d_element4, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT4]);
10417 } break;
10418 case ATTRIBUTE_ID_ELEMENT5: {
10419 return manipulator(&d_element5, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT5]);
10420 } break;
10421 default:
10422 return NOT_FOUND;
10423 }
10424}
10425
10426template <class MANIPULATOR>
10428 MANIPULATOR& manipulator,
10429 const char *name,
10430 int nameLength)
10431{
10432 enum { NOT_FOUND = -1 };
10433
10434 const bdlat_AttributeInfo *attributeInfo =
10435 lookupAttributeInfo(name, nameLength);
10436 if (0 == attributeInfo) {
10437 return NOT_FOUND;
10438 }
10439
10440 return manipulateAttribute(manipulator, attributeInfo->d_id);
10441}
10442
10443inline
10445{
10446 return d_element1;
10447}
10448
10449inline
10451{
10452 return d_element2;
10453}
10454
10455inline
10457{
10458 return *d_element3;
10459}
10460
10461inline
10463{
10464 return d_element4;
10465}
10466
10467inline
10469{
10470 return d_element5;
10471}
10472
10473// ACCESSORS
10474template <class STREAM>
10475STREAM& Sequence1::bdexStreamOut(STREAM& stream, int version) const
10476{
10477 switch (version) {
10478 case 1: {
10479 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element1, 1);
10480 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element2, 1);
10481 bslx::OutStreamFunctions::bdexStreamOut(stream, *d_element3, 1);
10482 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element4, 1);
10483 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element5, 1);
10484 } break;
10485 }
10486 return stream;
10487}
10488
10489template <class ACCESSOR>
10490int Sequence1::accessAttributes(ACCESSOR& accessor) const
10491{
10492 int ret;
10493
10494 ret = accessor(d_element1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT1]);
10495 if (ret) {
10496 return ret;
10497 }
10498
10499 ret = accessor(d_element2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT2]);
10500 if (ret) {
10501 return ret;
10502 }
10503
10504 ret = accessor(*d_element3, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT3]);
10505 if (ret) {
10506 return ret;
10507 }
10508
10509 ret = accessor(d_element4, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT4]);
10510 if (ret) {
10511 return ret;
10512 }
10513
10514 ret = accessor(d_element5, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT5]);
10515 if (ret) {
10516 return ret;
10517 }
10518
10519 return ret;
10520}
10521
10522template <class ACCESSOR>
10523int Sequence1::accessAttribute(ACCESSOR& accessor, int id) const
10524{
10525 enum { NOT_FOUND = -1 };
10526
10527 switch (id) {
10528 case ATTRIBUTE_ID_ELEMENT1: {
10529 return accessor(d_element1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT1]);
10530 } break;
10531 case ATTRIBUTE_ID_ELEMENT2: {
10532 return accessor(d_element2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT2]);
10533 } break;
10534 case ATTRIBUTE_ID_ELEMENT3: {
10535 return accessor(*d_element3, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT3]);
10536 } break;
10537 case ATTRIBUTE_ID_ELEMENT4: {
10538 return accessor(d_element4, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT4]);
10539 } break;
10540 case ATTRIBUTE_ID_ELEMENT5: {
10541 return accessor(d_element5, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT5]);
10542 } break;
10543 default:
10544 return NOT_FOUND;
10545 }
10546}
10547
10548template <class ACCESSOR>
10550 ACCESSOR& accessor,
10551 const char *name,
10552 int nameLength) const
10553{
10554 enum { NOT_FOUND = -1 };
10555
10556 const bdlat_AttributeInfo *attributeInfo =
10557 lookupAttributeInfo(name, nameLength);
10558 if (0 == attributeInfo) {
10559 return NOT_FOUND;
10560 }
10561
10562 return accessAttribute(accessor, attributeInfo->d_id);
10563}
10564
10565inline
10567{
10568 return d_element1;
10569}
10570
10571inline
10573{
10574 return d_element2;
10575}
10576
10577inline
10579{
10580 return *d_element3;
10581}
10582
10583inline
10585{
10586 return d_element4;
10587}
10588
10589inline
10591{
10592 return d_element5;
10593}
10594
10595
10596
10597 // ---------------
10598 // class Sequence2
10599 // ---------------
10600
10601// CLASS METHODS
10602inline
10604{
10605 return 1; // versions start at 1.
10606}
10607
10608// MANIPULATORS
10609template <class STREAM>
10610STREAM& Sequence2::bdexStreamIn(STREAM& stream, int version)
10611{
10612 if (stream) {
10613 switch (version) {
10614 case 1: {
10615 bslx::InStreamFunctions::bdexStreamIn(stream, d_element1, 1);
10616 bslx::InStreamFunctions::bdexStreamIn(stream, d_element2, 1);
10617 bslx::InStreamFunctions::bdexStreamIn(stream, d_element3, 1);
10618 bslx::InStreamFunctions::bdexStreamIn(stream, d_element4, 1);
10619 bslx::InStreamFunctions::bdexStreamIn(stream, d_element5, 1);
10620 } break;
10621 default: {
10622 stream.invalidate();
10623 }
10624 }
10625 }
10626 return stream;
10627}
10628
10629template <class MANIPULATOR>
10630int Sequence2::manipulateAttributes(MANIPULATOR& manipulator)
10631{
10632 int ret;
10633
10634 ret = manipulator(&d_element1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT1]);
10635 if (ret) {
10636 return ret;
10637 }
10638
10639 ret = manipulator(&d_element2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT2]);
10640 if (ret) {
10641 return ret;
10642 }
10643
10644 ret = manipulator(&d_element3, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT3]);
10645 if (ret) {
10646 return ret;
10647 }
10648
10649 ret = manipulator(&d_element4, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT4]);
10650 if (ret) {
10651 return ret;
10652 }
10653
10654 ret = manipulator(&d_element5, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT5]);
10655 if (ret) {
10656 return ret;
10657 }
10658
10659 return ret;
10660}
10661
10662template <class MANIPULATOR>
10663int Sequence2::manipulateAttribute(MANIPULATOR& manipulator, int id)
10664{
10665 enum { NOT_FOUND = -1 };
10666
10667 switch (id) {
10668 case ATTRIBUTE_ID_ELEMENT1: {
10669 return manipulator(&d_element1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT1]);
10670 } break;
10671 case ATTRIBUTE_ID_ELEMENT2: {
10672 return manipulator(&d_element2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT2]);
10673 } break;
10674 case ATTRIBUTE_ID_ELEMENT3: {
10675 return manipulator(&d_element3, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT3]);
10676 } break;
10677 case ATTRIBUTE_ID_ELEMENT4: {
10678 return manipulator(&d_element4, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT4]);
10679 } break;
10680 case ATTRIBUTE_ID_ELEMENT5: {
10681 return manipulator(&d_element5, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT5]);
10682 } break;
10683 default:
10684 return NOT_FOUND;
10685 }
10686}
10687
10688template <class MANIPULATOR>
10690 MANIPULATOR& manipulator,
10691 const char *name,
10692 int nameLength)
10693{
10694 enum { NOT_FOUND = -1 };
10695
10696 const bdlat_AttributeInfo *attributeInfo =
10697 lookupAttributeInfo(name, nameLength);
10698 if (0 == attributeInfo) {
10699 return NOT_FOUND;
10700 }
10701
10702 return manipulateAttribute(manipulator, attributeInfo->d_id);
10703}
10704
10705inline
10707{
10708 return d_element1;
10709}
10710
10711inline
10712unsigned char& Sequence2::element2()
10713{
10714 return d_element2;
10715}
10716
10717inline
10719{
10720 return d_element3;
10721}
10722
10723inline
10725{
10726 return d_element4;
10727}
10728
10729inline
10731{
10732 return d_element5;
10733}
10734
10735// ACCESSORS
10736template <class STREAM>
10737STREAM& Sequence2::bdexStreamOut(STREAM& stream, int version) const
10738{
10739 switch (version) {
10740 case 1: {
10741 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element1, 1);
10742 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element2, 1);
10743 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element3, 1);
10744 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element4, 1);
10745 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element5, 1);
10746 } break;
10747 }
10748 return stream;
10749}
10750
10751template <class ACCESSOR>
10752int Sequence2::accessAttributes(ACCESSOR& accessor) const
10753{
10754 int ret;
10755
10756 ret = accessor(d_element1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT1]);
10757 if (ret) {
10758 return ret;
10759 }
10760
10761 ret = accessor(d_element2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT2]);
10762 if (ret) {
10763 return ret;
10764 }
10765
10766 ret = accessor(d_element3, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT3]);
10767 if (ret) {
10768 return ret;
10769 }
10770
10771 ret = accessor(d_element4, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT4]);
10772 if (ret) {
10773 return ret;
10774 }
10775
10776 ret = accessor(d_element5, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT5]);
10777 if (ret) {
10778 return ret;
10779 }
10780
10781 return ret;
10782}
10783
10784template <class ACCESSOR>
10785int Sequence2::accessAttribute(ACCESSOR& accessor, int id) const
10786{
10787 enum { NOT_FOUND = -1 };
10788
10789 switch (id) {
10790 case ATTRIBUTE_ID_ELEMENT1: {
10791 return accessor(d_element1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT1]);
10792 } break;
10793 case ATTRIBUTE_ID_ELEMENT2: {
10794 return accessor(d_element2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT2]);
10795 } break;
10796 case ATTRIBUTE_ID_ELEMENT3: {
10797 return accessor(d_element3, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT3]);
10798 } break;
10799 case ATTRIBUTE_ID_ELEMENT4: {
10800 return accessor(d_element4, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT4]);
10801 } break;
10802 case ATTRIBUTE_ID_ELEMENT5: {
10803 return accessor(d_element5, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT5]);
10804 } break;
10805 default:
10806 return NOT_FOUND;
10807 }
10808}
10809
10810template <class ACCESSOR>
10812 ACCESSOR& accessor,
10813 const char *name,
10814 int nameLength) const
10815{
10816 enum { NOT_FOUND = -1 };
10817
10818 const bdlat_AttributeInfo *attributeInfo =
10819 lookupAttributeInfo(name, nameLength);
10820 if (0 == attributeInfo) {
10821 return NOT_FOUND;
10822 }
10823
10824 return accessAttribute(accessor, attributeInfo->d_id);
10825}
10826
10827inline
10829{
10830 return d_element1;
10831}
10832
10833inline
10834unsigned char Sequence2::element2() const
10835{
10836 return d_element2;
10837}
10838
10839inline
10841{
10842 return d_element3;
10843}
10844
10845inline
10847{
10848 return d_element4;
10849}
10850
10851inline
10853{
10854 return d_element5;
10855}
10856
10857
10858
10859 // ----------------------------------
10860 // class SequenceWithAnonymityChoice2
10861 // ----------------------------------
10862
10863// CLASS METHODS
10864inline
10866{
10867 return 1; // versions start at 1.
10868}
10869
10870// CREATORS
10871inline
10873: d_selectionId(SELECTION_ID_UNDEFINED)
10874, d_allocator_p(bslma::Default::allocator(basicAllocator))
10875{
10876}
10877
10878inline
10883
10884// MANIPULATORS
10885template <class STREAM>
10886STREAM& SequenceWithAnonymityChoice2::bdexStreamIn(STREAM& stream, int version)
10887{
10888 if (stream) {
10889 switch (version) {
10890 case 1: {
10891 short selectionId;
10892 stream.getInt16(selectionId);
10893 if (!stream) {
10894 return stream;
10895 }
10896 switch (selectionId) {
10900 stream, *d_selection7, 1);
10901 } break;
10905 stream, *d_selection8, 1);
10906 } break;
10908 reset();
10909 } break;
10910 default:
10911 stream.invalidate();
10912 }
10913 } break;
10914 default: {
10915 stream.invalidate();
10916 }
10917 }
10918 }
10919 return stream;
10920}
10921
10922template <class MANIPULATOR>
10924{
10925 switch (d_selectionId) {
10927 return manipulator(d_selection7,
10930 return manipulator(d_selection8,
10932 default:
10934 return -1;
10935 }
10936}
10937
10938inline
10944
10945inline
10951
10952// ACCESSORS
10953template <class STREAM>
10954STREAM& SequenceWithAnonymityChoice2::bdexStreamOut(STREAM& stream, int version) const
10955{
10956 switch (version) {
10957 case 1: {
10958 stream.putInt16(d_selectionId);
10959 switch (d_selectionId) {
10962 stream, *d_selection7, 1);
10963 } break;
10966 stream, *d_selection8, 1);
10967 } break;
10968 default:
10969 BSLS_ASSERT(SELECTION_ID_UNDEFINED == d_selectionId);
10970 }
10971 } break;
10972 }
10973 return stream;
10974}
10975
10976inline
10978{
10979 return d_selectionId;
10980}
10981
10982template <class ACCESSOR>
10984{
10985 switch (d_selectionId) {
10987 return accessor(*d_selection7,
10990 return accessor(*d_selection8,
10992 default:
10993 BSLS_ASSERT(SELECTION_ID_UNDEFINED == d_selectionId);
10994 return -1;
10995 }
10996}
10997
10998inline
11000{
11001 BSLS_ASSERT(SELECTION_ID_SELECTION7 == d_selectionId);
11002 return *d_selection7;
11003}
11004
11005inline
11007{
11008 BSLS_ASSERT(SELECTION_ID_SELECTION8 == d_selectionId);
11009 return *d_selection8;
11010}
11011
11012inline
11014{
11015 return SELECTION_ID_SELECTION7 == d_selectionId;
11016}
11017
11018inline
11020{
11021 return SELECTION_ID_SELECTION8 == d_selectionId;
11022}
11023
11024inline
11026{
11027 return SELECTION_ID_UNDEFINED == d_selectionId;
11028}
11029
11030
11031 // ---------------------------
11032 // class SequenceWithAnonymity
11033 // ---------------------------
11034
11035// CLASS METHODS
11036inline
11038{
11039 return 1; // versions start at 1.
11040}
11041
11042// MANIPULATORS
11043template <class STREAM>
11044STREAM& SequenceWithAnonymity::bdexStreamIn(STREAM& stream, int version)
11045{
11046 if (stream) {
11047 switch (version) {
11048 case 1: {
11049 bslx::InStreamFunctions::bdexStreamIn(stream, d_choice, 1);
11050 bslx::InStreamFunctions::bdexStreamIn(stream, d_choice1, 1);
11051 bslx::InStreamFunctions::bdexStreamIn(stream, d_choice2, 1);
11052 bslx::InStreamFunctions::bdexStreamIn(stream, d_element4, 1);
11053 } break;
11054 default: {
11055 stream.invalidate();
11056 }
11057 }
11058 }
11059 return stream;
11060}
11061
11062template <class MANIPULATOR>
11064{
11065 int ret;
11066
11067 ret = manipulator(&d_choice, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_CHOICE]);
11068 if (ret) {
11069 return ret;
11070 }
11071
11072 ret = manipulator(&d_choice1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_CHOICE1]);
11073 if (ret) {
11074 return ret;
11075 }
11076
11077 ret = manipulator(&d_choice2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_CHOICE2]);
11078 if (ret) {
11079 return ret;
11080 }
11081
11082 ret = manipulator(&d_element4, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT4]);
11083 if (ret) {
11084 return ret;
11085 }
11086
11087 return ret;
11088}
11089
11090template <class MANIPULATOR>
11091int SequenceWithAnonymity::manipulateAttribute(MANIPULATOR& manipulator, int id)
11092{
11093 enum { NOT_FOUND = -1 };
11094
11095 switch (id) {
11096 case ATTRIBUTE_ID_CHOICE: {
11097 return manipulator(&d_choice, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_CHOICE]);
11098 } break;
11099 case ATTRIBUTE_ID_CHOICE1: {
11100 return manipulator(&d_choice1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_CHOICE1]);
11101 } break;
11102 case ATTRIBUTE_ID_CHOICE2: {
11103 return manipulator(&d_choice2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_CHOICE2]);
11104 } break;
11105 case ATTRIBUTE_ID_ELEMENT4: {
11106 return manipulator(&d_element4, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT4]);
11107 } break;
11108 default:
11109 return NOT_FOUND;
11110 }
11111}
11112
11113template <class MANIPULATOR>
11115 MANIPULATOR& manipulator,
11116 const char *name,
11117 int nameLength)
11118{
11119 enum { NOT_FOUND = -1 };
11120
11121 const bdlat_AttributeInfo *attributeInfo =
11122 lookupAttributeInfo(name, nameLength);
11123 if (0 == attributeInfo) {
11124 return NOT_FOUND;
11125 }
11126
11127 return manipulateAttribute(manipulator, attributeInfo->d_id);
11128}
11129
11130inline
11132{
11133 return d_choice;
11134}
11135
11136inline
11138{
11139 return d_choice1;
11140}
11141
11142inline
11147
11148inline
11150{
11151 return d_element4;
11152}
11153
11154// ACCESSORS
11155template <class STREAM>
11156STREAM& SequenceWithAnonymity::bdexStreamOut(STREAM& stream, int version) const
11157{
11158 switch (version) {
11159 case 1: {
11160 bslx::OutStreamFunctions::bdexStreamOut(stream, d_choice, 1);
11161 bslx::OutStreamFunctions::bdexStreamOut(stream, d_choice1, 1);
11162 bslx::OutStreamFunctions::bdexStreamOut(stream, d_choice2, 1);
11163 bslx::OutStreamFunctions::bdexStreamOut(stream, d_element4, 1);
11164 } break;
11165 }
11166 return stream;
11167}
11168
11169template <class ACCESSOR>
11170int SequenceWithAnonymity::accessAttributes(ACCESSOR& accessor) const
11171{
11172 int ret;
11173
11174 ret = accessor(d_choice, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_CHOICE]);
11175 if (ret) {
11176 return ret;
11177 }
11178
11179 ret = accessor(d_choice1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_CHOICE1]);
11180 if (ret) {
11181 return ret;
11182 }
11183
11184 ret = accessor(d_choice2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_CHOICE2]);
11185 if (ret) {
11186 return ret;
11187 }
11188
11189 ret = accessor(d_element4, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT4]);
11190 if (ret) {
11191 return ret;
11192 }
11193
11194 return ret;
11195}
11196
11197template <class ACCESSOR>
11198int SequenceWithAnonymity::accessAttribute(ACCESSOR& accessor, int id) const
11199{
11200 enum { NOT_FOUND = -1 };
11201
11202 switch (id) {
11203 case ATTRIBUTE_ID_CHOICE: {
11204 return accessor(d_choice, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_CHOICE]);
11205 } break;
11206 case ATTRIBUTE_ID_CHOICE1: {
11207 return accessor(d_choice1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_CHOICE1]);
11208 } break;
11209 case ATTRIBUTE_ID_CHOICE2: {
11210 return accessor(d_choice2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_CHOICE2]);
11211 } break;
11212 case ATTRIBUTE_ID_ELEMENT4: {
11213 return accessor(d_element4, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ELEMENT4]);
11214 } break;
11215 default:
11216 return NOT_FOUND;
11217 }
11218}
11219
11220template <class ACCESSOR>
11222 ACCESSOR& accessor,
11223 const char *name,
11224 int nameLength) const
11225{
11226 enum { NOT_FOUND = -1 };
11227
11228 const bdlat_AttributeInfo *attributeInfo =
11229 lookupAttributeInfo(name, nameLength);
11230 if (0 == attributeInfo) {
11231 return NOT_FOUND;
11232 }
11233
11234 return accessAttribute(accessor, attributeInfo->d_id);
11235}
11236
11237inline
11239{
11240 return d_choice;
11241}
11242
11243inline
11245{
11246 return d_choice1;
11247}
11248
11249inline
11251{
11252 return d_choice2;
11253}
11254
11255inline
11257{
11258 return d_element4;
11259}
11260
11261
11262
11263 // ------------------------
11264 // class FeatureTestMessage
11265 // ------------------------
11266
11267// CLASS METHODS
11268inline
11270{
11271 return 1; // versions start at 1.
11272}
11273
11274// CREATORS
11275inline
11277: d_selectionId(SELECTION_ID_UNDEFINED)
11278, d_allocator_p(bslma::Default::allocator(basicAllocator))
11279{
11280}
11281
11282inline
11287
11288// MANIPULATORS
11289template <class STREAM>
11290STREAM& FeatureTestMessage::bdexStreamIn(STREAM& stream, int version)
11291{
11292 if (stream) {
11293 switch (version) {
11294 case 1: {
11295 short selectionId;
11296 stream.getInt16(selectionId);
11297 if (!stream) {
11298 return stream;
11299 }
11300 switch (selectionId) {
11304 stream, d_selection1.object(), 1);
11305 } break;
11309 stream, d_selection2.object(), 1);
11310 } break;
11314 stream, d_selection3.object(), 1);
11315 } break;
11319 stream, *d_selection4, 1);
11320 } break;
11324 stream, d_selection5.object(), 1);
11325 } break;
11329 stream, d_selection6.object(), 1);
11330 } break;
11334 stream, d_selection7.object(), 1);
11335 } break;
11339 stream, d_selection8.object(), 1);
11340 } break;
11344 stream, d_selection9.object(), 1);
11345 } break;
11349 stream, d_selection10.object(), 1);
11350 } break;
11354 stream, d_selection11.object(), 1);
11355 } break;
11357 reset();
11358 } break;
11359 default:
11360 stream.invalidate();
11361 }
11362 } break;
11363 default: {
11364 stream.invalidate();
11365 }
11366 }
11367 }
11368 return stream;
11369}
11370
11371template <class MANIPULATOR>
11372int FeatureTestMessage::manipulateSelection(MANIPULATOR& manipulator)
11373{
11374 switch (d_selectionId) {
11376 return manipulator(&d_selection1.object(),
11379 return manipulator(&d_selection2.object(),
11382 return manipulator(&d_selection3.object(),
11385 return manipulator(d_selection4,
11388 return manipulator(&d_selection5.object(),
11391 return manipulator(&d_selection6.object(),
11394 return manipulator(&d_selection7.object(),
11397 return manipulator(&d_selection8.object(),
11400 return manipulator(&d_selection9.object(),
11403 return manipulator(&d_selection10.object(),
11406 return manipulator(&d_selection11.object(),
11408 default:
11410 return -1;
11411 }
11412}
11413
11414inline
11416{
11417 BSLS_ASSERT(SELECTION_ID_SELECTION1 == d_selectionId);
11418 return d_selection1.object();
11419}
11420
11421inline
11427
11428inline
11430{
11431 BSLS_ASSERT(SELECTION_ID_SELECTION3 == d_selectionId);
11432 return d_selection3.object();
11433}
11434
11435inline
11437{
11438 BSLS_ASSERT(SELECTION_ID_SELECTION4 == d_selectionId);
11439 return *d_selection4;
11440}
11441
11442inline
11448
11449inline
11451{
11452 BSLS_ASSERT(SELECTION_ID_SELECTION6 == d_selectionId);
11453 return d_selection6.object();
11454}
11455
11456inline
11462
11463inline
11465{
11466 BSLS_ASSERT(SELECTION_ID_SELECTION8 == d_selectionId);
11467 return d_selection8.object();
11468}
11469
11470inline
11472{
11473 BSLS_ASSERT(SELECTION_ID_SELECTION9 == d_selectionId);
11474 return d_selection9.object();
11475}
11476
11477inline
11479{
11480 BSLS_ASSERT(SELECTION_ID_SELECTION10 == d_selectionId);
11481 return d_selection10.object();
11482}
11483
11484inline
11486{
11487 BSLS_ASSERT(SELECTION_ID_SELECTION11 == d_selectionId);
11488 return d_selection11.object();
11489}
11490
11491// ACCESSORS
11492template <class STREAM>
11493STREAM& FeatureTestMessage::bdexStreamOut(STREAM& stream, int version) const
11494{
11495 switch (version) {
11496 case 1: {
11497 stream.putInt16(d_selectionId);
11498 switch (d_selectionId) {
11501 stream, d_selection1.object(), 1);
11502 } break;
11505 stream, d_selection2.object(), 1);
11506 } break;
11509 stream, d_selection3.object(), 1);
11510 } break;
11513 stream, *d_selection4, 1);
11514 } break;
11517 stream, d_selection5.object(), 1);
11518 } break;
11521 stream, d_selection6.object(), 1);
11522 } break;
11525 stream, d_selection7.object(), 1);
11526 } break;
11529 stream, d_selection8.object(), 1);
11530 } break;
11533 stream, d_selection9.object(), 1);
11534 } break;
11537 stream, d_selection10.object(), 1);
11538 } break;
11541 stream, d_selection11.object(), 1);
11542 } break;
11543 default:
11544 BSLS_ASSERT(SELECTION_ID_UNDEFINED == d_selectionId);
11545 }
11546 } break;
11547 }
11548 return stream;
11549}
11550
11551inline
11553{
11554 return d_selectionId;
11555}
11556
11557template <class ACCESSOR>
11558int FeatureTestMessage::accessSelection(ACCESSOR& accessor) const
11559{
11560 switch (d_selectionId) {
11562 return accessor(d_selection1.object(),
11565 return accessor(d_selection2.object(),
11568 return accessor(d_selection3.object(),
11571 return accessor(*d_selection4,
11574 return accessor(d_selection5.object(),
11577 return accessor(d_selection6.object(),
11580 return accessor(d_selection7.object(),
11583 return accessor(d_selection8.object(),
11586 return accessor(d_selection9.object(),
11589 return accessor(d_selection10.object(),
11592 return accessor(d_selection11.object(),
11594 default:
11595 BSLS_ASSERT(SELECTION_ID_UNDEFINED == d_selectionId);
11596 return -1;
11597 }
11598}
11599
11600inline
11602{
11603 BSLS_ASSERT(SELECTION_ID_SELECTION1 == d_selectionId);
11604 return d_selection1.object();
11605}
11606
11607inline
11609{
11610 BSLS_ASSERT(SELECTION_ID_SELECTION2 == d_selectionId);
11611 return d_selection2.object();
11612}
11613
11614inline
11616{
11617 BSLS_ASSERT(SELECTION_ID_SELECTION3 == d_selectionId);
11618 return d_selection3.object();
11619}
11620
11621inline
11623{
11624 BSLS_ASSERT(SELECTION_ID_SELECTION4 == d_selectionId);
11625 return *d_selection4;
11626}
11627
11628inline
11630{
11631 BSLS_ASSERT(SELECTION_ID_SELECTION5 == d_selectionId);
11632 return d_selection5.object();
11633}
11634
11635inline
11637{
11638 BSLS_ASSERT(SELECTION_ID_SELECTION6 == d_selectionId);
11639 return d_selection6.object();
11640}
11641
11642inline
11644{
11645 BSLS_ASSERT(SELECTION_ID_SELECTION7 == d_selectionId);
11646 return d_selection7.object();
11647}
11648
11649inline
11651{
11652 BSLS_ASSERT(SELECTION_ID_SELECTION8 == d_selectionId);
11653 return d_selection8.object();
11654}
11655
11656inline
11658{
11659 BSLS_ASSERT(SELECTION_ID_SELECTION9 == d_selectionId);
11660 return d_selection9.object();
11661}
11662
11663inline
11665{
11666 BSLS_ASSERT(SELECTION_ID_SELECTION10 == d_selectionId);
11667 return d_selection10.object();
11668}
11669
11670inline
11672{
11673 BSLS_ASSERT(SELECTION_ID_SELECTION11 == d_selectionId);
11674 return d_selection11.object();
11675}
11676
11677inline
11679{
11680 return SELECTION_ID_SELECTION1 == d_selectionId;
11681}
11682
11683inline
11685{
11686 return SELECTION_ID_SELECTION2 == d_selectionId;
11687}
11688
11689inline
11691{
11692 return SELECTION_ID_SELECTION3 == d_selectionId;
11693}
11694
11695inline
11697{
11698 return SELECTION_ID_SELECTION4 == d_selectionId;
11699}
11700
11701inline
11703{
11704 return SELECTION_ID_SELECTION5 == d_selectionId;
11705}
11706
11707inline
11709{
11710 return SELECTION_ID_SELECTION6 == d_selectionId;
11711}
11712
11713inline
11715{
11716 return SELECTION_ID_SELECTION7 == d_selectionId;
11717}
11718
11719inline
11721{
11722 return SELECTION_ID_SELECTION8 == d_selectionId;
11723}
11724
11725inline
11727{
11728 return SELECTION_ID_SELECTION9 == d_selectionId;
11729}
11730
11731inline
11733{
11734 return SELECTION_ID_SELECTION10 == d_selectionId;
11735}
11736
11737inline
11739{
11740 return SELECTION_ID_SELECTION11 == d_selectionId;
11741}
11742
11743inline
11745{
11746 return SELECTION_ID_UNDEFINED == d_selectionId;
11747}
11748
11749
11750 // -------------
11751 // class Request
11752 // -------------
11753
11754// CLASS METHODS
11755inline
11757{
11758 return 1; // versions start at 1.
11759}
11760
11761// CREATORS
11762inline
11764: d_selectionId(SELECTION_ID_UNDEFINED)
11765, d_allocator_p(bslma::Default::allocator(basicAllocator))
11766{
11767}
11768
11769inline
11771{
11772 reset();
11773}
11774
11775// MANIPULATORS
11776template <class STREAM>
11777STREAM& Request::bdexStreamIn(STREAM& stream, int version)
11778{
11779 if (stream) {
11780 switch (version) {
11781 case 1: {
11782 short selectionId;
11783 stream.getInt16(selectionId);
11784 if (!stream) {
11785 return stream;
11786 }
11787 switch (selectionId) {
11791 stream, d_simpleRequest.object(), 1);
11792 } break;
11796 stream, d_featureRequest.object(), 1);
11797 } break;
11799 reset();
11800 } break;
11801 default:
11802 stream.invalidate();
11803 }
11804 } break;
11805 default: {
11806 stream.invalidate();
11807 }
11808 }
11809 }
11810 return stream;
11811}
11812
11813template <class MANIPULATOR>
11814int Request::manipulateSelection(MANIPULATOR& manipulator)
11815{
11816 switch (d_selectionId) {
11818 return manipulator(&d_simpleRequest.object(),
11821 return manipulator(&d_featureRequest.object(),
11823 default:
11825 return -1;
11826 }
11827}
11828
11829inline
11831{
11832 BSLS_ASSERT(SELECTION_ID_SIMPLE_REQUEST == d_selectionId);
11833 return d_simpleRequest.object();
11834}
11835
11836inline
11838{
11839 BSLS_ASSERT(SELECTION_ID_FEATURE_REQUEST == d_selectionId);
11840 return d_featureRequest.object();
11841}
11842
11843// ACCESSORS
11844template <class STREAM>
11845STREAM& Request::bdexStreamOut(STREAM& stream, int version) const
11846{
11847 switch (version) {
11848 case 1: {
11849 stream.putInt16(d_selectionId);
11850 switch (d_selectionId) {
11853 stream, d_simpleRequest.object(), 1);
11854 } break;
11857 stream, d_featureRequest.object(), 1);
11858 } break;
11859 default:
11860 BSLS_ASSERT(SELECTION_ID_UNDEFINED == d_selectionId);
11861 }
11862 } break;
11863 }
11864 return stream;
11865}
11866
11867inline
11869{
11870 return d_selectionId;
11871}
11872
11873template <class ACCESSOR>
11874int Request::accessSelection(ACCESSOR& accessor) const
11875{
11876 switch (d_selectionId) {
11878 return accessor(d_simpleRequest.object(),
11881 return accessor(d_featureRequest.object(),
11883 default:
11884 BSLS_ASSERT(SELECTION_ID_UNDEFINED == d_selectionId);
11885 return -1;
11886 }
11887}
11888
11889inline
11891{
11892 BSLS_ASSERT(SELECTION_ID_SIMPLE_REQUEST == d_selectionId);
11893 return d_simpleRequest.object();
11894}
11895
11896inline
11898{
11899 BSLS_ASSERT(SELECTION_ID_FEATURE_REQUEST == d_selectionId);
11900 return d_featureRequest.object();
11901}
11902
11903inline
11905{
11906 return SELECTION_ID_SIMPLE_REQUEST == d_selectionId;
11907}
11908
11909inline
11911{
11912 return SELECTION_ID_FEATURE_REQUEST == d_selectionId;
11913}
11914
11915inline
11917{
11918 return SELECTION_ID_UNDEFINED == d_selectionId;
11919}
11920
11921
11922 // --------------
11923 // class Response
11924 // --------------
11925
11926// CLASS METHODS
11927inline
11929{
11930 return 1; // versions start at 1.
11931}
11932
11933// CREATORS
11934inline
11936: d_selectionId(SELECTION_ID_UNDEFINED)
11937, d_allocator_p(bslma::Default::allocator(basicAllocator))
11938{
11939}
11940
11941inline
11943{
11944 reset();
11945}
11946
11947// MANIPULATORS
11948template <class STREAM>
11949STREAM& Response::bdexStreamIn(STREAM& stream, int version)
11950{
11951 if (stream) {
11952 switch (version) {
11953 case 1: {
11954 short selectionId;
11955 stream.getInt16(selectionId);
11956 if (!stream) {
11957 return stream;
11958 }
11959 switch (selectionId) {
11963 stream, d_responseData.object(), 1);
11964 } break;
11968 stream, d_featureResponse.object(), 1);
11969 } break;
11971 reset();
11972 } break;
11973 default:
11974 stream.invalidate();
11975 }
11976 } break;
11977 default: {
11978 stream.invalidate();
11979 }
11980 }
11981 }
11982 return stream;
11983}
11984
11985template <class MANIPULATOR>
11986int Response::manipulateSelection(MANIPULATOR& manipulator)
11987{
11988 switch (d_selectionId) {
11990 return manipulator(&d_responseData.object(),
11993 return manipulator(&d_featureResponse.object(),
11995 default:
11997 return -1;
11998 }
11999}
12000
12001inline
12003{
12004 BSLS_ASSERT(SELECTION_ID_RESPONSE_DATA == d_selectionId);
12005 return d_responseData.object();
12006}
12007
12008inline
12010{
12012 return d_featureResponse.object();
12013}
12014
12015// ACCESSORS
12016template <class STREAM>
12017STREAM& Response::bdexStreamOut(STREAM& stream, int version) const
12018{
12019 switch (version) {
12020 case 1: {
12021 stream.putInt16(d_selectionId);
12022 switch (d_selectionId) {
12025 stream, d_responseData.object(), 1);
12026 } break;
12029 stream, d_featureResponse.object(), 1);
12030 } break;
12031 default:
12032 BSLS_ASSERT(SELECTION_ID_UNDEFINED == d_selectionId);
12033 }
12034 } break;
12035 }
12036 return stream;
12037}
12038
12039inline
12041{
12042 return d_selectionId;
12043}
12044
12045template <class ACCESSOR>
12046int Response::accessSelection(ACCESSOR& accessor) const
12047{
12048 switch (d_selectionId) {
12050 return accessor(d_responseData.object(),
12053 return accessor(d_featureResponse.object(),
12055 default:
12056 BSLS_ASSERT(SELECTION_ID_UNDEFINED == d_selectionId);
12057 return -1;
12058 }
12059}
12060
12061inline
12063{
12064 BSLS_ASSERT(SELECTION_ID_RESPONSE_DATA == d_selectionId);
12065 return d_responseData.object();
12066}
12067
12068inline
12070{
12072 return d_featureResponse.object();
12073}
12074
12075inline
12077{
12078 return SELECTION_ID_RESPONSE_DATA == d_selectionId;
12079}
12080
12081inline
12083{
12084 return SELECTION_ID_FEATURE_RESPONSE == d_selectionId;
12085}
12086
12087inline
12089{
12090 return SELECTION_ID_UNDEFINED == d_selectionId;
12091}
12092} // close package namespace
12093
12094// FREE FUNCTIONS
12095
12096inline
12097bool balb::operator==(
12098 const balb::Choice4& lhs,
12099 const balb::Choice4& rhs)
12100{
12101 typedef balb::Choice4 Class;
12102 if (lhs.selectionId() == rhs.selectionId()) {
12103 switch (rhs.selectionId()) {
12104 case Class::SELECTION_ID_SELECTION1:
12105 return lhs.selection1() == rhs.selection1();
12106 case Class::SELECTION_ID_SELECTION2:
12107 return lhs.selection2() == rhs.selection2();
12108 default:
12109 BSLS_ASSERT(Class::SELECTION_ID_UNDEFINED == rhs.selectionId());
12110 return true;
12111 }
12112 }
12113 else {
12114 return false;
12115 }
12116}
12117
12118inline
12119bool balb::operator!=(
12120 const balb::Choice4& lhs,
12121 const balb::Choice4& rhs)
12122{
12123 return !(lhs == rhs);
12124}
12125
12126inline
12127bsl::ostream& balb::operator<<(
12128 bsl::ostream& stream,
12129 const balb::Choice4& rhs)
12130{
12131 return rhs.print(stream, 0, -1);
12132}
12133
12134
12135inline
12136bool balb::operator==(
12137 const balb::CustomInt& lhs,
12138 const balb::CustomInt& rhs)
12139{
12140 return lhs.d_value == rhs.d_value;
12141}
12142
12143inline
12144bool balb::operator!=(
12145 const balb::CustomInt& lhs,
12146 const balb::CustomInt& rhs)
12147{
12148 return lhs.d_value != rhs.d_value;
12149}
12150
12151inline
12152bsl::ostream& balb::operator<<(
12153 bsl::ostream& stream,
12154 const balb::CustomInt& rhs)
12155{
12156 return rhs.print(stream, 0, -1);
12157}
12158
12159
12160inline
12161bool balb::operator==(
12162 const balb::CustomString& lhs,
12163 const balb::CustomString& rhs)
12164{
12165 return lhs.d_value == rhs.d_value;
12166}
12167
12168inline
12169bool balb::operator!=(
12170 const balb::CustomString& lhs,
12171 const balb::CustomString& rhs)
12172{
12173 return lhs.d_value != rhs.d_value;
12174}
12175
12176inline
12177bsl::ostream& balb::operator<<(
12178 bsl::ostream& stream,
12179 const balb::CustomString& rhs)
12180{
12181 return rhs.print(stream, 0, -1);
12182}
12183
12184
12185inline
12186bsl::ostream& balb::operator<<(
12187 bsl::ostream& stream,
12189{
12190 return balb::Enumerated::print(stream, rhs);
12191}
12192
12193
12194inline
12195bool balb::operator==(
12198{
12200 if (lhs.selectionId() == rhs.selectionId()) {
12201 switch (rhs.selectionId()) {
12202 case Class::SELECTION_ID_SELECTION5:
12203 return lhs.selection5() == rhs.selection5();
12204 case Class::SELECTION_ID_SELECTION6:
12205 return lhs.selection6() == rhs.selection6();
12206 default:
12207 BSLS_ASSERT(Class::SELECTION_ID_UNDEFINED == rhs.selectionId());
12208 return true;
12209 }
12210 }
12211 else {
12212 return false;
12213 }
12214}
12215
12216inline
12217bool balb::operator!=(
12220{
12221 return !(lhs == rhs);
12222}
12223
12224inline
12225bsl::ostream& balb::operator<<(
12226 bsl::ostream& stream,
12228{
12229 return rhs.print(stream, 0, -1);
12230}
12231
12232
12233inline
12234bool balb::operator==(
12235 const balb::SimpleRequest& lhs,
12236 const balb::SimpleRequest& rhs)
12237{
12238 return lhs.data() == rhs.data()
12239 && lhs.responseLength() == rhs.responseLength();
12240}
12241
12242inline
12243bool balb::operator!=(
12244 const balb::SimpleRequest& lhs,
12245 const balb::SimpleRequest& rhs)
12246{
12247 return lhs.data() != rhs.data()
12248 || lhs.responseLength() != rhs.responseLength();
12249}
12250
12251inline
12252bsl::ostream& balb::operator<<(
12253 bsl::ostream& stream,
12254 const balb::SimpleRequest& rhs)
12255{
12256 return rhs.print(stream, 0, -1);
12257}
12258
12259
12260inline
12261bool balb::operator==(
12262 const balb::UnsignedSequence& lhs,
12263 const balb::UnsignedSequence& rhs)
12264{
12265 return lhs.element1() == rhs.element1()
12266 && lhs.element2() == rhs.element2()
12267 && lhs.element3() == rhs.element3();
12268}
12269
12270inline
12271bool balb::operator!=(
12272 const balb::UnsignedSequence& lhs,
12273 const balb::UnsignedSequence& rhs)
12274{
12275 return lhs.element1() != rhs.element1()
12276 || lhs.element2() != rhs.element2()
12277 || lhs.element3() != rhs.element3();
12278}
12279
12280inline
12281bsl::ostream& balb::operator<<(
12282 bsl::ostream& stream,
12283 const balb::UnsignedSequence& rhs)
12284{
12285 return rhs.print(stream, 0, -1);
12286}
12287
12288
12289inline
12290bool balb::operator==(
12291 const balb::VoidSequence&,
12292 const balb::VoidSequence&)
12293{
12294 return true;
12295}
12296
12297inline
12298bool balb::operator!=(
12299 const balb::VoidSequence&,
12300 const balb::VoidSequence&)
12301{
12302 return false;
12303}
12304
12305inline
12306bsl::ostream& balb::operator<<(
12307 bsl::ostream& stream,
12308 const balb::VoidSequence& rhs)
12309{
12310 return rhs.print(stream, 0, -1);
12311}
12312
12313
12314inline
12315bool balb::operator==(
12316 const balb::Choice5& lhs,
12317 const balb::Choice5& rhs)
12318{
12319 typedef balb::Choice5 Class;
12320 if (lhs.selectionId() == rhs.selectionId()) {
12321 switch (rhs.selectionId()) {
12322 case Class::SELECTION_ID_SELECTION1:
12323 return lhs.selection1() == rhs.selection1();
12324 case Class::SELECTION_ID_SELECTION2:
12325 return lhs.selection2() == rhs.selection2();
12326 default:
12327 BSLS_ASSERT(Class::SELECTION_ID_UNDEFINED == rhs.selectionId());
12328 return true;
12329 }
12330 }
12331 else {
12332 return false;
12333 }
12334}
12335
12336inline
12337bool balb::operator!=(
12338 const balb::Choice5& lhs,
12339 const balb::Choice5& rhs)
12340{
12341 return !(lhs == rhs);
12342}
12343
12344inline
12345bsl::ostream& balb::operator<<(
12346 bsl::ostream& stream,
12347 const balb::Choice5& rhs)
12348{
12349 return rhs.print(stream, 0, -1);
12350}
12351
12352
12353inline
12354bool balb::operator==(
12355 const balb::Sequence3& lhs,
12356 const balb::Sequence3& rhs)
12357{
12358 return lhs.element1() == rhs.element1()
12359 && lhs.element2() == rhs.element2()
12360 && lhs.element3() == rhs.element3()
12361 && lhs.element4() == rhs.element4()
12362 && lhs.element5() == rhs.element5()
12363 && lhs.element6() == rhs.element6();
12364}
12365
12366inline
12367bool balb::operator!=(
12368 const balb::Sequence3& lhs,
12369 const balb::Sequence3& rhs)
12370{
12371 return lhs.element1() != rhs.element1()
12372 || lhs.element2() != rhs.element2()
12373 || lhs.element3() != rhs.element3()
12374 || lhs.element4() != rhs.element4()
12375 || lhs.element5() != rhs.element5()
12376 || lhs.element6() != rhs.element6();
12377}
12378
12379inline
12380bsl::ostream& balb::operator<<(
12381 bsl::ostream& stream,
12382 const balb::Sequence3& rhs)
12383{
12384 return rhs.print(stream, 0, -1);
12385}
12386
12387
12388inline
12389bool balb::operator==(
12390 const balb::Sequence5& lhs,
12391 const balb::Sequence5& rhs)
12392{
12393 return lhs.element1() == rhs.element1()
12394 && lhs.element2() == rhs.element2()
12395 && lhs.element3() == rhs.element3()
12396 && lhs.element4() == rhs.element4()
12397 && lhs.element5() == rhs.element5()
12398 && lhs.element6() == rhs.element6()
12399 && lhs.element7() == rhs.element7();
12400}
12401
12402inline
12403bool balb::operator!=(
12404 const balb::Sequence5& lhs,
12405 const balb::Sequence5& rhs)
12406{
12407 return lhs.element1() != rhs.element1()
12408 || lhs.element2() != rhs.element2()
12409 || lhs.element3() != rhs.element3()
12410 || lhs.element4() != rhs.element4()
12411 || lhs.element5() != rhs.element5()
12412 || lhs.element6() != rhs.element6()
12413 || lhs.element7() != rhs.element7();
12414}
12415
12416inline
12417bsl::ostream& balb::operator<<(
12418 bsl::ostream& stream,
12419 const balb::Sequence5& rhs)
12420{
12421 return rhs.print(stream, 0, -1);
12422}
12423
12424
12425inline
12426bool balb::operator==(
12427 const balb::Sequence6& lhs,
12428 const balb::Sequence6& rhs)
12429{
12430 return lhs.element1() == rhs.element1()
12431 && lhs.element2() == rhs.element2()
12432 && lhs.element3() == rhs.element3()
12433 && lhs.element4() == rhs.element4()
12434 && lhs.element5() == rhs.element5()
12435 && lhs.element6() == rhs.element6()
12436 && lhs.element7() == rhs.element7()
12437 && lhs.element8() == rhs.element8()
12438 && lhs.element9() == rhs.element9()
12439 && lhs.element10() == rhs.element10()
12440 && lhs.element11() == rhs.element11()
12441 && lhs.element12() == rhs.element12()
12442 && lhs.element13() == rhs.element13()
12443 && lhs.element14() == rhs.element14()
12444 && lhs.element15() == rhs.element15();
12445}
12446
12447inline
12448bool balb::operator!=(
12449 const balb::Sequence6& lhs,
12450 const balb::Sequence6& rhs)
12451{
12452 return lhs.element1() != rhs.element1()
12453 || lhs.element2() != rhs.element2()
12454 || lhs.element3() != rhs.element3()
12455 || lhs.element4() != rhs.element4()
12456 || lhs.element5() != rhs.element5()
12457 || lhs.element6() != rhs.element6()
12458 || lhs.element7() != rhs.element7()
12459 || lhs.element8() != rhs.element8()
12460 || lhs.element9() != rhs.element9()
12461 || lhs.element10() != rhs.element10()
12462 || lhs.element11() != rhs.element11()
12463 || lhs.element12() != rhs.element12()
12464 || lhs.element13() != rhs.element13()
12465 || lhs.element14() != rhs.element14()
12466 || lhs.element15() != rhs.element15();
12467}
12468
12469inline
12470bsl::ostream& balb::operator<<(
12471 bsl::ostream& stream,
12472 const balb::Sequence6& rhs)
12473{
12474 return rhs.print(stream, 0, -1);
12475}
12476
12477
12478inline
12479bool balb::operator==(
12480 const balb::Choice3& lhs,
12481 const balb::Choice3& rhs)
12482{
12483 typedef balb::Choice3 Class;
12484 if (lhs.selectionId() == rhs.selectionId()) {
12485 switch (rhs.selectionId()) {
12486 case Class::SELECTION_ID_SELECTION1:
12487 return lhs.selection1() == rhs.selection1();
12488 case Class::SELECTION_ID_SELECTION2:
12489 return lhs.selection2() == rhs.selection2();
12490 case Class::SELECTION_ID_SELECTION3:
12491 return lhs.selection3() == rhs.selection3();
12492 case Class::SELECTION_ID_SELECTION4:
12493 return lhs.selection4() == rhs.selection4();
12494 default:
12495 BSLS_ASSERT(Class::SELECTION_ID_UNDEFINED == rhs.selectionId());
12496 return true;
12497 }
12498 }
12499 else {
12500 return false;
12501 }
12502}
12503
12504inline
12505bool balb::operator!=(
12506 const balb::Choice3& lhs,
12507 const balb::Choice3& rhs)
12508{
12509 return !(lhs == rhs);
12510}
12511
12512inline
12513bsl::ostream& balb::operator<<(
12514 bsl::ostream& stream,
12515 const balb::Choice3& rhs)
12516{
12517 return rhs.print(stream, 0, -1);
12518}
12519
12520
12521inline
12522bool balb::operator==(
12525{
12527 if (lhs.selectionId() == rhs.selectionId()) {
12528 switch (rhs.selectionId()) {
12529 case Class::SELECTION_ID_SELECTION1:
12530 return lhs.selection1() == rhs.selection1();
12531 case Class::SELECTION_ID_SELECTION2:
12532 return lhs.selection2() == rhs.selection2();
12533 case Class::SELECTION_ID_SELECTION3:
12534 return lhs.selection3() == rhs.selection3();
12535 case Class::SELECTION_ID_SELECTION4:
12536 return lhs.selection4() == rhs.selection4();
12537 default:
12538 BSLS_ASSERT(Class::SELECTION_ID_UNDEFINED == rhs.selectionId());
12539 return true;
12540 }
12541 }
12542 else {
12543 return false;
12544 }
12545}
12546
12547inline
12548bool balb::operator!=(
12551{
12552 return !(lhs == rhs);
12553}
12554
12555inline
12556bsl::ostream& balb::operator<<(
12557 bsl::ostream& stream,
12559{
12560 return rhs.print(stream, 0, -1);
12561}
12562
12563
12564inline
12565bool balb::operator==(
12566 const balb::Choice1& lhs,
12567 const balb::Choice1& rhs)
12568{
12569 typedef balb::Choice1 Class;
12570 if (lhs.selectionId() == rhs.selectionId()) {
12571 switch (rhs.selectionId()) {
12572 case Class::SELECTION_ID_SELECTION1:
12573 return lhs.selection1() == rhs.selection1();
12574 case Class::SELECTION_ID_SELECTION2:
12575 return lhs.selection2() == rhs.selection2();
12576 case Class::SELECTION_ID_SELECTION3:
12577 return lhs.selection3() == rhs.selection3();
12578 case Class::SELECTION_ID_SELECTION4:
12579 return lhs.selection4() == rhs.selection4();
12580 default:
12581 BSLS_ASSERT(Class::SELECTION_ID_UNDEFINED == rhs.selectionId());
12582 return true;
12583 }
12584 }
12585 else {
12586 return false;
12587 }
12588}
12589
12590inline
12591bool balb::operator!=(
12592 const balb::Choice1& lhs,
12593 const balb::Choice1& rhs)
12594{
12595 return !(lhs == rhs);
12596}
12597
12598inline
12599bsl::ostream& balb::operator<<(
12600 bsl::ostream& stream,
12601 const balb::Choice1& rhs)
12602{
12603 return rhs.print(stream, 0, -1);
12604}
12605
12606
12607inline
12608bool balb::operator==(
12609 const balb::Choice2& lhs,
12610 const balb::Choice2& rhs)
12611{
12612 typedef balb::Choice2 Class;
12613 if (lhs.selectionId() == rhs.selectionId()) {
12614 switch (rhs.selectionId()) {
12615 case Class::SELECTION_ID_SELECTION1:
12616 return lhs.selection1() == rhs.selection1();
12617 case Class::SELECTION_ID_SELECTION2:
12618 return lhs.selection2() == rhs.selection2();
12619 case Class::SELECTION_ID_SELECTION3:
12620 return lhs.selection3() == rhs.selection3();
12621 case Class::SELECTION_ID_SELECTION4:
12622 return lhs.selection4() == rhs.selection4();
12623 default:
12624 BSLS_ASSERT(Class::SELECTION_ID_UNDEFINED == rhs.selectionId());
12625 return true;
12626 }
12627 }
12628 else {
12629 return false;
12630 }
12631}
12632
12633inline
12634bool balb::operator!=(
12635 const balb::Choice2& lhs,
12636 const balb::Choice2& rhs)
12637{
12638 return !(lhs == rhs);
12639}
12640
12641inline
12642bsl::ostream& balb::operator<<(
12643 bsl::ostream& stream,
12644 const balb::Choice2& rhs)
12645{
12646 return rhs.print(stream, 0, -1);
12647}
12648
12649
12650inline
12651bool balb::operator==(
12652 const balb::Sequence4& lhs,
12653 const balb::Sequence4& rhs)
12654{
12655 return lhs.element1() == rhs.element1()
12656 && lhs.element2() == rhs.element2()
12657 && lhs.element3() == rhs.element3()
12658 && lhs.element4() == rhs.element4()
12659 && lhs.element5() == rhs.element5()
12660 && lhs.element6() == rhs.element6()
12661 && lhs.element7() == rhs.element7()
12662 && lhs.element8() == rhs.element8()
12663 && lhs.element9() == rhs.element9()
12664 && lhs.element10() == rhs.element10()
12665 && lhs.element11() == rhs.element11()
12666 && lhs.element12() == rhs.element12()
12667 && lhs.element13() == rhs.element13()
12668 && lhs.element14() == rhs.element14()
12669 && lhs.element15() == rhs.element15()
12670 && lhs.element16() == rhs.element16()
12671 && lhs.element17() == rhs.element17()
12672 && lhs.element18() == rhs.element18()
12673 && lhs.element19() == rhs.element19();
12674}
12675
12676inline
12677bool balb::operator!=(
12678 const balb::Sequence4& lhs,
12679 const balb::Sequence4& rhs)
12680{
12681 return lhs.element1() != rhs.element1()
12682 || lhs.element2() != rhs.element2()
12683 || lhs.element3() != rhs.element3()
12684 || lhs.element4() != rhs.element4()
12685 || lhs.element5() != rhs.element5()
12686 || lhs.element6() != rhs.element6()
12687 || lhs.element7() != rhs.element7()
12688 || lhs.element8() != rhs.element8()
12689 || lhs.element9() != rhs.element9()
12690 || lhs.element10() != rhs.element10()
12691 || lhs.element11() != rhs.element11()
12692 || lhs.element12() != rhs.element12()
12693 || lhs.element13() != rhs.element13()
12694 || lhs.element14() != rhs.element14()
12695 || lhs.element15() != rhs.element15()
12696 || lhs.element16() != rhs.element16()
12697 || lhs.element17() != rhs.element17()
12698 || lhs.element18() != rhs.element18()
12699 || lhs.element19() != rhs.element19();
12700}
12701
12702inline
12703bsl::ostream& balb::operator<<(
12704 bsl::ostream& stream,
12705 const balb::Sequence4& rhs)
12706{
12707 return rhs.print(stream, 0, -1);
12708}
12709
12710
12711inline
12712bool balb::operator==(
12713 const balb::Sequence1& lhs,
12714 const balb::Sequence1& rhs)
12715{
12716 return lhs.element1() == rhs.element1()
12717 && lhs.element2() == rhs.element2()
12718 && lhs.element3() == rhs.element3()
12719 && lhs.element4() == rhs.element4()
12720 && lhs.element5() == rhs.element5();
12721}
12722
12723inline
12724bool balb::operator!=(
12725 const balb::Sequence1& lhs,
12726 const balb::Sequence1& rhs)
12727{
12728 return lhs.element1() != rhs.element1()
12729 || lhs.element2() != rhs.element2()
12730 || lhs.element3() != rhs.element3()
12731 || lhs.element4() != rhs.element4()
12732 || lhs.element5() != rhs.element5();
12733}
12734
12735inline
12736bsl::ostream& balb::operator<<(
12737 bsl::ostream& stream,
12738 const balb::Sequence1& rhs)
12739{
12740 return rhs.print(stream, 0, -1);
12741}
12742
12743
12744inline
12745bool balb::operator==(
12746 const balb::Sequence2& lhs,
12747 const balb::Sequence2& rhs)
12748{
12749 return lhs.element1() == rhs.element1()
12750 && lhs.element2() == rhs.element2()
12751 && lhs.element3() == rhs.element3()
12752 && lhs.element4() == rhs.element4()
12753 && lhs.element5() == rhs.element5();
12754}
12755
12756inline
12757bool balb::operator!=(
12758 const balb::Sequence2& lhs,
12759 const balb::Sequence2& rhs)
12760{
12761 return lhs.element1() != rhs.element1()
12762 || lhs.element2() != rhs.element2()
12763 || lhs.element3() != rhs.element3()
12764 || lhs.element4() != rhs.element4()
12765 || lhs.element5() != rhs.element5();
12766}
12767
12768inline
12769bsl::ostream& balb::operator<<(
12770 bsl::ostream& stream,
12771 const balb::Sequence2& rhs)
12772{
12773 return rhs.print(stream, 0, -1);
12774}
12775
12776
12777inline
12778bool balb::operator==(
12781{
12783 if (lhs.selectionId() == rhs.selectionId()) {
12784 switch (rhs.selectionId()) {
12785 case Class::SELECTION_ID_SELECTION7:
12786 return lhs.selection7() == rhs.selection7();
12787 case Class::SELECTION_ID_SELECTION8:
12788 return lhs.selection8() == rhs.selection8();
12789 default:
12790 BSLS_ASSERT(Class::SELECTION_ID_UNDEFINED == rhs.selectionId());
12791 return true;
12792 }
12793 }
12794 else {
12795 return false;
12796 }
12797}
12798
12799inline
12800bool balb::operator!=(
12803{
12804 return !(lhs == rhs);
12805}
12806
12807inline
12808bsl::ostream& balb::operator<<(
12809 bsl::ostream& stream,
12811{
12812 return rhs.print(stream, 0, -1);
12813}
12814
12815
12816inline
12817bool balb::operator==(
12818 const balb::SequenceWithAnonymity& lhs,
12819 const balb::SequenceWithAnonymity& rhs)
12820{
12821 return lhs.choice() == rhs.choice()
12822 && lhs.choice1() == rhs.choice1()
12823 && lhs.choice2() == rhs.choice2()
12824 && lhs.element4() == rhs.element4();
12825}
12826
12827inline
12828bool balb::operator!=(
12829 const balb::SequenceWithAnonymity& lhs,
12830 const balb::SequenceWithAnonymity& rhs)
12831{
12832 return lhs.choice() != rhs.choice()
12833 || lhs.choice1() != rhs.choice1()
12834 || lhs.choice2() != rhs.choice2()
12835 || lhs.element4() != rhs.element4();
12836}
12837
12838inline
12839bsl::ostream& balb::operator<<(
12840 bsl::ostream& stream,
12841 const balb::SequenceWithAnonymity& rhs)
12842{
12843 return rhs.print(stream, 0, -1);
12844}
12845
12846
12847inline
12848bool balb::operator==(
12849 const balb::FeatureTestMessage& lhs,
12850 const balb::FeatureTestMessage& rhs)
12851{
12852 typedef balb::FeatureTestMessage Class;
12853 if (lhs.selectionId() == rhs.selectionId()) {
12854 switch (rhs.selectionId()) {
12855 case Class::SELECTION_ID_SELECTION1:
12856 return lhs.selection1() == rhs.selection1();
12857 case Class::SELECTION_ID_SELECTION2:
12858 return lhs.selection2() == rhs.selection2();
12859 case Class::SELECTION_ID_SELECTION3:
12860 return lhs.selection3() == rhs.selection3();
12861 case Class::SELECTION_ID_SELECTION4:
12862 return lhs.selection4() == rhs.selection4();
12863 case Class::SELECTION_ID_SELECTION5:
12864 return lhs.selection5() == rhs.selection5();
12865 case Class::SELECTION_ID_SELECTION6:
12866 return lhs.selection6() == rhs.selection6();
12867 case Class::SELECTION_ID_SELECTION7:
12868 return lhs.selection7() == rhs.selection7();
12869 case Class::SELECTION_ID_SELECTION8:
12870 return lhs.selection8() == rhs.selection8();
12871 case Class::SELECTION_ID_SELECTION9:
12872 return lhs.selection9() == rhs.selection9();
12873 case Class::SELECTION_ID_SELECTION10:
12874 return lhs.selection10() == rhs.selection10();
12875 case Class::SELECTION_ID_SELECTION11:
12876 return lhs.selection11() == rhs.selection11();
12877 default:
12878 BSLS_ASSERT(Class::SELECTION_ID_UNDEFINED == rhs.selectionId());
12879 return true;
12880 }
12881 }
12882 else {
12883 return false;
12884 }
12885}
12886
12887inline
12888bool balb::operator!=(
12889 const balb::FeatureTestMessage& lhs,
12890 const balb::FeatureTestMessage& rhs)
12891{
12892 return !(lhs == rhs);
12893}
12894
12895inline
12896bsl::ostream& balb::operator<<(
12897 bsl::ostream& stream,
12898 const balb::FeatureTestMessage& rhs)
12899{
12900 return rhs.print(stream, 0, -1);
12901}
12902
12903
12904inline
12905bool balb::operator==(
12906 const balb::Request& lhs,
12907 const balb::Request& rhs)
12908{
12909 typedef balb::Request Class;
12910 if (lhs.selectionId() == rhs.selectionId()) {
12911 switch (rhs.selectionId()) {
12912 case Class::SELECTION_ID_SIMPLE_REQUEST:
12913 return lhs.simpleRequest() == rhs.simpleRequest();
12914 case Class::SELECTION_ID_FEATURE_REQUEST:
12915 return lhs.featureRequest() == rhs.featureRequest();
12916 default:
12917 BSLS_ASSERT(Class::SELECTION_ID_UNDEFINED == rhs.selectionId());
12918 return true;
12919 }
12920 }
12921 else {
12922 return false;
12923 }
12924}
12925
12926inline
12927bool balb::operator!=(
12928 const balb::Request& lhs,
12929 const balb::Request& rhs)
12930{
12931 return !(lhs == rhs);
12932}
12933
12934inline
12935bsl::ostream& balb::operator<<(
12936 bsl::ostream& stream,
12937 const balb::Request& rhs)
12938{
12939 return rhs.print(stream, 0, -1);
12940}
12941
12942
12943inline
12944bool balb::operator==(
12945 const balb::Response& lhs,
12946 const balb::Response& rhs)
12947{
12948 typedef balb::Response Class;
12949 if (lhs.selectionId() == rhs.selectionId()) {
12950 switch (rhs.selectionId()) {
12951 case Class::SELECTION_ID_RESPONSE_DATA:
12952 return lhs.responseData() == rhs.responseData();
12953 case Class::SELECTION_ID_FEATURE_RESPONSE:
12954 return lhs.featureResponse() == rhs.featureResponse();
12955 default:
12956 BSLS_ASSERT(Class::SELECTION_ID_UNDEFINED == rhs.selectionId());
12957 return true;
12958 }
12959 }
12960 else {
12961 return false;
12962 }
12963}
12964
12965inline
12966bool balb::operator!=(
12967 const balb::Response& lhs,
12968 const balb::Response& rhs)
12969{
12970 return !(lhs == rhs);
12971}
12972
12973inline
12974bsl::ostream& balb::operator<<(
12975 bsl::ostream& stream,
12976 const balb::Response& rhs)
12977{
12978 return rhs.print(stream, 0, -1);
12979}
12980
12981
12982#endif
12983
12984// GENERATED BY BLP_BAS_CODEGEN_2018.06.17.1 Wed Jun 27 13:12:23 2018
12985// USING bas_codegen.pl -mmsg -Ctestmessages --noAggregateConversion balb_testmessages.xsd
12986// ----------------------------------------------------------------------------
12987// NOTICE:
12988// Copyright (C) Bloomberg L.P., 2018
12989// All Rights Reserved.
12990// Property of Bloomberg L.P. (BLP)
12991// This software is made available solely pursuant to the
12992// terms of a BLP license agreement which governs its use.
12993// ------------------------------ END-OF-FILE ---------------------------------
12994
12995/** @} */
12996/** @} */
12997/** @} */
Definition balb_testmessages.h:3327
Choice1(const Choice1 &original, bslma::Allocator *basicAllocator=0)
double & selection2()
Definition balb_testmessages.h:9272
Sequence4 & makeSelection3()
Choice2 & selection4()
Definition balb_testmessages.h:9286
int selectionId() const
Definition balb_testmessages.h:9325
int & makeSelection1()
bool isUndefinedValue() const
Definition balb_testmessages.h:9405
int makeSelection(int selectionId)
Choice1 & operator=(const Choice1 &rhs)
Assign to this object the value of the specified rhs object.
Sequence4 * d_selection3
Definition balb_testmessages.h:3333
bool isSelection3Value() const
Definition balb_testmessages.h:9393
@ SELECTION_ID_SELECTION2
Definition balb_testmessages.h:3346
@ SELECTION_ID_SELECTION3
Definition balb_testmessages.h:3347
@ SELECTION_ID_UNDEFINED
Definition balb_testmessages.h:3344
@ SELECTION_ID_SELECTION1
Definition balb_testmessages.h:3345
@ SELECTION_ID_SELECTION4
Definition balb_testmessages.h:3348
const char * selectionName() const
Return the symbolic name of the current selection of this object.
~Choice1()
Destroy this object.
Definition balb_testmessages.h:9189
@ NUM_SELECTIONS
Definition balb_testmessages.h:3352
Choice2 * d_selection4
Definition balb_testmessages.h:3334
Choice1(bslma::Allocator *basicAllocator=0)
Definition balb_testmessages.h:9182
@ SELECTION_INDEX_SELECTION2
Definition balb_testmessages.h:3357
@ SELECTION_INDEX_SELECTION4
Definition balb_testmessages.h:3359
@ SELECTION_INDEX_SELECTION1
Definition balb_testmessages.h:3356
@ SELECTION_INDEX_SELECTION3
Definition balb_testmessages.h:3358
bool isSelection4Value() const
Definition balb_testmessages.h:9399
static const char CLASS_NAME[]
Definition balb_testmessages.h:3363
int manipulateSelection(MANIPULATOR &manipulator)
Definition balb_testmessages.h:9243
double & makeSelection2()
Sequence4 & makeSelection3(const Sequence4 &value)
bool isSelection2Value() const
Definition balb_testmessages.h:9387
int accessSelection(ACCESSOR &accessor) const
Definition balb_testmessages.h:9331
bsls::ObjectBuffer< double > d_selection2
Definition balb_testmessages.h:3332
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
static const bdlat_SelectionInfo SELECTION_INFO_ARRAY[]
Definition balb_testmessages.h:3365
Choice2 & makeSelection4(const Choice2 &value)
bool isSelection1Value() const
Definition balb_testmessages.h:9381
Sequence4 & selection3()
Definition balb_testmessages.h:9279
bsls::ObjectBuffer< int > d_selection1
Definition balb_testmessages.h:3331
int makeSelection(const char *name, int nameLength)
static int maxSupportedBdexVersion()
Definition balb_testmessages.h:9175
int & selection1()
Definition balb_testmessages.h:9265
double & makeSelection2(double value)
int & makeSelection1(int value)
static const bdlat_SelectionInfo * lookupSelectionInfo(int id)
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition balb_testmessages.h:9196
Choice2 & makeSelection4()
static const bdlat_SelectionInfo * lookupSelectionInfo(const char *name, int nameLength)
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition balb_testmessages.h:9294
Definition balb_testmessages.h:3611
bsls::ObjectBuffer< bsl::string > d_selection2
Definition balb_testmessages.h:3616
bool & makeSelection1(bool value)
bsls::ObjectBuffer< bool > d_selection1
Definition balb_testmessages.h:3615
int manipulateSelection(MANIPULATOR &manipulator)
Definition balb_testmessages.h:9485
bsl::string & selection2()
Definition balb_testmessages.h:9514
bool & selection1()
Definition balb_testmessages.h:9507
bool isSelection1Value() const
Definition balb_testmessages.h:9623
Choice1 & makeSelection3(const Choice1 &value)
static const bdlat_SelectionInfo SELECTION_INFO_ARRAY[]
Definition balb_testmessages.h:3649
@ SELECTION_INDEX_SELECTION1
Definition balb_testmessages.h:3640
@ SELECTION_INDEX_SELECTION3
Definition balb_testmessages.h:3642
@ SELECTION_INDEX_SELECTION2
Definition balb_testmessages.h:3641
@ SELECTION_INDEX_SELECTION4
Definition balb_testmessages.h:3643
bsl::string & makeSelection2()
bool & makeSelection1()
~Choice2()
Destroy this object.
Definition balb_testmessages.h:9431
Choice1 & selection3()
Definition balb_testmessages.h:9521
int selectionId() const
Definition balb_testmessages.h:9567
bool isSelection3Value() const
Definition balb_testmessages.h:9635
Choice2 & operator=(const Choice2 &rhs)
Assign to this object the value of the specified rhs object.
static const char CLASS_NAME[]
Definition balb_testmessages.h:3647
int accessSelection(ACCESSOR &accessor) const
Definition balb_testmessages.h:9573
bool isUndefinedValue() const
Definition balb_testmessages.h:9647
Choice1 * d_selection3
Definition balb_testmessages.h:3617
unsigned int & makeSelection4()
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition balb_testmessages.h:9536
unsigned int & makeSelection4(unsigned int value)
Choice2(const Choice2 &original, bslma::Allocator *basicAllocator=0)
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
int makeSelection(const char *name, int nameLength)
bool isSelection2Value() const
Definition balb_testmessages.h:9629
Choice1 & makeSelection3()
const char * selectionName() const
Return the symbolic name of the current selection of this object.
@ SELECTION_ID_SELECTION4
Definition balb_testmessages.h:3632
@ SELECTION_ID_SELECTION1
Definition balb_testmessages.h:3629
@ SELECTION_ID_UNDEFINED
Definition balb_testmessages.h:3628
@ SELECTION_ID_SELECTION2
Definition balb_testmessages.h:3630
@ SELECTION_ID_SELECTION3
Definition balb_testmessages.h:3631
Choice2(bslma::Allocator *basicAllocator=0)
Definition balb_testmessages.h:9424
static const bdlat_SelectionInfo * lookupSelectionInfo(const char *name, int nameLength)
bool isSelection4Value() const
Definition balb_testmessages.h:9641
static int maxSupportedBdexVersion()
Definition balb_testmessages.h:9417
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition balb_testmessages.h:9438
unsigned int & selection4()
Definition balb_testmessages.h:9528
int makeSelection(int selectionId)
@ NUM_SELECTIONS
Definition balb_testmessages.h:3636
static const bdlat_SelectionInfo * lookupSelectionInfo(int id)
bsls::ObjectBuffer< unsigned int > d_selection4
Definition balb_testmessages.h:3618
bsl::string & makeSelection2(const bsl::string &value)
Definition balb_testmessages.h:2759
CustomString & makeSelection3()
unsigned char & makeSelection2(unsigned char value)
static const char CLASS_NAME[]
Definition balb_testmessages.h:2795
static const bdlat_SelectionInfo * lookupSelectionInfo(int id)
bool isUndefinedValue() const
Definition balb_testmessages.h:8921
Choice3(const Choice3 &original, bslma::Allocator *basicAllocator=0)
Choice3(bslma::Allocator *basicAllocator=0)
Definition balb_testmessages.h:8698
bool isSelection2Value() const
Definition balb_testmessages.h:8903
bsls::ObjectBuffer< CustomInt > d_selection4
Definition balb_testmessages.h:2766
static int maxSupportedBdexVersion()
Definition balb_testmessages.h:8691
CustomString & makeSelection3(const CustomString &value)
@ NUM_SELECTIONS
Definition balb_testmessages.h:2784
bool isSelection4Value() const
Definition balb_testmessages.h:8915
CustomInt & makeSelection4()
int accessSelection(ACCESSOR &accessor) const
Definition balb_testmessages.h:8847
CustomInt & selection4()
Definition balb_testmessages.h:8802
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition balb_testmessages.h:8810
CustomInt & makeSelection4(const CustomInt &value)
bool isSelection3Value() const
Definition balb_testmessages.h:8909
bsls::ObjectBuffer< Sequence6 > d_selection1
Definition balb_testmessages.h:2763
int makeSelection(int selectionId)
bsls::ObjectBuffer< CustomString > d_selection3
Definition balb_testmessages.h:2765
bsls::ObjectBuffer< unsigned char > d_selection2
Definition balb_testmessages.h:2764
const char * selectionName() const
Return the symbolic name of the current selection of this object.
int manipulateSelection(MANIPULATOR &manipulator)
Definition balb_testmessages.h:8759
@ SELECTION_INDEX_SELECTION4
Definition balb_testmessages.h:2791
@ SELECTION_INDEX_SELECTION2
Definition balb_testmessages.h:2789
@ SELECTION_INDEX_SELECTION3
Definition balb_testmessages.h:2790
@ SELECTION_INDEX_SELECTION1
Definition balb_testmessages.h:2788
Choice3 & operator=(const Choice3 &rhs)
Assign to this object the value of the specified rhs object.
int makeSelection(const char *name, int nameLength)
static const bdlat_SelectionInfo SELECTION_INFO_ARRAY[]
Definition balb_testmessages.h:2797
unsigned char & makeSelection2()
@ SELECTION_ID_SELECTION4
Definition balb_testmessages.h:2780
@ SELECTION_ID_SELECTION3
Definition balb_testmessages.h:2779
@ SELECTION_ID_UNDEFINED
Definition balb_testmessages.h:2776
@ SELECTION_ID_SELECTION1
Definition balb_testmessages.h:2777
@ SELECTION_ID_SELECTION2
Definition balb_testmessages.h:2778
Sequence6 & makeSelection1()
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition balb_testmessages.h:8712
Sequence6 & makeSelection1(const Sequence6 &value)
int selectionId() const
Definition balb_testmessages.h:8841
unsigned char & selection2()
Definition balb_testmessages.h:8788
static const bdlat_SelectionInfo * lookupSelectionInfo(const char *name, int nameLength)
~Choice3()
Destroy this object.
Definition balb_testmessages.h:8705
Sequence6 & selection1()
Definition balb_testmessages.h:8781
bool isSelection1Value() const
Definition balb_testmessages.h:8897
CustomString & selection3()
Definition balb_testmessages.h:8795
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
Definition balb_testmessages.h:133
bsls::ObjectBuffer< bsl::vector< bsl::string > > d_selection1
Definition balb_testmessages.h:137
int selectionId() const
Definition balb_testmessages.h:6358
bool isSelection1Value() const
Definition balb_testmessages.h:6394
static const char CLASS_NAME[]
Definition balb_testmessages.h:163
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition balb_testmessages.h:6335
static const bdlat_SelectionInfo * lookupSelectionInfo(const char *name, int nameLength)
static const bdlat_SelectionInfo SELECTION_INFO_ARRAY[]
Definition balb_testmessages.h:165
bool isSelection2Value() const
Definition balb_testmessages.h:6400
bsl::vector< bsl::string > & selection1()
Definition balb_testmessages.h:6320
const char * selectionName() const
Return the symbolic name of the current selection of this object.
Choice4(const Choice4 &original, bslma::Allocator *basicAllocator=0)
int accessSelection(ACCESSOR &accessor) const
Definition balb_testmessages.h:6364
Choice4(bslma::Allocator *basicAllocator=0)
Definition balb_testmessages.h:6253
int makeSelection(const char *name, int nameLength)
bsls::ObjectBuffer< int > d_selection2
Definition balb_testmessages.h:138
@ SELECTION_ID_UNDEFINED
Definition balb_testmessages.h:148
@ SELECTION_ID_SELECTION2
Definition balb_testmessages.h:150
@ SELECTION_ID_SELECTION1
Definition balb_testmessages.h:149
@ NUM_SELECTIONS
Definition balb_testmessages.h:154
int makeSelection(int selectionId)
@ SELECTION_INDEX_SELECTION1
Definition balb_testmessages.h:158
@ SELECTION_INDEX_SELECTION2
Definition balb_testmessages.h:159
int manipulateSelection(MANIPULATOR &manipulator)
Definition balb_testmessages.h:6304
int & makeSelection2()
int & makeSelection2(int value)
bool isUndefinedValue() const
Definition balb_testmessages.h:6406
Choice4 & operator=(const Choice4 &rhs)
Assign to this object the value of the specified rhs object.
static int maxSupportedBdexVersion()
Definition balb_testmessages.h:6246
static const bdlat_SelectionInfo * lookupSelectionInfo(int id)
bsl::vector< bsl::string > & makeSelection1(const bsl::vector< bsl::string > &value)
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
bsl::vector< bsl::string > & makeSelection1()
~Choice4()
Destroy this object.
Definition balb_testmessages.h:6260
int & selection2()
Definition balb_testmessages.h:6327
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition balb_testmessages.h:6267
Definition balb_testmessages.h:1619
Choice5 & operator=(const Choice5 &rhs)
Assign to this object the value of the specified rhs object.
bool isSelection1Value() const
Definition balb_testmessages.h:7491
~Choice5()
Destroy this object.
Definition balb_testmessages.h:7357
static int maxSupportedBdexVersion()
Definition balb_testmessages.h:7343
static const bdlat_SelectionInfo * lookupSelectionInfo(const char *name, int nameLength)
int selectionId() const
Definition balb_testmessages.h:7455
int & selection2()
Definition balb_testmessages.h:7424
const char * selectionName() const
Return the symbolic name of the current selection of this object.
bool isUndefinedValue() const
Definition balb_testmessages.h:7503
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition balb_testmessages.h:7364
bsls::ObjectBuffer< Choice4 > d_selection1
Definition balb_testmessages.h:1623
@ SELECTION_INDEX_SELECTION1
Definition balb_testmessages.h:1644
@ SELECTION_INDEX_SELECTION2
Definition balb_testmessages.h:1645
static const char CLASS_NAME[]
Definition balb_testmessages.h:1649
Choice5(bslma::Allocator *basicAllocator=0)
Definition balb_testmessages.h:7350
int accessSelection(ACCESSOR &accessor) const
Definition balb_testmessages.h:7461
Choice4 & makeSelection1(const Choice4 &value)
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
static const bdlat_SelectionInfo SELECTION_INFO_ARRAY[]
Definition balb_testmessages.h:1651
static const bdlat_SelectionInfo * lookupSelectionInfo(int id)
bool isSelection2Value() const
Definition balb_testmessages.h:7497
int manipulateSelection(MANIPULATOR &manipulator)
Definition balb_testmessages.h:7401
int & makeSelection2(int value)
@ NUM_SELECTIONS
Definition balb_testmessages.h:1640
int & makeSelection2()
Choice5(const Choice5 &original, bslma::Allocator *basicAllocator=0)
int makeSelection(int selectionId)
@ SELECTION_ID_UNDEFINED
Definition balb_testmessages.h:1634
@ SELECTION_ID_SELECTION1
Definition balb_testmessages.h:1635
@ SELECTION_ID_SELECTION2
Definition balb_testmessages.h:1636
bsls::ObjectBuffer< int > d_selection2
Definition balb_testmessages.h:1624
Choice4 & selection1()
Definition balb_testmessages.h:7417
Choice4 & makeSelection1()
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition balb_testmessages.h:7432
int makeSelection(const char *name, int nameLength)
Definition balb_testmessages.h:367
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition balb_testmessages.h:6486
int BaseType
Definition balb_testmessages.h:378
static int checkRestrictions(const int &value)
int maxSupportedBdexVersion() const
Definition balb_testmessages.h:6492
~CustomInt()
Destroy this object.
Definition balb_testmessages.h:6437
static const char CLASS_NAME[]
Definition balb_testmessages.h:381
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
Definition balb_testmessages.h:6498
const int & toInt() const
Convert this value to int.
Definition balb_testmessages.h:6506
friend bool operator!=(const CustomInt &lhs, const CustomInt &rhs)
CustomInt & operator=(const CustomInt &rhs)
Assign to this object the value of the specified rhs object.
Definition balb_testmessages.h:6443
void reset()
Definition balb_testmessages.h:6468
friend bool operator==(const CustomInt &lhs, const CustomInt &rhs)
CustomInt()
Create an object of type CustomInt having the default value.
Definition balb_testmessages.h:6418
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition balb_testmessages.h:6450
int fromInt(const int &value)
Definition balb_testmessages.h:6474
Definition balb_testmessages.h:501
~CustomString()
Destroy this object.
Definition balb_testmessages.h:6538
friend bool operator!=(const CustomString &lhs, const CustomString &rhs)
static int checkRestrictions(const bsl::string &value)
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
Definition balb_testmessages.h:6599
const bsl::string & toString() const
Convert this value to bsl::string.
Definition balb_testmessages.h:6607
static const char CLASS_NAME[]
Definition balb_testmessages.h:515
int maxSupportedBdexVersion() const
Definition balb_testmessages.h:6593
void reset()
Definition balb_testmessages.h:6569
bsl::string BaseType
Definition balb_testmessages.h:512
CustomString(bslma::Allocator *basicAllocator=0)
Definition balb_testmessages.h:6519
int fromString(const bsl::string &value)
Definition balb_testmessages.h:6575
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition balb_testmessages.h:6551
friend bool operator==(const CustomString &lhs, const CustomString &rhs)
CustomString & operator=(const CustomString &rhs)
Assign to this object the value of the specified rhs object.
Definition balb_testmessages.h:6544
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition balb_testmessages.h:6587
Definition balb_testmessages.h:5289
Enumerated::Value & selection7()
Definition balb_testmessages.h:11457
bsls::ObjectBuffer< Choice3 > d_selection8
Definition balb_testmessages.h:5300
Enumerated::Value & makeSelection7(Enumerated::Value value)
bsls::ObjectBuffer< VoidSequence > d_selection9
Definition balb_testmessages.h:5301
bool isSelection3Value() const
Definition balb_testmessages.h:11690
int makeSelection(const char *name, int nameLength)
@ NUM_SELECTIONS
Definition balb_testmessages.h:5328
int makeSelection(int selectionId)
bool isSelection7Value() const
Definition balb_testmessages.h:11714
SequenceWithAnonymity & makeSelection11(const SequenceWithAnonymity &value)
const char * selectionName() const
Return the symbolic name of the current selection of this object.
int accessSelection(ACCESSOR &accessor) const
Definition balb_testmessages.h:11558
bdlt::DatetimeTz & makeSelection5()
Sequence1 & selection1()
Definition balb_testmessages.h:11415
Sequence3 * d_selection4
Definition balb_testmessages.h:5296
Choice3 & selection8()
Definition balb_testmessages.h:11464
Sequence3 & selection4()
Definition balb_testmessages.h:11436
UnsignedSequence & makeSelection10(const UnsignedSequence &value)
bsls::ObjectBuffer< Enumerated::Value > d_selection7
Definition balb_testmessages.h:5299
FeatureTestMessage(bslma::Allocator *basicAllocator=0)
Definition balb_testmessages.h:11276
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition balb_testmessages.h:11290
bsl::vector< char > & makeSelection2()
int selectionId() const
Definition balb_testmessages.h:11552
static const bdlat_SelectionInfo * lookupSelectionInfo(const char *name, int nameLength)
VoidSequence & selection9()
Definition balb_testmessages.h:11471
bsls::ObjectBuffer< Sequence1 > d_selection1
Definition balb_testmessages.h:5293
Enumerated::Value & makeSelection7()
Sequence3 & makeSelection4(const Sequence3 &value)
VoidSequence & makeSelection9(const VoidSequence &value)
static const char CLASS_NAME[]
Definition balb_testmessages.h:5346
static const bdlat_SelectionInfo SELECTION_INFO_ARRAY[]
Definition balb_testmessages.h:5348
CustomString & selection6()
Definition balb_testmessages.h:11450
bdlt::DatetimeTz & makeSelection5(const bdlt::DatetimeTz &value)
bool isSelection8Value() const
Definition balb_testmessages.h:11720
bool isSelection6Value() const
Definition balb_testmessages.h:11708
Sequence1 & makeSelection1(const Sequence1 &value)
Sequence1 & makeSelection1()
bsl::vector< char > & makeSelection2(const bsl::vector< char > &value)
Sequence2 & selection3()
Definition balb_testmessages.h:11429
Choice3 & makeSelection8(const Choice3 &value)
bsls::ObjectBuffer< Sequence2 > d_selection3
Definition balb_testmessages.h:5295
bool isUndefinedValue() const
Definition balb_testmessages.h:11744
bool isSelection1Value() const
Definition balb_testmessages.h:11678
@ SELECTION_INDEX_SELECTION5
Definition balb_testmessages.h:5336
@ SELECTION_INDEX_SELECTION9
Definition balb_testmessages.h:5340
@ SELECTION_INDEX_SELECTION2
Definition balb_testmessages.h:5333
@ SELECTION_INDEX_SELECTION6
Definition balb_testmessages.h:5337
@ SELECTION_INDEX_SELECTION8
Definition balb_testmessages.h:5339
@ SELECTION_INDEX_SELECTION10
Definition balb_testmessages.h:5341
@ SELECTION_INDEX_SELECTION3
Definition balb_testmessages.h:5334
@ SELECTION_INDEX_SELECTION1
Definition balb_testmessages.h:5332
@ SELECTION_INDEX_SELECTION11
Definition balb_testmessages.h:5342
@ SELECTION_INDEX_SELECTION7
Definition balb_testmessages.h:5338
@ SELECTION_INDEX_SELECTION4
Definition balb_testmessages.h:5335
bsls::ObjectBuffer< bdlt::DatetimeTz > d_selection5
Definition balb_testmessages.h:5297
static int maxSupportedBdexVersion()
Definition balb_testmessages.h:11269
CustomString & makeSelection6()
bool isSelection11Value() const
Definition balb_testmessages.h:11738
FeatureTestMessage & operator=(const FeatureTestMessage &rhs)
Assign to this object the value of the specified rhs object.
bdlt::DatetimeTz & selection5()
Definition balb_testmessages.h:11443
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
bool isSelection2Value() const
Definition balb_testmessages.h:11684
CustomString & makeSelection6(const CustomString &value)
bsls::ObjectBuffer< bsl::vector< char > > d_selection2
Definition balb_testmessages.h:5294
Sequence3 & makeSelection4()
Sequence2 & makeSelection3(const Sequence2 &value)
SequenceWithAnonymity & makeSelection11()
bool isSelection9Value() const
Definition balb_testmessages.h:11726
UnsignedSequence & makeSelection10()
bool isSelection10Value() const
Definition balb_testmessages.h:11732
bsls::ObjectBuffer< UnsignedSequence > d_selection10
Definition balb_testmessages.h:5302
int manipulateSelection(MANIPULATOR &manipulator)
Definition balb_testmessages.h:11372
@ SELECTION_ID_UNDEFINED
Definition balb_testmessages.h:5313
@ SELECTION_ID_SELECTION7
Definition balb_testmessages.h:5320
@ SELECTION_ID_SELECTION9
Definition balb_testmessages.h:5322
@ SELECTION_ID_SELECTION6
Definition balb_testmessages.h:5319
@ SELECTION_ID_SELECTION3
Definition balb_testmessages.h:5316
@ SELECTION_ID_SELECTION5
Definition balb_testmessages.h:5318
@ SELECTION_ID_SELECTION11
Definition balb_testmessages.h:5324
@ SELECTION_ID_SELECTION8
Definition balb_testmessages.h:5321
@ SELECTION_ID_SELECTION2
Definition balb_testmessages.h:5315
@ SELECTION_ID_SELECTION1
Definition balb_testmessages.h:5314
@ SELECTION_ID_SELECTION4
Definition balb_testmessages.h:5317
@ SELECTION_ID_SELECTION10
Definition balb_testmessages.h:5323
bool isSelection4Value() const
Definition balb_testmessages.h:11696
bool isSelection5Value() const
Definition balb_testmessages.h:11702
Sequence2 & makeSelection3()
VoidSequence & makeSelection9()
bsl::vector< char > & selection2()
Definition balb_testmessages.h:11422
UnsignedSequence & selection10()
Definition balb_testmessages.h:11478
~FeatureTestMessage()
Destroy this object.
Definition balb_testmessages.h:11283
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition balb_testmessages.h:11493
bsls::ObjectBuffer< CustomString > d_selection6
Definition balb_testmessages.h:5298
bsls::ObjectBuffer< SequenceWithAnonymity > d_selection11
Definition balb_testmessages.h:5303
SequenceWithAnonymity & selection11()
Definition balb_testmessages.h:11485
static const bdlat_SelectionInfo * lookupSelectionInfo(int id)
FeatureTestMessage(const FeatureTestMessage &original, bslma::Allocator *basicAllocator=0)
Definition balb_testmessages.h:5748
@ NUM_SELECTIONS
Definition balb_testmessages.h:5769
int manipulateSelection(MANIPULATOR &manipulator)
Definition balb_testmessages.h:11814
FeatureTestMessage & makeFeatureRequest(const FeatureTestMessage &value)
SimpleRequest & simpleRequest()
Definition balb_testmessages.h:11830
Request(bslma::Allocator *basicAllocator=0)
Definition balb_testmessages.h:11763
Request & operator=(const Request &rhs)
Assign to this object the value of the specified rhs object.
int makeSelection(int selectionId)
bsls::ObjectBuffer< SimpleRequest > d_simpleRequest
Definition balb_testmessages.h:5752
Request(const Request &original, bslma::Allocator *basicAllocator=0)
@ SELECTION_ID_FEATURE_REQUEST
Definition balb_testmessages.h:5765
@ SELECTION_ID_SIMPLE_REQUEST
Definition balb_testmessages.h:5764
@ SELECTION_ID_UNDEFINED
Definition balb_testmessages.h:5763
bsls::ObjectBuffer< FeatureTestMessage > d_featureRequest
Definition balb_testmessages.h:5753
bool isUndefinedValue() const
Definition balb_testmessages.h:11916
static int maxSupportedBdexVersion()
Definition balb_testmessages.h:11756
static const bdlat_SelectionInfo SELECTION_INFO_ARRAY[]
Definition balb_testmessages.h:5780
const char * selectionName() const
Return the symbolic name of the current selection of this object.
~Request()
Destroy this object.
Definition balb_testmessages.h:11770
@ SELECTION_INDEX_FEATURE_REQUEST
Definition balb_testmessages.h:5774
@ SELECTION_INDEX_SIMPLE_REQUEST
Definition balb_testmessages.h:5773
static const bdlat_SelectionInfo * lookupSelectionInfo(const char *name, int nameLength)
int accessSelection(ACCESSOR &accessor) const
Definition balb_testmessages.h:11874
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
SimpleRequest & makeSimpleRequest()
bool isFeatureRequestValue() const
Definition balb_testmessages.h:11910
static const char CLASS_NAME[]
Definition balb_testmessages.h:5778
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition balb_testmessages.h:11777
FeatureTestMessage & featureRequest()
Definition balb_testmessages.h:11837
static const bdlat_SelectionInfo * lookupSelectionInfo(int id)
FeatureTestMessage & makeFeatureRequest()
int makeSelection(const char *name, int nameLength)
SimpleRequest & makeSimpleRequest(const SimpleRequest &value)
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition balb_testmessages.h:11845
int selectionId() const
Definition balb_testmessages.h:11868
bool isSimpleRequestValue() const
Definition balb_testmessages.h:11904
Definition balb_testmessages.h:5986
static const char CLASS_NAME[]
Definition balb_testmessages.h:6016
static const bdlat_SelectionInfo * lookupSelectionInfo(const char *name, int nameLength)
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
bsls::ObjectBuffer< bsl::string > d_responseData
Definition balb_testmessages.h:5990
const char * selectionName() const
Return the symbolic name of the current selection of this object.
@ SELECTION_INDEX_RESPONSE_DATA
Definition balb_testmessages.h:6011
@ SELECTION_INDEX_FEATURE_RESPONSE
Definition balb_testmessages.h:6012
Response(bslma::Allocator *basicAllocator=0)
Definition balb_testmessages.h:11935
int selectionId() const
Definition balb_testmessages.h:12040
bsl::string & makeResponseData(const bsl::string &value)
Response & operator=(const Response &rhs)
Assign to this object the value of the specified rhs object.
bsl::string & makeResponseData()
FeatureTestMessage & featureResponse()
Definition balb_testmessages.h:12009
int manipulateSelection(MANIPULATOR &manipulator)
Definition balb_testmessages.h:11986
static int maxSupportedBdexVersion()
Definition balb_testmessages.h:11928
~Response()
Destroy this object.
Definition balb_testmessages.h:11942
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition balb_testmessages.h:11949
static const bdlat_SelectionInfo * lookupSelectionInfo(int id)
Response(const Response &original, bslma::Allocator *basicAllocator=0)
bsls::ObjectBuffer< FeatureTestMessage > d_featureResponse
Definition balb_testmessages.h:5991
@ NUM_SELECTIONS
Definition balb_testmessages.h:6007
int makeSelection(int selectionId)
int makeSelection(const char *name, int nameLength)
bool isFeatureResponseValue() const
Definition balb_testmessages.h:12082
bsl::string & responseData()
Definition balb_testmessages.h:12002
static const bdlat_SelectionInfo SELECTION_INFO_ARRAY[]
Definition balb_testmessages.h:6018
FeatureTestMessage & makeFeatureResponse(const FeatureTestMessage &value)
FeatureTestMessage & makeFeatureResponse()
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition balb_testmessages.h:12017
int accessSelection(ACCESSOR &accessor) const
Definition balb_testmessages.h:12046
bool isResponseDataValue() const
Definition balb_testmessages.h:12076
bool isUndefinedValue() const
Definition balb_testmessages.h:12088
@ SELECTION_ID_FEATURE_RESPONSE
Definition balb_testmessages.h:6003
@ SELECTION_ID_RESPONSE_DATA
Definition balb_testmessages.h:6002
@ SELECTION_ID_UNDEFINED
Definition balb_testmessages.h:6001
Definition balb_testmessages.h:4303
static const char CLASS_NAME[]
Definition balb_testmessages.h:4336
int manipulateAttributes(MANIPULATOR &manipulator)
Definition balb_testmessages.h:10368
int accessAttributes(ACCESSOR &accessor) const
Definition balb_testmessages.h:10490
static const bdlat_AttributeInfo * lookupAttributeInfo(const char *name, int nameLength)
int accessAttribute(ACCESSOR &accessor, int id) const
Definition balb_testmessages.h:10523
@ ATTRIBUTE_ID_ELEMENT1
Definition balb_testmessages.h:4316
@ ATTRIBUTE_ID_ELEMENT5
Definition balb_testmessages.h:4320
@ ATTRIBUTE_ID_ELEMENT2
Definition balb_testmessages.h:4317
@ ATTRIBUTE_ID_ELEMENT4
Definition balb_testmessages.h:4319
@ ATTRIBUTE_ID_ELEMENT3
Definition balb_testmessages.h:4318
~Sequence1()
Destroy this object.
bdlb::NullableValue< Choice3 > & element1()
Definition balb_testmessages.h:10444
int manipulateAttribute(MANIPULATOR &manipulator, int id)
Definition balb_testmessages.h:10401
bsl::vector< Choice3 > & element5()
Definition balb_testmessages.h:10468
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition balb_testmessages.h:10348
Sequence1(bslma::Allocator *basicAllocator=0)
Choice2 & element3()
Definition balb_testmessages.h:10456
static const bdlat_AttributeInfo ATTRIBUTE_INFO_ARRAY[]
Definition balb_testmessages.h:4338
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition balb_testmessages.h:10475
bsl::vector< Choice1 > & element2()
Definition balb_testmessages.h:10450
static const bdlat_AttributeInfo * lookupAttributeInfo(int id)
bsl::vector< bdlb::NullableValue< Choice1 > > & element4()
Definition balb_testmessages.h:10462
static int maxSupportedBdexVersion()
Definition balb_testmessages.h:10341
Sequence1(const Sequence1 &original, bslma::Allocator *basicAllocator=0)
@ NUM_ATTRIBUTES
Definition balb_testmessages.h:4324
Sequence1 & operator=(const Sequence1 &rhs)
Assign to this object the value of the specified rhs object.
@ ATTRIBUTE_INDEX_ELEMENT5
Definition balb_testmessages.h:4332
@ ATTRIBUTE_INDEX_ELEMENT3
Definition balb_testmessages.h:4330
@ ATTRIBUTE_INDEX_ELEMENT4
Definition balb_testmessages.h:4331
@ ATTRIBUTE_INDEX_ELEMENT1
Definition balb_testmessages.h:4328
@ ATTRIBUTE_INDEX_ELEMENT2
Definition balb_testmessages.h:4329
Definition balb_testmessages.h:4558
~Sequence2()
Destroy this object.
static const char CLASS_NAME[]
Definition balb_testmessages.h:4590
bdlb::NullableValue< double > & element5()
Definition balb_testmessages.h:10730
int manipulateAttributes(MANIPULATOR &manipulator)
Definition balb_testmessages.h:10630
Sequence2(const Sequence2 &original, bslma::Allocator *basicAllocator=0)
static const bdlat_AttributeInfo * lookupAttributeInfo(const char *name, int nameLength)
@ ATTRIBUTE_ID_ELEMENT1
Definition balb_testmessages.h:4570
@ ATTRIBUTE_ID_ELEMENT5
Definition balb_testmessages.h:4574
@ ATTRIBUTE_ID_ELEMENT4
Definition balb_testmessages.h:4573
@ ATTRIBUTE_ID_ELEMENT2
Definition balb_testmessages.h:4571
@ ATTRIBUTE_ID_ELEMENT3
Definition balb_testmessages.h:4572
int accessAttributes(ACCESSOR &accessor) const
Definition balb_testmessages.h:10752
Sequence2 & operator=(const Sequence2 &rhs)
Assign to this object the value of the specified rhs object.
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition balb_testmessages.h:10737
static const bdlat_AttributeInfo ATTRIBUTE_INFO_ARRAY[]
Definition balb_testmessages.h:4592
static const bdlat_AttributeInfo * lookupAttributeInfo(int id)
bdlt::DatetimeTz & element3()
Definition balb_testmessages.h:10718
static int maxSupportedBdexVersion()
Definition balb_testmessages.h:10603
int manipulateAttribute(MANIPULATOR &manipulator, int id)
Definition balb_testmessages.h:10663
CustomString & element1()
Definition balb_testmessages.h:10706
int accessAttribute(ACCESSOR &accessor, int id) const
Definition balb_testmessages.h:10785
@ ATTRIBUTE_INDEX_ELEMENT1
Definition balb_testmessages.h:4582
@ ATTRIBUTE_INDEX_ELEMENT3
Definition balb_testmessages.h:4584
@ ATTRIBUTE_INDEX_ELEMENT4
Definition balb_testmessages.h:4585
@ ATTRIBUTE_INDEX_ELEMENT5
Definition balb_testmessages.h:4586
@ ATTRIBUTE_INDEX_ELEMENT2
Definition balb_testmessages.h:4583
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition balb_testmessages.h:10610
unsigned char & element2()
Definition balb_testmessages.h:10712
bdlb::NullableValue< Choice1 > & element4()
Definition balb_testmessages.h:10724
@ NUM_ATTRIBUTES
Definition balb_testmessages.h:4578
Sequence2(bslma::Allocator *basicAllocator=0)
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
Definition balb_testmessages.h:1853
bsl::vector< bsl::string > & element2()
Definition balb_testmessages.h:7633
int manipulateAttribute(MANIPULATOR &manipulator, int id)
Definition balb_testmessages.h:7581
@ ATTRIBUTE_ID_ELEMENT3
Definition balb_testmessages.h:1868
@ ATTRIBUTE_ID_ELEMENT6
Definition balb_testmessages.h:1871
@ ATTRIBUTE_ID_ELEMENT1
Definition balb_testmessages.h:1866
@ ATTRIBUTE_ID_ELEMENT5
Definition balb_testmessages.h:1870
@ ATTRIBUTE_ID_ELEMENT4
Definition balb_testmessages.h:1869
@ ATTRIBUTE_ID_ELEMENT2
Definition balb_testmessages.h:1867
~Sequence3()
Destroy this object.
static const bdlat_AttributeInfo ATTRIBUTE_INFO_ARRAY[]
Definition balb_testmessages.h:1890
bdlb::NullableAllocatedValue< Sequence5 > & element5()
Definition balb_testmessages.h:7651
static const bdlat_AttributeInfo * lookupAttributeInfo(const char *name, int nameLength)
int manipulateAttributes(MANIPULATOR &manipulator)
Definition balb_testmessages.h:7543
bdlb::NullableValue< bsl::string > & element4()
Definition balb_testmessages.h:7645
Sequence3 & operator=(const Sequence3 &rhs)
Assign to this object the value of the specified rhs object.
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition balb_testmessages.h:7664
bdlb::NullableValue< bool > & element3()
Definition balb_testmessages.h:7639
bsl::vector< Enumerated::Value > & element1()
Definition balb_testmessages.h:7627
int accessAttribute(ACCESSOR &accessor, int id) const
Definition balb_testmessages.h:7718
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition balb_testmessages.h:7522
static int maxSupportedBdexVersion()
Definition balb_testmessages.h:7515
int accessAttributes(ACCESSOR &accessor) const
Definition balb_testmessages.h:7680
Sequence3(bslma::Allocator *basicAllocator=0)
Sequence3(const Sequence3 &original, bslma::Allocator *basicAllocator=0)
static const char CLASS_NAME[]
Definition balb_testmessages.h:1888
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
@ NUM_ATTRIBUTES
Definition balb_testmessages.h:1875
bsl::vector< bdlb::NullableValue< Enumerated::Value > > & element6()
Definition balb_testmessages.h:7657
static const bdlat_AttributeInfo * lookupAttributeInfo(int id)
@ ATTRIBUTE_INDEX_ELEMENT2
Definition balb_testmessages.h:1880
@ ATTRIBUTE_INDEX_ELEMENT3
Definition balb_testmessages.h:1881
@ ATTRIBUTE_INDEX_ELEMENT5
Definition balb_testmessages.h:1883
@ ATTRIBUTE_INDEX_ELEMENT4
Definition balb_testmessages.h:1882
@ ATTRIBUTE_INDEX_ELEMENT1
Definition balb_testmessages.h:1879
@ ATTRIBUTE_INDEX_ELEMENT6
Definition balb_testmessages.h:1884
Definition balb_testmessages.h:3895
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
@ NUM_ATTRIBUTES
Definition balb_testmessages.h:3943
static const bdlat_AttributeInfo ATTRIBUTE_INFO_ARRAY[]
Definition balb_testmessages.h:3971
bsl::vector< CustomString > & element19()
Definition balb_testmessages.h:9996
bsl::vector< int > & element17()
Definition balb_testmessages.h:9984
int & element12()
Definition balb_testmessages.h:9954
static const bdlat_AttributeInfo * lookupAttributeInfo(int id)
bdlb::NullableValue< bsl::vector< char > > & element3()
Definition balb_testmessages.h:9900
bsl::vector< bdlt::DatetimeTz > & element18()
Definition balb_testmessages.h:9990
bsl::vector< double > & element15()
Definition balb_testmessages.h:9972
bdlb::NullableValue< CustomString > & element6()
Definition balb_testmessages.h:9918
@ ATTRIBUTE_ID_ELEMENT19
Definition balb_testmessages.h:3939
@ ATTRIBUTE_ID_ELEMENT8
Definition balb_testmessages.h:3928
@ ATTRIBUTE_ID_ELEMENT9
Definition balb_testmessages.h:3929
@ ATTRIBUTE_ID_ELEMENT12
Definition balb_testmessages.h:3932
@ ATTRIBUTE_ID_ELEMENT14
Definition balb_testmessages.h:3934
@ ATTRIBUTE_ID_ELEMENT1
Definition balb_testmessages.h:3921
@ ATTRIBUTE_ID_ELEMENT7
Definition balb_testmessages.h:3927
@ ATTRIBUTE_ID_ELEMENT13
Definition balb_testmessages.h:3933
@ ATTRIBUTE_ID_ELEMENT16
Definition balb_testmessages.h:3936
@ ATTRIBUTE_ID_ELEMENT15
Definition balb_testmessages.h:3935
@ ATTRIBUTE_ID_ELEMENT3
Definition balb_testmessages.h:3923
@ ATTRIBUTE_ID_ELEMENT5
Definition balb_testmessages.h:3925
@ ATTRIBUTE_ID_ELEMENT2
Definition balb_testmessages.h:3922
@ ATTRIBUTE_ID_ELEMENT10
Definition balb_testmessages.h:3930
@ ATTRIBUTE_ID_ELEMENT6
Definition balb_testmessages.h:3926
@ ATTRIBUTE_ID_ELEMENT17
Definition balb_testmessages.h:3937
@ ATTRIBUTE_ID_ELEMENT4
Definition balb_testmessages.h:3924
@ ATTRIBUTE_ID_ELEMENT18
Definition balb_testmessages.h:3938
@ ATTRIBUTE_ID_ELEMENT11
Definition balb_testmessages.h:3931
Sequence4(const Sequence4 &original, bslma::Allocator *basicAllocator=0)
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition balb_testmessages.h:9666
~Sequence4()
Destroy this object.
int manipulateAttributes(MANIPULATOR &manipulator)
Definition balb_testmessages.h:9700
Enumerated::Value & element13()
Definition balb_testmessages.h:9960
bdlb::NullableValue< Enumerated::Value > & element7()
Definition balb_testmessages.h:9924
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition balb_testmessages.h:10003
static int maxSupportedBdexVersion()
Definition balb_testmessages.h:9659
int manipulateAttribute(MANIPULATOR &manipulator, int id)
Definition balb_testmessages.h:9803
bool & element8()
Definition balb_testmessages.h:9930
bsl::string & element9()
Definition balb_testmessages.h:9936
bsl::vector< Sequence3 > & element1()
Definition balb_testmessages.h:9888
Sequence4(bslma::Allocator *basicAllocator=0)
@ ATTRIBUTE_INDEX_ELEMENT19
Definition balb_testmessages.h:3965
@ ATTRIBUTE_INDEX_ELEMENT8
Definition balb_testmessages.h:3954
@ ATTRIBUTE_INDEX_ELEMENT3
Definition balb_testmessages.h:3949
@ ATTRIBUTE_INDEX_ELEMENT9
Definition balb_testmessages.h:3955
@ ATTRIBUTE_INDEX_ELEMENT15
Definition balb_testmessages.h:3961
@ ATTRIBUTE_INDEX_ELEMENT4
Definition balb_testmessages.h:3950
@ ATTRIBUTE_INDEX_ELEMENT13
Definition balb_testmessages.h:3959
@ ATTRIBUTE_INDEX_ELEMENT18
Definition balb_testmessages.h:3964
@ ATTRIBUTE_INDEX_ELEMENT7
Definition balb_testmessages.h:3953
@ ATTRIBUTE_INDEX_ELEMENT6
Definition balb_testmessages.h:3952
@ ATTRIBUTE_INDEX_ELEMENT5
Definition balb_testmessages.h:3951
@ ATTRIBUTE_INDEX_ELEMENT11
Definition balb_testmessages.h:3957
@ ATTRIBUTE_INDEX_ELEMENT16
Definition balb_testmessages.h:3962
@ ATTRIBUTE_INDEX_ELEMENT14
Definition balb_testmessages.h:3960
@ ATTRIBUTE_INDEX_ELEMENT2
Definition balb_testmessages.h:3948
@ ATTRIBUTE_INDEX_ELEMENT10
Definition balb_testmessages.h:3956
@ ATTRIBUTE_INDEX_ELEMENT1
Definition balb_testmessages.h:3947
@ ATTRIBUTE_INDEX_ELEMENT17
Definition balb_testmessages.h:3963
@ ATTRIBUTE_INDEX_ELEMENT12
Definition balb_testmessages.h:3958
static const bdlat_AttributeInfo * lookupAttributeInfo(const char *name, int nameLength)
bsl::vector< char > & element11()
Definition balb_testmessages.h:9948
double & element10()
Definition balb_testmessages.h:9942
bdlb::NullableValue< int > & element4()
Definition balb_testmessages.h:9906
bdlb::NullableValue< bdlt::DatetimeTz > & element5()
Definition balb_testmessages.h:9912
bsl::vector< bool > & element14()
Definition balb_testmessages.h:9966
int accessAttribute(ACCESSOR &accessor, int id) const
Definition balb_testmessages.h:10135
Sequence4 & operator=(const Sequence4 &rhs)
Assign to this object the value of the specified rhs object.
int accessAttributes(ACCESSOR &accessor) const
Definition balb_testmessages.h:10032
bsl::vector< Choice1 > & element2()
Definition balb_testmessages.h:9894
static const char CLASS_NAME[]
Definition balb_testmessages.h:3969
bsl::vector< bsl::vector< char > > & element16()
Definition balb_testmessages.h:9978
Definition balb_testmessages.h:2118
~Sequence5()
Destroy this object.
int accessAttribute(ACCESSOR &accessor, int id) const
Definition balb_testmessages.h:8031
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition balb_testmessages.h:7814
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
bsl::vector< bdlb::NullableValue< bdlt::DatetimeTz > > & element6()
Definition balb_testmessages.h:7958
bsl::vector< bdlb::NullableAllocatedValue< Sequence3 > > & element7()
Definition balb_testmessages.h:7964
static const bdlat_AttributeInfo ATTRIBUTE_INFO_ARRAY[]
Definition balb_testmessages.h:2159
static int maxSupportedBdexVersion()
Definition balb_testmessages.h:7807
static const char CLASS_NAME[]
Definition balb_testmessages.h:2157
bsl::vector< bdlb::NullableValue< bool > > & element2()
Definition balb_testmessages.h:7934
@ ATTRIBUTE_ID_ELEMENT3
Definition balb_testmessages.h:2135
@ ATTRIBUTE_ID_ELEMENT1
Definition balb_testmessages.h:2133
@ ATTRIBUTE_ID_ELEMENT7
Definition balb_testmessages.h:2139
@ ATTRIBUTE_ID_ELEMENT6
Definition balb_testmessages.h:2138
@ ATTRIBUTE_ID_ELEMENT4
Definition balb_testmessages.h:2136
@ ATTRIBUTE_ID_ELEMENT5
Definition balb_testmessages.h:2137
@ ATTRIBUTE_ID_ELEMENT2
Definition balb_testmessages.h:2134
int manipulateAttribute(MANIPULATOR &manipulator, int id)
Definition balb_testmessages.h:7879
static const bdlat_AttributeInfo * lookupAttributeInfo(const char *name, int nameLength)
int accessAttributes(ACCESSOR &accessor) const
Definition balb_testmessages.h:7988
int manipulateAttributes(MANIPULATOR &manipulator)
Definition balb_testmessages.h:7836
Sequence5(const Sequence5 &original, bslma::Allocator *basicAllocator=0)
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition balb_testmessages.h:7971
bsl::vector< bdlb::NullableValue< int > > & element5()
Definition balb_testmessages.h:7952
Sequence5(bslma::Allocator *basicAllocator=0)
static const bdlat_AttributeInfo * lookupAttributeInfo(int id)
Sequence5 & operator=(const Sequence5 &rhs)
Assign to this object the value of the specified rhs object.
Sequence3 & element1()
Definition balb_testmessages.h:7928
@ ATTRIBUTE_INDEX_ELEMENT2
Definition balb_testmessages.h:2148
@ ATTRIBUTE_INDEX_ELEMENT3
Definition balb_testmessages.h:2149
@ ATTRIBUTE_INDEX_ELEMENT7
Definition balb_testmessages.h:2153
@ ATTRIBUTE_INDEX_ELEMENT1
Definition balb_testmessages.h:2147
@ ATTRIBUTE_INDEX_ELEMENT4
Definition balb_testmessages.h:2150
@ ATTRIBUTE_INDEX_ELEMENT5
Definition balb_testmessages.h:2151
@ ATTRIBUTE_INDEX_ELEMENT6
Definition balb_testmessages.h:2152
@ NUM_ATTRIBUTES
Definition balb_testmessages.h:2143
bsl::vector< bdlb::NullableValue< double > > & element3()
Definition balb_testmessages.h:7940
bsl::vector< bdlb::NullableValue< bsl::vector< char > > > & element4()
Definition balb_testmessages.h:7946
Definition balb_testmessages.h:2395
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition balb_testmessages.h:8136
CustomString & element7()
Definition balb_testmessages.h:8358
bsl::vector< bdlb::NullableValue< unsigned char > > & element13()
Definition balb_testmessages.h:8394
Sequence6 & operator=(const Sequence6 &rhs)
Assign to this object the value of the specified rhs object.
static int maxSupportedBdexVersion()
Definition balb_testmessages.h:8129
static const char CLASS_NAME[]
Definition balb_testmessages.h:2457
static const bdlat_AttributeInfo ATTRIBUTE_INFO_ARRAY[]
Definition balb_testmessages.h:2459
~Sequence6()
Destroy this object.
bdlb::NullableValue< CustomInt > & element3()
Definition balb_testmessages.h:8334
bsl::vector< unsigned int > & element12()
Definition balb_testmessages.h:8388
@ NUM_ATTRIBUTES
Definition balb_testmessages.h:2435
Sequence6(const Sequence6 &original, bslma::Allocator *basicAllocator=0)
int accessAttributes(ACCESSOR &accessor) const
Definition balb_testmessages.h:8438
bdlb::NullableValue< unsigned char > & element1()
Definition balb_testmessages.h:8322
bsl::vector< unsigned char > & element10()
Definition balb_testmessages.h:8376
static const bdlat_AttributeInfo * lookupAttributeInfo(const char *name, int nameLength)
Sequence6(bslma::Allocator *basicAllocator=0)
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
int manipulateAttributes(MANIPULATOR &manipulator)
Definition balb_testmessages.h:8166
bsl::vector< bdlb::NullableValue< CustomInt > > & element6()
Definition balb_testmessages.h:8352
int accessAttribute(ACCESSOR &accessor, int id) const
Definition balb_testmessages.h:8521
@ ATTRIBUTE_ID_ELEMENT14
Definition balb_testmessages.h:2430
@ ATTRIBUTE_ID_ELEMENT11
Definition balb_testmessages.h:2427
@ ATTRIBUTE_ID_ELEMENT9
Definition balb_testmessages.h:2425
@ ATTRIBUTE_ID_ELEMENT3
Definition balb_testmessages.h:2419
@ ATTRIBUTE_ID_ELEMENT1
Definition balb_testmessages.h:2417
@ ATTRIBUTE_ID_ELEMENT7
Definition balb_testmessages.h:2423
@ ATTRIBUTE_ID_ELEMENT13
Definition balb_testmessages.h:2429
@ ATTRIBUTE_ID_ELEMENT6
Definition balb_testmessages.h:2422
@ ATTRIBUTE_ID_ELEMENT8
Definition balb_testmessages.h:2424
@ ATTRIBUTE_ID_ELEMENT2
Definition balb_testmessages.h:2418
@ ATTRIBUTE_ID_ELEMENT12
Definition balb_testmessages.h:2428
@ ATTRIBUTE_ID_ELEMENT15
Definition balb_testmessages.h:2431
@ ATTRIBUTE_ID_ELEMENT5
Definition balb_testmessages.h:2421
@ ATTRIBUTE_ID_ELEMENT4
Definition balb_testmessages.h:2420
@ ATTRIBUTE_ID_ELEMENT10
Definition balb_testmessages.h:2426
unsigned int & element4()
Definition balb_testmessages.h:8340
bsl::vector< CustomInt > & element14()
Definition balb_testmessages.h:8400
bsl::vector< bdlb::NullableValue< unsigned int > > & element15()
Definition balb_testmessages.h:8406
@ ATTRIBUTE_INDEX_ELEMENT10
Definition balb_testmessages.h:2448
@ ATTRIBUTE_INDEX_ELEMENT15
Definition balb_testmessages.h:2453
@ ATTRIBUTE_INDEX_ELEMENT2
Definition balb_testmessages.h:2440
@ ATTRIBUTE_INDEX_ELEMENT8
Definition balb_testmessages.h:2446
@ ATTRIBUTE_INDEX_ELEMENT14
Definition balb_testmessages.h:2452
@ ATTRIBUTE_INDEX_ELEMENT4
Definition balb_testmessages.h:2442
@ ATTRIBUTE_INDEX_ELEMENT12
Definition balb_testmessages.h:2450
@ ATTRIBUTE_INDEX_ELEMENT6
Definition balb_testmessages.h:2444
@ ATTRIBUTE_INDEX_ELEMENT3
Definition balb_testmessages.h:2441
@ ATTRIBUTE_INDEX_ELEMENT1
Definition balb_testmessages.h:2439
@ ATTRIBUTE_INDEX_ELEMENT7
Definition balb_testmessages.h:2445
@ ATTRIBUTE_INDEX_ELEMENT5
Definition balb_testmessages.h:2443
@ ATTRIBUTE_INDEX_ELEMENT11
Definition balb_testmessages.h:2449
@ ATTRIBUTE_INDEX_ELEMENT13
Definition balb_testmessages.h:2451
@ ATTRIBUTE_INDEX_ELEMENT9
Definition balb_testmessages.h:2447
int manipulateAttribute(MANIPULATOR &manipulator, int id)
Definition balb_testmessages.h:8249
unsigned char & element5()
Definition balb_testmessages.h:8346
bdlb::NullableValue< CustomString > & element2()
Definition balb_testmessages.h:8328
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition balb_testmessages.h:8413
static const bdlat_AttributeInfo * lookupAttributeInfo(int id)
CustomInt & element8()
Definition balb_testmessages.h:8364
bsl::vector< CustomString > & element11()
Definition balb_testmessages.h:8382
bdlb::NullableValue< unsigned int > & element9()
Definition balb_testmessages.h:8370
Definition balb_testmessages.h:751
bsl::string & makeSelection6(const bsl::string &value)
static const bdlat_SelectionInfo * lookupSelectionInfo(const char *name, int nameLength)
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
int selectionId() const
Definition balb_testmessages.h:6793
@ SELECTION_INDEX_SELECTION6
Definition balb_testmessages.h:777
@ SELECTION_INDEX_SELECTION5
Definition balb_testmessages.h:776
int accessSelection(ACCESSOR &accessor) const
Definition balb_testmessages.h:6799
bsls::ObjectBuffer< bsl::string > d_selection6
Definition balb_testmessages.h:756
bool & selection5()
Definition balb_testmessages.h:6755
int makeSelection(int selectionId)
bool isSelection6Value() const
Definition balb_testmessages.h:6835
bsl::string & selection6()
Definition balb_testmessages.h:6762
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition balb_testmessages.h:6770
bool isSelection5Value() const
Definition balb_testmessages.h:6829
const char * selectionName() const
Return the symbolic name of the current selection of this object.
~SequenceWithAnonymityChoice1()
Destroy this object.
Definition balb_testmessages.h:6695
bsls::ObjectBuffer< bool > d_selection5
Definition balb_testmessages.h:755
SequenceWithAnonymityChoice1(const SequenceWithAnonymityChoice1 &original, bslma::Allocator *basicAllocator=0)
SequenceWithAnonymityChoice1 & operator=(const SequenceWithAnonymityChoice1 &rhs)
Assign to this object the value of the specified rhs object.
@ SELECTION_ID_SELECTION6
Definition balb_testmessages.h:768
@ SELECTION_ID_SELECTION5
Definition balb_testmessages.h:767
@ SELECTION_ID_UNDEFINED
Definition balb_testmessages.h:766
static const bdlat_SelectionInfo SELECTION_INFO_ARRAY[]
Definition balb_testmessages.h:783
int manipulateSelection(MANIPULATOR &manipulator)
Definition balb_testmessages.h:6739
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition balb_testmessages.h:6702
SequenceWithAnonymityChoice1(bslma::Allocator *basicAllocator=0)
Definition balb_testmessages.h:6688
@ NUM_SELECTIONS
Definition balb_testmessages.h:772
bool isUndefinedValue() const
Definition balb_testmessages.h:6841
static const bdlat_SelectionInfo * lookupSelectionInfo(int id)
int makeSelection(const char *name, int nameLength)
static int maxSupportedBdexVersion()
Definition balb_testmessages.h:6681
static const char CLASS_NAME[]
Definition balb_testmessages.h:781
Definition balb_testmessages.h:4812
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition balb_testmessages.h:10954
SequenceWithAnonymityChoice2(const SequenceWithAnonymityChoice2 &original, bslma::Allocator *basicAllocator=0)
@ SELECTION_INDEX_SELECTION8
Definition balb_testmessages.h:4838
@ SELECTION_INDEX_SELECTION7
Definition balb_testmessages.h:4837
static int maxSupportedBdexVersion()
Definition balb_testmessages.h:10865
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition balb_testmessages.h:10886
@ NUM_SELECTIONS
Definition balb_testmessages.h:4833
bool isSelection8Value() const
Definition balb_testmessages.h:11019
~SequenceWithAnonymityChoice2()
Destroy this object.
Definition balb_testmessages.h:10879
int selectionId() const
Definition balb_testmessages.h:10977
Sequence4 & selection7()
Definition balb_testmessages.h:10939
Sequence4 * d_selection7
Definition balb_testmessages.h:4816
const char * selectionName() const
Return the symbolic name of the current selection of this object.
static const char CLASS_NAME[]
Definition balb_testmessages.h:4842
bool isUndefinedValue() const
Definition balb_testmessages.h:11025
static const bdlat_SelectionInfo * lookupSelectionInfo(int id)
int manipulateSelection(MANIPULATOR &manipulator)
Definition balb_testmessages.h:10923
Choice2 & makeSelection8(const Choice2 &value)
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
@ SELECTION_ID_SELECTION8
Definition balb_testmessages.h:4829
@ SELECTION_ID_UNDEFINED
Definition balb_testmessages.h:4827
@ SELECTION_ID_SELECTION7
Definition balb_testmessages.h:4828
SequenceWithAnonymityChoice2 & operator=(const SequenceWithAnonymityChoice2 &rhs)
Assign to this object the value of the specified rhs object.
Sequence4 & makeSelection7(const Sequence4 &value)
Choice2 & selection8()
Definition balb_testmessages.h:10946
static const bdlat_SelectionInfo * lookupSelectionInfo(const char *name, int nameLength)
int accessSelection(ACCESSOR &accessor) const
Definition balb_testmessages.h:10983
Choice2 * d_selection8
Definition balb_testmessages.h:4817
int makeSelection(const char *name, int nameLength)
static const bdlat_SelectionInfo SELECTION_INFO_ARRAY[]
Definition balb_testmessages.h:4844
SequenceWithAnonymityChoice2(bslma::Allocator *basicAllocator=0)
Definition balb_testmessages.h:10872
int makeSelection(int selectionId)
bool isSelection7Value() const
Definition balb_testmessages.h:11013
Definition balb_testmessages.h:3043
static const char CLASS_NAME[]
Definition balb_testmessages.h:3079
SequenceWithAnonymityChoice(const SequenceWithAnonymityChoice &original, bslma::Allocator *basicAllocator=0)
unsigned char & makeSelection2(unsigned char value)
static const bdlat_SelectionInfo * lookupSelectionInfo(int id)
~SequenceWithAnonymityChoice()
Destroy this object.
Definition balb_testmessages.h:8947
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
@ SELECTION_ID_UNDEFINED
Definition balb_testmessages.h:3060
@ SELECTION_ID_SELECTION1
Definition balb_testmessages.h:3061
@ SELECTION_ID_SELECTION4
Definition balb_testmessages.h:3064
@ SELECTION_ID_SELECTION3
Definition balb_testmessages.h:3063
@ SELECTION_ID_SELECTION2
Definition balb_testmessages.h:3062
@ SELECTION_INDEX_SELECTION2
Definition balb_testmessages.h:3073
@ SELECTION_INDEX_SELECTION1
Definition balb_testmessages.h:3072
@ SELECTION_INDEX_SELECTION3
Definition balb_testmessages.h:3074
@ SELECTION_INDEX_SELECTION4
Definition balb_testmessages.h:3075
int manipulateSelection(MANIPULATOR &manipulator)
Definition balb_testmessages.h:9001
bool isSelection3Value() const
Definition balb_testmessages.h:9151
@ NUM_SELECTIONS
Definition balb_testmessages.h:3068
int selectionId() const
Definition balb_testmessages.h:9083
int makeSelection(const char *name, int nameLength)
bool isSelection2Value() const
Definition balb_testmessages.h:9145
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition balb_testmessages.h:8954
bsls::ObjectBuffer< CustomInt > d_selection4
Definition balb_testmessages.h:3050
bool isSelection4Value() const
Definition balb_testmessages.h:9157
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition balb_testmessages.h:9052
SequenceWithAnonymityChoice(bslma::Allocator *basicAllocator=0)
Definition balb_testmessages.h:8940
int makeSelection(int selectionId)
SequenceWithAnonymityChoice & operator=(const SequenceWithAnonymityChoice &rhs)
Assign to this object the value of the specified rhs object.
unsigned char & selection2()
Definition balb_testmessages.h:9030
static int maxSupportedBdexVersion()
Definition balb_testmessages.h:8933
CustomInt & selection4()
Definition balb_testmessages.h:9044
const char * selectionName() const
Return the symbolic name of the current selection of this object.
bsls::ObjectBuffer< CustomString > d_selection3
Definition balb_testmessages.h:3049
bsls::ObjectBuffer< unsigned char > d_selection2
Definition balb_testmessages.h:3048
CustomString & makeSelection3(const CustomString &value)
bool isSelection1Value() const
Definition balb_testmessages.h:9139
Sequence6 & makeSelection1(const Sequence6 &value)
CustomInt & makeSelection4(const CustomInt &value)
CustomString & selection3()
Definition balb_testmessages.h:9037
bool isUndefinedValue() const
Definition balb_testmessages.h:9163
Sequence6 & selection1()
Definition balb_testmessages.h:9023
bsls::ObjectBuffer< Sequence6 > d_selection1
Definition balb_testmessages.h:3047
static const bdlat_SelectionInfo SELECTION_INFO_ARRAY[]
Definition balb_testmessages.h:3081
static const bdlat_SelectionInfo * lookupSelectionInfo(const char *name, int nameLength)
int accessSelection(ACCESSOR &accessor) const
Definition balb_testmessages.h:9089
Definition balb_testmessages.h:5046
static const bdlat_AttributeInfo ATTRIBUTE_INFO_ARRAY[]
Definition balb_testmessages.h:5077
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
int manipulateAttributes(MANIPULATOR &manipulator)
Definition balb_testmessages.h:11063
@ NUM_ATTRIBUTES
Definition balb_testmessages.h:5064
int accessAttribute(ACCESSOR &accessor, int id) const
Definition balb_testmessages.h:11198
static const bdlat_AttributeInfo * lookupAttributeInfo(int id)
@ ATTRIBUTE_ID_ELEMENT4
Definition balb_testmessages.h:5060
@ ATTRIBUTE_ID_CHOICE2
Definition balb_testmessages.h:5059
@ ATTRIBUTE_ID_CHOICE1
Definition balb_testmessages.h:5058
@ ATTRIBUTE_ID_CHOICE
Definition balb_testmessages.h:5057
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition balb_testmessages.h:11156
SequenceWithAnonymity(const SequenceWithAnonymity &original, bslma::Allocator *basicAllocator=0)
~SequenceWithAnonymity()
Destroy this object.
SequenceWithAnonymity(bslma::Allocator *basicAllocator=0)
static const char CLASS_NAME[]
Definition balb_testmessages.h:5075
static const bdlat_AttributeInfo * lookupAttributeInfo(const char *name, int nameLength)
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition balb_testmessages.h:11044
SequenceWithAnonymityChoice1 & choice1()
Definition balb_testmessages.h:11137
Sequence6 & element4()
Definition balb_testmessages.h:11149
bdlb::NullableValue< SequenceWithAnonymityChoice2 > & choice2()
Definition balb_testmessages.h:11143
int accessAttributes(ACCESSOR &accessor) const
Definition balb_testmessages.h:11170
SequenceWithAnonymityChoice & choice()
Definition balb_testmessages.h:11131
int manipulateAttribute(MANIPULATOR &manipulator, int id)
Definition balb_testmessages.h:11091
@ ATTRIBUTE_INDEX_CHOICE1
Definition balb_testmessages.h:5069
@ ATTRIBUTE_INDEX_CHOICE2
Definition balb_testmessages.h:5070
@ ATTRIBUTE_INDEX_CHOICE
Definition balb_testmessages.h:5068
@ ATTRIBUTE_INDEX_ELEMENT4
Definition balb_testmessages.h:5071
static int maxSupportedBdexVersion()
Definition balb_testmessages.h:11037
SequenceWithAnonymity & operator=(const SequenceWithAnonymity &rhs)
Assign to this object the value of the specified rhs object.
Definition balb_testmessages.h:985
int manipulateAttribute(MANIPULATOR &manipulator, int id)
Definition balb_testmessages.h:6895
int accessAttribute(ACCESSOR &accessor, int id) const
Definition balb_testmessages.h:6972
static const char CLASS_NAME[]
Definition balb_testmessages.h:1008
SimpleRequest(bslma::Allocator *basicAllocator=0)
static int maxSupportedBdexVersion()
Definition balb_testmessages.h:6853
int accessAttributes(ACCESSOR &accessor) const
Definition balb_testmessages.h:6954
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition balb_testmessages.h:6942
~SimpleRequest()
Destroy this object.
static const bdlat_AttributeInfo * lookupAttributeInfo(const char *name, int nameLength)
static const bdlat_AttributeInfo * lookupAttributeInfo(int id)
bsl::string & data()
Definition balb_testmessages.h:6929
@ ATTRIBUTE_INDEX_DATA
Definition balb_testmessages.h:1003
@ ATTRIBUTE_INDEX_RESPONSE_LENGTH
Definition balb_testmessages.h:1004
SimpleRequest & operator=(const SimpleRequest &rhs)
Assign to this object the value of the specified rhs object.
SimpleRequest(const SimpleRequest &original, bslma::Allocator *basicAllocator=0)
@ ATTRIBUTE_ID_DATA
Definition balb_testmessages.h:994
@ ATTRIBUTE_ID_RESPONSE_LENGTH
Definition balb_testmessages.h:995
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
int manipulateAttributes(MANIPULATOR &manipulator)
Definition balb_testmessages.h:6877
static const bdlat_AttributeInfo ATTRIBUTE_INFO_ARRAY[]
Definition balb_testmessages.h:1010
int & responseLength()
Definition balb_testmessages.h:6935
@ NUM_ATTRIBUTES
Definition balb_testmessages.h:999
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition balb_testmessages.h:6860
Definition balb_testmessages.h:1206
UnsignedSequence & operator=(const UnsignedSequence &rhs)
Assign to this object the value of the specified rhs object.
static const bdlat_AttributeInfo ATTRIBUTE_INFO_ARRAY[]
Definition balb_testmessages.h:1234
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition balb_testmessages.h:7032
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition balb_testmessages.h:7129
unsigned int & element1()
Definition balb_testmessages.h:7110
static const bdlat_AttributeInfo * lookupAttributeInfo(int id)
@ ATTRIBUTE_ID_ELEMENT3
Definition balb_testmessages.h:1218
@ ATTRIBUTE_ID_ELEMENT2
Definition balb_testmessages.h:1217
@ ATTRIBUTE_ID_ELEMENT1
Definition balb_testmessages.h:1216
unsigned short & element2()
Definition balb_testmessages.h:7116
static int maxSupportedBdexVersion()
Definition balb_testmessages.h:7025
@ NUM_ATTRIBUTES
Definition balb_testmessages.h:1222
int accessAttributes(ACCESSOR &accessor) const
Definition balb_testmessages.h:7142
@ ATTRIBUTE_INDEX_ELEMENT1
Definition balb_testmessages.h:1226
@ ATTRIBUTE_INDEX_ELEMENT2
Definition balb_testmessages.h:1227
@ ATTRIBUTE_INDEX_ELEMENT3
Definition balb_testmessages.h:1228
int manipulateAttributes(MANIPULATOR &manipulator)
Definition balb_testmessages.h:7050
static const bdlat_AttributeInfo * lookupAttributeInfo(const char *name, int nameLength)
UnsignedSequence(const UnsignedSequence &original)
bsls::Types::Uint64 & element3()
Definition balb_testmessages.h:7122
~UnsignedSequence()
Destroy this object.
int manipulateAttribute(MANIPULATOR &manipulator, int id)
Definition balb_testmessages.h:7073
static const char CLASS_NAME[]
Definition balb_testmessages.h:1232
int accessAttribute(ACCESSOR &accessor, int id) const
Definition balb_testmessages.h:7165
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
Definition balb_testmessages.h:1433
VoidSequence & operator=(const VoidSequence &rhs)
Assign to this object the value of the specified rhs object.
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition balb_testmessages.h:7288
@ NUM_ATTRIBUTES
Definition balb_testmessages.h:1440
int accessAttributes(ACCESSOR &accessor) const
Definition balb_testmessages.h:7298
static const bdlat_AttributeInfo * lookupAttributeInfo(const char *name, int nameLength)
static const bdlat_AttributeInfo * lookupAttributeInfo(int id)
int manipulateAttributes(MANIPULATOR &manipulator)
Definition balb_testmessages.h:7249
int accessAttribute(ACCESSOR &accessor, int id) const
Definition balb_testmessages.h:7307
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
int manipulateAttribute(MANIPULATOR &manipulator, int id)
Definition balb_testmessages.h:7258
~VoidSequence()
Destroy this object.
static const char CLASS_NAME[]
Definition balb_testmessages.h:1445
static int maxSupportedBdexVersion()
Definition balb_testmessages.h:7227
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition balb_testmessages.h:7234
VoidSequence(const VoidSequence &original)
VoidSequence()
Create an object of type VoidSequence having the default value.
Definition bdlb_nullableallocatedvalue.h:180
Definition bdlb_nullablevalue.h:262
Definition bdlt_datetimetz.h:308
Definition bslstl_string.h:1252
Definition bslstl_vector.h:1120
Definition bslma_allocator.h:545
#define BDLAT_DECL_CHOICE_WITH_ALLOCATOR_BITWISEMOVEABLE_TRAITS(ClassName)
Definition bdlat_typetraits.h:268
#define BDLAT_DECL_CUSTOMIZEDTYPE_WITH_BITWISEMOVEABLE_TRAITS(ClassName)
Definition bdlat_typetraits.h:344
#define BDLAT_DECL_CUSTOMIZEDTYPE_WITH_ALLOCATOR_BITWISEMOVEABLE_TRAITS(ClassName)
Definition bdlat_typetraits.h:352
#define BDLAT_DECL_SEQUENCE_WITH_ALLOCATOR_BITWISEMOVEABLE_TRAITS(ClassName)
Definition bdlat_typetraits.h:301
#define BDLAT_DECL_ENUMERATION_TRAITS(ClassName)
Definition bdlat_typetraits.h:312
#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 balb_controlmanager.h:144
bsl::ostream & operator<<(bsl::ostream &stream, const FileCleanerConfiguration &configuration)
bool operator!=(const FileCleanerConfiguration &lhs, const FileCleanerConfiguration &rhs)
bool operator==(const FileCleanerConfiguration &lhs, const FileCleanerConfiguration &rhs)
void reset(TYPE *object)
Reset the value of the specified object to its default value.
bsl::ostream & print(bsl::ostream &stream, const TYPE &object, int level=0, int spacesPerLevel=4)
Definition bdlb_printmethods.h:725
ALLOCATOR const STRING_VIEW_LIKE_TYPE & rhs
Definition bslstl_string.h:3918
ALLOCATOR & lhs
Definition bslstl_string.h:3917
Definition baljsn_encoder_testtypes.h:76
STREAM & bdexStreamIn(STREAM &stream, VALUE_TYPE &variable)
Definition bslx_instreamfunctions.h:1263
STREAM & bdexStreamOut(STREAM &stream, const TYPE &value)
Definition bslx_outstreamfunctions.h:1004
int maxSupportedBdexVersion(const TYPE *, int versionSelector)
Definition bslx_versionfunctions.h:531
Definition balb_testmessages.h:645
static STREAM & bdexStreamOut(STREAM &stream, Value value, int version)
Definition balb_testmessages.h:6661
static const bdlat_EnumeratorInfo ENUMERATOR_INFO_ARRAY[]
Definition balb_testmessages.h:662
static STREAM & bdexStreamIn(STREAM &stream, Value &value, int version)
Definition balb_testmessages.h:6639
static const char * toString(Value value)
static int maxSupportedBdexVersion()
Definition balb_testmessages.h:6620
Value
Definition balb_testmessages.h:649
@ NEW_YORK
Definition balb_testmessages.h:650
@ NEW_JERSEY
Definition balb_testmessages.h:651
@ LONDON
Definition balb_testmessages.h:652
static bsl::ostream & print(bsl::ostream &stream, Value value)
Definition balb_testmessages.h:6632
@ NUM_ENUMERATORS
Definition balb_testmessages.h:656
static int fromInt(Value *result, int number)
static const char CLASS_NAME[]
Definition balb_testmessages.h:660
static int fromString(Value *result, const char *string, int stringLength)
Definition balb_testmessages.h:6229
Definition bdlat_attributeinfo.h:139
int d_id
Definition bdlat_attributeinfo.h:142
Definition bdlat_enumeratorinfo.h:99
Definition bdlat_selectioninfo.h:138
unsigned long long Uint64
Definition bsls_types.h:139
Definition bsls_objectbuffer.h:277
TYPE & object()
Definition bsls_objectbuffer.h:352