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