BDE 4.14.0 Production release
Loading...
Searching...
No Matches
s_baltst_mysequencewithnillable.h
Go to the documentation of this file.
1/// @file s_baltst_mysequencewithnillable.h
2///
3/// The content of this file has been pre-processed for Doxygen.
4///
5
6
7// s_baltst_mysequencewithnillable.h *DO NOT EDIT* @generated -*-C++-*-
8#ifndef INCLUDED_S_BALTST_MYSEQUENCEWITHNILLABLE
9#define INCLUDED_S_BALTST_MYSEQUENCEWITHNILLABLE
10
11#include <bsls_ident.h>
12BSLS_IDENT_RCSID(s_baltst_mysequencewithnillable_h, "$Id$ $CSID$")
14
15/// @defgroup s_baltst_mysequencewithnillable s_baltst_mysequencewithnillable
16/// @brief Provide value-semantic attribute classes
17/// @addtogroup Standalones
18/// @{
19/// @addtogroup s_baltst
20/// @{
21/// @addtogroup s_baltst_mysequencewithnillable
22/// @{
23///
24/// <h1> Outline </h1>
25/// * <a href="#s_baltst_mysequencewithnillable-purpose"> Purpose</a>
26///
27/// # Purpose {#s_baltst_mysequencewithnillable-purpose}
28/// Provide value-semantic attribute classes
29/// @}
30/** @} */
31/** @} */
32
33/** @addtogroup Standalones
34 * @{
35 */
36/** @addtogroup s_baltst
37 * @{
38 */
39/** @addtogroup s_baltst_mysequencewithnillable
40 * @{
41 */
42
43#include <bslalg_typetraits.h>
44
45#include <bdlat_attributeinfo.h>
46
47#include <bdlat_selectioninfo.h>
48
49#include <bdlat_typetraits.h>
50
51#include <bsls_objectbuffer.h>
52
53#include <bslma_default.h>
54
55#include <bsls_assert.h>
56
57#include <bdlb_nullablevalue.h>
58
59#include <bsl_string.h>
60
61#include <bsl_vector.h>
62
63#include <bsl_iosfwd.h>
64#include <bsl_limits.h>
65
66
67
68namespace bslma { class Allocator; }
69
70namespace s_baltst { class MySequenceWithNillable; }
71namespace s_baltst { class MySequenceWithNillableBase64Binary; }
72namespace s_baltst { class MySequenceWithNillableHexBinary; }
73namespace s_baltst { class MySequenceWithNillableIntArray; }
74namespace s_baltst { class MySequenceWithNillableIntSequenceArraySequence; }
75namespace s_baltst { class MySequenceWithNillableStringArray; }
76namespace s_baltst { class MySequenceWithNillableStringSequenceArraySequence; }
77namespace s_baltst { class MySequenceWithNillableIntList; }
78namespace s_baltst { class MySequenceWithNillableIntSequenceArray; }
79namespace s_baltst { class MySequenceWithNillableStringList; }
80namespace s_baltst { class MySequenceWithNillableStringSequenceArray; }
81namespace s_baltst {
82
83 // ============================
84 // class MySequenceWithNillable
85 // ============================
86
88
89 // INSTANCE DATA
90 bsl::string d_attribute2;
92 int d_attribute1;
93
94 public:
95 // TYPES
96 enum {
100 };
101
102 enum {
104 };
105
106 enum {
110 };
111
112 // CONSTANTS
113 static const char CLASS_NAME[];
114
116
117 public:
118 // CLASS METHODS
119
120 /// Return attribute information for the attribute indicated by the
121 /// specified `id` if the attribute exists, and 0 otherwise.
123
124 /// Return attribute information for the attribute indicated by the
125 /// specified `name` of the specified `nameLength` if the attribute
126 /// exists, and 0 otherwise.
128 const char *name,
129 int nameLength);
130
131 // CREATORS
132
133 /// Create an object of type `MySequenceWithNillable` having the default
134 /// value. Use the optionally specified `basicAllocator` to supply
135 /// memory. If `basicAllocator` is 0, the currently installed default
136 /// allocator is used.
137 explicit MySequenceWithNillable(bslma::Allocator *basicAllocator = 0);
138
139 /// Create an object of type `MySequenceWithNillable` having the value
140 /// of the specified `original` object. Use the optionally specified
141 /// `basicAllocator` to supply memory. If `basicAllocator` is 0, the
142 /// currently installed default allocator is used.
144 bslma::Allocator *basicAllocator = 0);
145
146#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) \
147 && defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT)
148 /// Create an object of type `MySequenceWithNillable` having the value
149 /// of the specified `original` object. After performing this action,
150 /// the `original` object will be left in a valid, but unspecified
151 /// state.
153
154 /// Create an object of type `MySequenceWithNillable` having the value
155 /// of the specified `original` object. After performing this action,
156 /// the `original` object will be left in a valid, but unspecified
157 /// state. Use the optionally specified `basicAllocator` to supply
158 /// memory. If `basicAllocator` is 0, the currently installed default
159 /// allocator is used.
161 bslma::Allocator *basicAllocator);
162#endif
163
164 /// Destroy this object.
166
167 // MANIPULATORS
168
169 /// Assign to this object the value of the specified `rhs` object.
171
172#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) \
173 && defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT)
174 /// Assign to this object the value of the specified `rhs` object.
175 /// After performing this action, the `rhs` object will be left in a
176 /// valid, but unspecified state.
178#endif
179
180 /// Reset this object to the default value (i.e., its value upon
181 /// default construction).
182 void reset();
183
184 /// Invoke the specified `manipulator` sequentially on the address of
185 /// each (modifiable) attribute of this object, supplying `manipulator`
186 /// with the corresponding attribute information structure until such
187 /// invocation returns a non-zero value. Return the value from the
188 /// last invocation of `manipulator` (i.e., the invocation that
189 /// terminated the sequence).
190 template<class MANIPULATOR>
191 int manipulateAttributes(MANIPULATOR& manipulator);
192
193 /// Invoke the specified `manipulator` on the address of
194 /// the (modifiable) attribute indicated by the specified `id`,
195 /// supplying `manipulator` with the corresponding attribute
196 /// information structure. Return the value returned from the
197 /// invocation of `manipulator` if `id` identifies an attribute of this
198 /// class, and -1 otherwise.
199 template<class MANIPULATOR>
200 int manipulateAttribute(MANIPULATOR& manipulator, int id);
201
202 /// Invoke the specified `manipulator` on the address of
203 /// the (modifiable) attribute indicated by the specified `name` of the
204 /// specified `nameLength`, supplying `manipulator` with the
205 /// corresponding attribute information structure. Return the value
206 /// returned from the invocation of `manipulator` if `name` identifies
207 /// an attribute of this class, and -1 otherwise.
208 template<class MANIPULATOR>
209 int manipulateAttribute(MANIPULATOR& manipulator,
210 const char *name,
211 int nameLength);
212
213 /// Return a reference to the modifiable "Attribute1" attribute of this
214 /// object.
215 int& attribute1();
216
217 /// Return a reference to the modifiable "MyNillable" attribute of this
218 /// object.
220
221 /// Return a reference to the modifiable "Attribute2" attribute of this
222 /// object.
224
225 // ACCESSORS
226
227 /// Format this object to the specified output `stream` at the
228 /// optionally specified indentation `level` and return a reference to
229 /// the modifiable `stream`. If `level` is specified, optionally
230 /// specify `spacesPerLevel`, the number of spaces per indentation level
231 /// for this and all of its nested objects. Each line is indented by
232 /// the absolute value of `level * spacesPerLevel`. If `level` is
233 /// negative, suppress indentation of the first line. If
234 /// `spacesPerLevel` is negative, suppress line breaks and format the
235 /// entire output on one line. If `stream` is initially invalid, this
236 /// operation has no effect. Note that a trailing newline is provided
237 /// in multiline mode only.
238 bsl::ostream& print(bsl::ostream& stream,
239 int level = 0,
240 int spacesPerLevel = 4) const;
241
242 /// Invoke the specified `accessor` sequentially on each
243 /// (non-modifiable) attribute of this object, supplying `accessor`
244 /// with the corresponding attribute information structure until such
245 /// invocation returns a non-zero value. Return the value from the
246 /// last invocation of `accessor` (i.e., the invocation that terminated
247 /// the sequence).
248 template<class ACCESSOR>
249 int accessAttributes(ACCESSOR& accessor) const;
250
251 /// Invoke the specified `accessor` on the (non-modifiable) attribute
252 /// of this object indicated by the specified `id`, supplying `accessor`
253 /// with the corresponding attribute information structure. Return the
254 /// value returned from the invocation of `accessor` if `id` identifies
255 /// an attribute of this class, and -1 otherwise.
256 template<class ACCESSOR>
257 int accessAttribute(ACCESSOR& accessor, int id) const;
258
259 /// Invoke the specified `accessor` on the (non-modifiable) attribute
260 /// of this object indicated by the specified `name` of the specified
261 /// `nameLength`, supplying `accessor` with the corresponding attribute
262 /// information structure. Return the value returned from the
263 /// invocation of `accessor` if `name` identifies an attribute of this
264 /// class, and -1 otherwise.
265 template<class ACCESSOR>
266 int accessAttribute(ACCESSOR& accessor,
267 const char *name,
268 int nameLength) const;
269
270 /// Return the value of the "Attribute1" attribute of this object.
271 int attribute1() const;
272
273 /// Return a reference offering non-modifiable access to the
274 /// "MyNillable" attribute of this object.
276
277 /// Return a reference offering non-modifiable access to the
278 /// "Attribute2" attribute of this object.
279 const bsl::string& attribute2() const;
280};
281
282// FREE OPERATORS
283
284/// Return `true` if the specified `lhs` and `rhs` attribute objects have
285/// the same value, and `false` otherwise. Two attribute objects have the
286/// same value if each respective attribute has the same value.
287inline
288bool operator==(const MySequenceWithNillable& lhs, const MySequenceWithNillable& rhs);
289
290/// Return `true` if the specified `lhs` and `rhs` attribute objects do not
291/// have the same value, and `false` otherwise. Two attribute objects do
292/// not have the same value if one or more respective attributes differ in
293/// values.
294inline
295bool operator!=(const MySequenceWithNillable& lhs, const MySequenceWithNillable& rhs);
296
297/// Format the specified `rhs` to the specified output `stream` and
298/// return a reference to the modifiable `stream`.
299inline
300bsl::ostream& operator<<(bsl::ostream& stream, const MySequenceWithNillable& rhs);
301
302} // close package namespace
303
304// TRAITS
305
307
308namespace s_baltst {
309
310 // ========================================
311 // class MySequenceWithNillableBase64Binary
312 // ========================================
313
315
316 // INSTANCE DATA
318
319 public:
320 // TYPES
321 enum {
323 };
324
325 enum {
327 };
328
329 enum {
331 };
332
333 // CONSTANTS
334 static const char CLASS_NAME[];
335
337
338 public:
339 // CLASS METHODS
340
341 /// Return attribute information for the attribute indicated by the
342 /// specified `id` if the attribute exists, and 0 otherwise.
344
345 /// Return attribute information for the attribute indicated by the
346 /// specified `name` of the specified `nameLength` if the attribute
347 /// exists, and 0 otherwise.
349 const char *name,
350 int nameLength);
351
352 // CREATORS
353
354 /// Create an object of type `MySequenceWithNillableBase64Binary` having
355 /// the default value. Use the optionally specified `basicAllocator` to
356 /// supply memory. If `basicAllocator` is 0, the currently installed
357 /// default allocator is used.
359
360 /// Create an object of type `MySequenceWithNillableBase64Binary` having
361 /// the value of the specified `original` object. Use the optionally
362 /// specified `basicAllocator` to supply memory. If `basicAllocator` is
363 /// 0, the currently installed default allocator is used.
365 bslma::Allocator *basicAllocator = 0);
366
367#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) \
368 && defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT)
369 /// Create an object of type `MySequenceWithNillableBase64Binary` having
370 /// the value of the specified `original` object. After performing this
371 /// action, the `original` object will be left in a valid, but
372 /// unspecified state.
374
375 /// Create an object of type `MySequenceWithNillableBase64Binary` having
376 /// the value of the specified `original` object. After performing this
377 /// action, the `original` object will be left in a valid, but
378 /// unspecified state. Use the optionally specified `basicAllocator` to
379 /// supply memory. If `basicAllocator` is 0, the currently installed
380 /// default allocator is used.
382 bslma::Allocator *basicAllocator);
383#endif
384
385 /// Destroy this object.
387
388 // MANIPULATORS
389
390 /// Assign to this object the value of the specified `rhs` object.
392
393#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) \
394 && defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT)
395 /// Assign to this object the value of the specified `rhs` object.
396 /// After performing this action, the `rhs` object will be left in a
397 /// valid, but unspecified state.
399#endif
400
401 /// Reset this object to the default value (i.e., its value upon
402 /// default construction).
403 void reset();
404
405 /// Invoke the specified `manipulator` sequentially on the address of
406 /// each (modifiable) attribute of this object, supplying `manipulator`
407 /// with the corresponding attribute information structure until such
408 /// invocation returns a non-zero value. Return the value from the
409 /// last invocation of `manipulator` (i.e., the invocation that
410 /// terminated the sequence).
411 template<class MANIPULATOR>
412 int manipulateAttributes(MANIPULATOR& manipulator);
413
414 /// Invoke the specified `manipulator` on the address of
415 /// the (modifiable) attribute indicated by the specified `id`,
416 /// supplying `manipulator` with the corresponding attribute
417 /// information structure. Return the value returned from the
418 /// invocation of `manipulator` if `id` identifies an attribute of this
419 /// class, and -1 otherwise.
420 template<class MANIPULATOR>
421 int manipulateAttribute(MANIPULATOR& manipulator, int id);
422
423 /// Invoke the specified `manipulator` on the address of
424 /// the (modifiable) attribute indicated by the specified `name` of the
425 /// specified `nameLength`, supplying `manipulator` with the
426 /// corresponding attribute information structure. Return the value
427 /// returned from the invocation of `manipulator` if `name` identifies
428 /// an attribute of this class, and -1 otherwise.
429 template<class MANIPULATOR>
430 int manipulateAttribute(MANIPULATOR& manipulator,
431 const char *name,
432 int nameLength);
433
434 /// Return a reference to the modifiable "Attribute1" attribute of this
435 /// object.
437
438 // ACCESSORS
439
440 /// Format this object to the specified output `stream` at the
441 /// optionally specified indentation `level` and return a reference to
442 /// the modifiable `stream`. If `level` is specified, optionally
443 /// specify `spacesPerLevel`, the number of spaces per indentation level
444 /// for this and all of its nested objects. Each line is indented by
445 /// the absolute value of `level * spacesPerLevel`. If `level` is
446 /// negative, suppress indentation of the first line. If
447 /// `spacesPerLevel` is negative, suppress line breaks and format the
448 /// entire output on one line. If `stream` is initially invalid, this
449 /// operation has no effect. Note that a trailing newline is provided
450 /// in multiline mode only.
451 bsl::ostream& print(bsl::ostream& stream,
452 int level = 0,
453 int spacesPerLevel = 4) const;
454
455 /// Invoke the specified `accessor` sequentially on each
456 /// (non-modifiable) attribute of this object, supplying `accessor`
457 /// with the corresponding attribute information structure until such
458 /// invocation returns a non-zero value. Return the value from the
459 /// last invocation of `accessor` (i.e., the invocation that terminated
460 /// the sequence).
461 template<class ACCESSOR>
462 int accessAttributes(ACCESSOR& accessor) const;
463
464 /// Invoke the specified `accessor` on the (non-modifiable) attribute
465 /// of this object indicated by the specified `id`, supplying `accessor`
466 /// with the corresponding attribute information structure. Return the
467 /// value returned from the invocation of `accessor` if `id` identifies
468 /// an attribute of this class, and -1 otherwise.
469 template<class ACCESSOR>
470 int accessAttribute(ACCESSOR& accessor, int id) const;
471
472 /// Invoke the specified `accessor` on the (non-modifiable) attribute
473 /// of this object indicated by the specified `name` of the specified
474 /// `nameLength`, supplying `accessor` with the corresponding attribute
475 /// information structure. Return the value returned from the
476 /// invocation of `accessor` if `name` identifies an attribute of this
477 /// class, and -1 otherwise.
478 template<class ACCESSOR>
479 int accessAttribute(ACCESSOR& accessor,
480 const char *name,
481 int nameLength) const;
482
483 /// Return a reference offering non-modifiable access to the
484 /// "Attribute1" attribute of this object.
486};
487
488// FREE OPERATORS
489
490/// Return `true` if the specified `lhs` and `rhs` attribute objects have
491/// the same value, and `false` otherwise. Two attribute objects have the
492/// same value if each respective attribute has the same value.
493inline
495
496/// Return `true` if the specified `lhs` and `rhs` attribute objects do not
497/// have the same value, and `false` otherwise. Two attribute objects do
498/// not have the same value if one or more respective attributes differ in
499/// values.
500inline
502
503/// Format the specified `rhs` to the specified output `stream` and
504/// return a reference to the modifiable `stream`.
505inline
506bsl::ostream& operator<<(bsl::ostream& stream, const MySequenceWithNillableBase64Binary& rhs);
507
508} // close package namespace
509
510// TRAITS
511
513
514namespace s_baltst {
515
516 // =====================================
517 // class MySequenceWithNillableHexBinary
518 // =====================================
519
521
522 // INSTANCE DATA
524
525 public:
526 // TYPES
527 enum {
529 };
530
531 enum {
533 };
534
535 enum {
537 };
538
539 // CONSTANTS
540 static const char CLASS_NAME[];
541
543
544 public:
545 // CLASS METHODS
546
547 /// Return attribute information for the attribute indicated by the
548 /// specified `id` if the attribute exists, and 0 otherwise.
550
551 /// Return attribute information for the attribute indicated by the
552 /// specified `name` of the specified `nameLength` if the attribute
553 /// exists, and 0 otherwise.
555 const char *name,
556 int nameLength);
557
558 // CREATORS
559
560 /// Create an object of type `MySequenceWithNillableHexBinary` having
561 /// the default value. Use the optionally specified `basicAllocator` to
562 /// supply memory. If `basicAllocator` is 0, the currently installed
563 /// default allocator is used.
565
566 /// Create an object of type `MySequenceWithNillableHexBinary` having
567 /// the value of the specified `original` object. Use the optionally
568 /// specified `basicAllocator` to supply memory. If `basicAllocator` is
569 /// 0, the currently installed default allocator is used.
571 bslma::Allocator *basicAllocator = 0);
572
573#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) \
574 && defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT)
575 /// Create an object of type `MySequenceWithNillableHexBinary` having
576 /// the value of the specified `original` object. After performing this
577 /// action, the `original` object will be left in a valid, but
578 /// unspecified state.
580
581 /// Create an object of type `MySequenceWithNillableHexBinary` having
582 /// the value of the specified `original` object. After performing this
583 /// action, the `original` object will be left in a valid, but
584 /// unspecified state. Use the optionally specified `basicAllocator` to
585 /// supply memory. If `basicAllocator` is 0, the currently installed
586 /// default allocator is used.
588 bslma::Allocator *basicAllocator);
589#endif
590
591 /// Destroy this object.
593
594 // MANIPULATORS
595
596 /// Assign to this object the value of the specified `rhs` object.
598
599#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) \
600 && defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT)
601 /// Assign to this object the value of the specified `rhs` object.
602 /// After performing this action, the `rhs` object will be left in a
603 /// valid, but unspecified state.
605#endif
606
607 /// Reset this object to the default value (i.e., its value upon
608 /// default construction).
609 void reset();
610
611 /// Invoke the specified `manipulator` sequentially on the address of
612 /// each (modifiable) attribute of this object, supplying `manipulator`
613 /// with the corresponding attribute information structure until such
614 /// invocation returns a non-zero value. Return the value from the
615 /// last invocation of `manipulator` (i.e., the invocation that
616 /// terminated the sequence).
617 template<class MANIPULATOR>
618 int manipulateAttributes(MANIPULATOR& manipulator);
619
620 /// Invoke the specified `manipulator` on the address of
621 /// the (modifiable) attribute indicated by the specified `id`,
622 /// supplying `manipulator` with the corresponding attribute
623 /// information structure. Return the value returned from the
624 /// invocation of `manipulator` if `id` identifies an attribute of this
625 /// class, and -1 otherwise.
626 template<class MANIPULATOR>
627 int manipulateAttribute(MANIPULATOR& manipulator, int id);
628
629 /// Invoke the specified `manipulator` on the address of
630 /// the (modifiable) attribute indicated by the specified `name` of the
631 /// specified `nameLength`, supplying `manipulator` with the
632 /// corresponding attribute information structure. Return the value
633 /// returned from the invocation of `manipulator` if `name` identifies
634 /// an attribute of this class, and -1 otherwise.
635 template<class MANIPULATOR>
636 int manipulateAttribute(MANIPULATOR& manipulator,
637 const char *name,
638 int nameLength);
639
640 /// Return a reference to the modifiable "Attribute1" attribute of this
641 /// object.
643
644 // ACCESSORS
645
646 /// Format this object to the specified output `stream` at the
647 /// optionally specified indentation `level` and return a reference to
648 /// the modifiable `stream`. If `level` is specified, optionally
649 /// specify `spacesPerLevel`, the number of spaces per indentation level
650 /// for this and all of its nested objects. Each line is indented by
651 /// the absolute value of `level * spacesPerLevel`. If `level` is
652 /// negative, suppress indentation of the first line. If
653 /// `spacesPerLevel` is negative, suppress line breaks and format the
654 /// entire output on one line. If `stream` is initially invalid, this
655 /// operation has no effect. Note that a trailing newline is provided
656 /// in multiline mode only.
657 bsl::ostream& print(bsl::ostream& stream,
658 int level = 0,
659 int spacesPerLevel = 4) const;
660
661 /// Invoke the specified `accessor` sequentially on each
662 /// (non-modifiable) attribute of this object, supplying `accessor`
663 /// with the corresponding attribute information structure until such
664 /// invocation returns a non-zero value. Return the value from the
665 /// last invocation of `accessor` (i.e., the invocation that terminated
666 /// the sequence).
667 template<class ACCESSOR>
668 int accessAttributes(ACCESSOR& accessor) const;
669
670 /// Invoke the specified `accessor` on the (non-modifiable) attribute
671 /// of this object indicated by the specified `id`, supplying `accessor`
672 /// with the corresponding attribute information structure. Return the
673 /// value returned from the invocation of `accessor` if `id` identifies
674 /// an attribute of this class, and -1 otherwise.
675 template<class ACCESSOR>
676 int accessAttribute(ACCESSOR& accessor, int id) const;
677
678 /// Invoke the specified `accessor` on the (non-modifiable) attribute
679 /// of this object indicated by the specified `name` of the specified
680 /// `nameLength`, supplying `accessor` with the corresponding attribute
681 /// information structure. Return the value returned from the
682 /// invocation of `accessor` if `name` identifies an attribute of this
683 /// class, and -1 otherwise.
684 template<class ACCESSOR>
685 int accessAttribute(ACCESSOR& accessor,
686 const char *name,
687 int nameLength) const;
688
689 /// Return a reference offering non-modifiable access to the
690 /// "Attribute1" attribute of this object.
692};
693
694// FREE OPERATORS
695
696/// Return `true` if the specified `lhs` and `rhs` attribute objects have
697/// the same value, and `false` otherwise. Two attribute objects have the
698/// same value if each respective attribute has the same value.
699inline
701
702/// Return `true` if the specified `lhs` and `rhs` attribute objects do not
703/// have the same value, and `false` otherwise. Two attribute objects do
704/// not have the same value if one or more respective attributes differ in
705/// values.
706inline
708
709/// Format the specified `rhs` to the specified output `stream` and
710/// return a reference to the modifiable `stream`.
711inline
712bsl::ostream& operator<<(bsl::ostream& stream, const MySequenceWithNillableHexBinary& rhs);
713
714} // close package namespace
715
716// TRAITS
717
719
720namespace s_baltst {
721
722 // ====================================
723 // class MySequenceWithNillableIntArray
724 // ====================================
725
727
728 // INSTANCE DATA
730
731 public:
732 // TYPES
733 enum {
735 };
736
737 enum {
739 };
740
741 enum {
743 };
744
745 // CONSTANTS
746 static const char CLASS_NAME[];
747
749
750 public:
751 // CLASS METHODS
752
753 /// Return attribute information for the attribute indicated by the
754 /// specified `id` if the attribute exists, and 0 otherwise.
756
757 /// Return attribute information for the attribute indicated by the
758 /// specified `name` of the specified `nameLength` if the attribute
759 /// exists, and 0 otherwise.
761 const char *name,
762 int nameLength);
763
764 // CREATORS
765
766 /// Create an object of type `MySequenceWithNillableIntArray` having the
767 /// default value. Use the optionally specified `basicAllocator` to
768 /// supply memory. If `basicAllocator` is 0, the currently installed
769 /// default allocator is used.
771
772 /// Create an object of type `MySequenceWithNillableIntArray` having the
773 /// value of the specified `original` object. Use the optionally
774 /// specified `basicAllocator` to supply memory. If `basicAllocator` is
775 /// 0, the currently installed default allocator is used.
777 bslma::Allocator *basicAllocator = 0);
778
779#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) \
780 && defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT)
781 /// Create an object of type `MySequenceWithNillableIntArray` having the
782 /// value of the specified `original` object. After performing this
783 /// action, the `original` object will be left in a valid, but
784 /// unspecified state.
786
787 /// Create an object of type `MySequenceWithNillableIntArray` having the
788 /// value of the specified `original` object. After performing this
789 /// action, the `original` object will be left in a valid, but
790 /// unspecified state. Use the optionally specified `basicAllocator` to
791 /// supply memory. If `basicAllocator` is 0, the currently installed
792 /// default allocator is used.
794 bslma::Allocator *basicAllocator);
795#endif
796
797 /// Destroy this object.
799
800 // MANIPULATORS
801
802 /// Assign to this object the value of the specified `rhs` object.
804
805#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) \
806 && defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT)
807 /// Assign to this object the value of the specified `rhs` object.
808 /// After performing this action, the `rhs` object will be left in a
809 /// valid, but unspecified state.
811#endif
812
813 /// Reset this object to the default value (i.e., its value upon
814 /// default construction).
815 void reset();
816
817 /// Invoke the specified `manipulator` sequentially on the address of
818 /// each (modifiable) attribute of this object, supplying `manipulator`
819 /// with the corresponding attribute information structure until such
820 /// invocation returns a non-zero value. Return the value from the
821 /// last invocation of `manipulator` (i.e., the invocation that
822 /// terminated the sequence).
823 template<class MANIPULATOR>
824 int manipulateAttributes(MANIPULATOR& manipulator);
825
826 /// Invoke the specified `manipulator` on the address of
827 /// the (modifiable) attribute indicated by the specified `id`,
828 /// supplying `manipulator` with the corresponding attribute
829 /// information structure. Return the value returned from the
830 /// invocation of `manipulator` if `id` identifies an attribute of this
831 /// class, and -1 otherwise.
832 template<class MANIPULATOR>
833 int manipulateAttribute(MANIPULATOR& manipulator, int id);
834
835 /// Invoke the specified `manipulator` on the address of
836 /// the (modifiable) attribute indicated by the specified `name` of the
837 /// specified `nameLength`, supplying `manipulator` with the
838 /// corresponding attribute information structure. Return the value
839 /// returned from the invocation of `manipulator` if `name` identifies
840 /// an attribute of this class, and -1 otherwise.
841 template<class MANIPULATOR>
842 int manipulateAttribute(MANIPULATOR& manipulator,
843 const char *name,
844 int nameLength);
845
846 /// Return a reference to the modifiable "Attribute1" attribute of this
847 /// object.
849
850 // ACCESSORS
851
852 /// Format this object to the specified output `stream` at the
853 /// optionally specified indentation `level` and return a reference to
854 /// the modifiable `stream`. If `level` is specified, optionally
855 /// specify `spacesPerLevel`, the number of spaces per indentation level
856 /// for this and all of its nested objects. Each line is indented by
857 /// the absolute value of `level * spacesPerLevel`. If `level` is
858 /// negative, suppress indentation of the first line. If
859 /// `spacesPerLevel` is negative, suppress line breaks and format the
860 /// entire output on one line. If `stream` is initially invalid, this
861 /// operation has no effect. Note that a trailing newline is provided
862 /// in multiline mode only.
863 bsl::ostream& print(bsl::ostream& stream,
864 int level = 0,
865 int spacesPerLevel = 4) const;
866
867 /// Invoke the specified `accessor` sequentially on each
868 /// (non-modifiable) attribute of this object, supplying `accessor`
869 /// with the corresponding attribute information structure until such
870 /// invocation returns a non-zero value. Return the value from the
871 /// last invocation of `accessor` (i.e., the invocation that terminated
872 /// the sequence).
873 template<class ACCESSOR>
874 int accessAttributes(ACCESSOR& accessor) const;
875
876 /// Invoke the specified `accessor` on the (non-modifiable) attribute
877 /// of this object indicated by the specified `id`, supplying `accessor`
878 /// with the corresponding attribute information structure. Return the
879 /// value returned from the invocation of `accessor` if `id` identifies
880 /// an attribute of this class, and -1 otherwise.
881 template<class ACCESSOR>
882 int accessAttribute(ACCESSOR& accessor, int id) const;
883
884 /// Invoke the specified `accessor` on the (non-modifiable) attribute
885 /// of this object indicated by the specified `name` of the specified
886 /// `nameLength`, supplying `accessor` with the corresponding attribute
887 /// information structure. Return the value returned from the
888 /// invocation of `accessor` if `name` identifies an attribute of this
889 /// class, and -1 otherwise.
890 template<class ACCESSOR>
891 int accessAttribute(ACCESSOR& accessor,
892 const char *name,
893 int nameLength) const;
894
895 /// Return a reference offering non-modifiable access to the
896 /// "Attribute1" attribute of this object.
898};
899
900// FREE OPERATORS
901
902/// Return `true` if the specified `lhs` and `rhs` attribute objects have
903/// the same value, and `false` otherwise. Two attribute objects have the
904/// same value if each respective attribute has the same value.
905inline
907
908/// Return `true` if the specified `lhs` and `rhs` attribute objects do not
909/// have the same value, and `false` otherwise. Two attribute objects do
910/// not have the same value if one or more respective attributes differ in
911/// values.
912inline
914
915/// Format the specified `rhs` to the specified output `stream` and
916/// return a reference to the modifiable `stream`.
917inline
918bsl::ostream& operator<<(bsl::ostream& stream, const MySequenceWithNillableIntArray& rhs);
919
920} // close package namespace
921
922// TRAITS
923
925
926namespace s_baltst {
927
928 // ====================================================
929 // class MySequenceWithNillableIntSequenceArraySequence
930 // ====================================================
931
933
934 // INSTANCE DATA
935 int d_attribute1;
936
937 public:
938 // TYPES
939 enum {
941 };
942
943 enum {
945 };
946
947 enum {
949 };
950
951 // CONSTANTS
952 static const char CLASS_NAME[];
953
955
956 public:
957 // CLASS METHODS
958
959 /// Return attribute information for the attribute indicated by the
960 /// specified `id` if the attribute exists, and 0 otherwise.
962
963 /// Return attribute information for the attribute indicated by the
964 /// specified `name` of the specified `nameLength` if the attribute
965 /// exists, and 0 otherwise.
967 const char *name,
968 int nameLength);
969
970 // CREATORS
971
972 /// Create an object of type
973 /// `MySequenceWithNillableIntSequenceArraySequence` having the default
974 /// value.
976
977 /// Create an object of type
978 /// `MySequenceWithNillableIntSequenceArraySequence` having the value of
979 /// the specified `original` object.
981
982#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) \
983 && defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT)
984 /// Create an object of type
985 /// `MySequenceWithNillableIntSequenceArraySequence` having the value of
986 /// the specified `original` object. After performing this action, the
987 /// `original` object will be left in a valid, but unspecified state.
989#endif
990
991 /// Destroy this object.
993
994 // MANIPULATORS
995
996 /// Assign to this object the value of the specified `rhs` object.
998
999#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) \
1000 && defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT)
1001 /// Assign to this object the value of the specified `rhs` object.
1002 /// After performing this action, the `rhs` object will be left in a
1003 /// valid, but unspecified state.
1005#endif
1006
1007 /// Reset this object to the default value (i.e., its value upon
1008 /// default construction).
1009 void reset();
1010
1011 /// Invoke the specified `manipulator` sequentially on the address of
1012 /// each (modifiable) attribute of this object, supplying `manipulator`
1013 /// with the corresponding attribute information structure until such
1014 /// invocation returns a non-zero value. Return the value from the
1015 /// last invocation of `manipulator` (i.e., the invocation that
1016 /// terminated the sequence).
1017 template<class MANIPULATOR>
1018 int manipulateAttributes(MANIPULATOR& manipulator);
1019
1020 /// Invoke the specified `manipulator` on the address of
1021 /// the (modifiable) attribute indicated by the specified `id`,
1022 /// supplying `manipulator` with the corresponding attribute
1023 /// information structure. Return the value returned from the
1024 /// invocation of `manipulator` if `id` identifies an attribute of this
1025 /// class, and -1 otherwise.
1026 template<class MANIPULATOR>
1027 int manipulateAttribute(MANIPULATOR& manipulator, int id);
1028
1029 /// Invoke the specified `manipulator` on the address of
1030 /// the (modifiable) attribute indicated by the specified `name` of the
1031 /// specified `nameLength`, supplying `manipulator` with the
1032 /// corresponding attribute information structure. Return the value
1033 /// returned from the invocation of `manipulator` if `name` identifies
1034 /// an attribute of this class, and -1 otherwise.
1035 template<class MANIPULATOR>
1036 int manipulateAttribute(MANIPULATOR& manipulator,
1037 const char *name,
1038 int nameLength);
1039
1040 /// Return a reference to the modifiable "Attribute1" attribute of this
1041 /// object.
1042 int& attribute1();
1043
1044 // ACCESSORS
1045
1046 /// Format this object to the specified output `stream` at the
1047 /// optionally specified indentation `level` and return a reference to
1048 /// the modifiable `stream`. If `level` is specified, optionally
1049 /// specify `spacesPerLevel`, the number of spaces per indentation level
1050 /// for this and all of its nested objects. Each line is indented by
1051 /// the absolute value of `level * spacesPerLevel`. If `level` is
1052 /// negative, suppress indentation of the first line. If
1053 /// `spacesPerLevel` is negative, suppress line breaks and format the
1054 /// entire output on one line. If `stream` is initially invalid, this
1055 /// operation has no effect. Note that a trailing newline is provided
1056 /// in multiline mode only.
1057 bsl::ostream& print(bsl::ostream& stream,
1058 int level = 0,
1059 int spacesPerLevel = 4) const;
1060
1061 /// Invoke the specified `accessor` sequentially on each
1062 /// (non-modifiable) attribute of this object, supplying `accessor`
1063 /// with the corresponding attribute information structure until such
1064 /// invocation returns a non-zero value. Return the value from the
1065 /// last invocation of `accessor` (i.e., the invocation that terminated
1066 /// the sequence).
1067 template<class ACCESSOR>
1068 int accessAttributes(ACCESSOR& accessor) const;
1069
1070 /// Invoke the specified `accessor` on the (non-modifiable) attribute
1071 /// of this object indicated by the specified `id`, supplying `accessor`
1072 /// with the corresponding attribute information structure. Return the
1073 /// value returned from the invocation of `accessor` if `id` identifies
1074 /// an attribute of this class, and -1 otherwise.
1075 template<class ACCESSOR>
1076 int accessAttribute(ACCESSOR& accessor, int id) const;
1077
1078 /// Invoke the specified `accessor` on the (non-modifiable) attribute
1079 /// of this object indicated by the specified `name` of the specified
1080 /// `nameLength`, supplying `accessor` with the corresponding attribute
1081 /// information structure. Return the value returned from the
1082 /// invocation of `accessor` if `name` identifies an attribute of this
1083 /// class, and -1 otherwise.
1084 template<class ACCESSOR>
1085 int accessAttribute(ACCESSOR& accessor,
1086 const char *name,
1087 int nameLength) const;
1088
1089 /// Return the value of the "Attribute1" attribute of this object.
1090 int attribute1() const;
1091};
1092
1093// FREE OPERATORS
1094
1095/// Return `true` if the specified `lhs` and `rhs` attribute objects have
1096/// the same value, and `false` otherwise. Two attribute objects have the
1097/// same value if each respective attribute has the same value.
1098inline
1100
1101/// Return `true` if the specified `lhs` and `rhs` attribute objects do not
1102/// have the same value, and `false` otherwise. Two attribute objects do
1103/// not have the same value if one or more respective attributes differ in
1104/// values.
1105inline
1107
1108/// Format the specified `rhs` to the specified output `stream` and
1109/// return a reference to the modifiable `stream`.
1110inline
1111bsl::ostream& operator<<(bsl::ostream& stream, const MySequenceWithNillableIntSequenceArraySequence& rhs);
1112
1113} // close package namespace
1114
1115// TRAITS
1116
1118
1119namespace s_baltst {
1120
1121 // =======================================
1122 // class MySequenceWithNillableStringArray
1123 // =======================================
1124
1126
1127 // INSTANCE DATA
1129
1130 public:
1131 // TYPES
1132 enum {
1135
1136 enum {
1137 NUM_ATTRIBUTES = 1
1139
1140 enum {
1143
1144 // CONSTANTS
1145 static const char CLASS_NAME[];
1146
1148
1149 public:
1150 // CLASS METHODS
1151
1152 /// Return attribute information for the attribute indicated by the
1153 /// specified `id` if the attribute exists, and 0 otherwise.
1155
1156 /// Return attribute information for the attribute indicated by the
1157 /// specified `name` of the specified `nameLength` if the attribute
1158 /// exists, and 0 otherwise.
1160 const char *name,
1161 int nameLength);
1162
1163 // CREATORS
1164
1165 /// Create an object of type `MySequenceWithNillableStringArray` having
1166 /// the default value. Use the optionally specified `basicAllocator` to
1167 /// supply memory. If `basicAllocator` is 0, the currently installed
1168 /// default allocator is used.
1170
1171 /// Create an object of type `MySequenceWithNillableStringArray` having
1172 /// the value of the specified `original` object. Use the optionally
1173 /// specified `basicAllocator` to supply memory. If `basicAllocator` is
1174 /// 0, the currently installed default allocator is used.
1176 bslma::Allocator *basicAllocator = 0);
1177
1178#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) \
1179 && defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT)
1180 /// Create an object of type `MySequenceWithNillableStringArray` having
1181 /// the value of the specified `original` object. After performing this
1182 /// action, the `original` object will be left in a valid, but
1183 /// unspecified state.
1185
1186 /// Create an object of type `MySequenceWithNillableStringArray` having
1187 /// the value of the specified `original` object. After performing this
1188 /// action, the `original` object will be left in a valid, but
1189 /// unspecified state. Use the optionally specified `basicAllocator` to
1190 /// supply memory. If `basicAllocator` is 0, the currently installed
1191 /// default allocator is used.
1193 bslma::Allocator *basicAllocator);
1194#endif
1195
1196 /// Destroy this object.
1198
1199 // MANIPULATORS
1200
1201 /// Assign to this object the value of the specified `rhs` object.
1203
1204#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) \
1205 && defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT)
1206 /// Assign to this object the value of the specified `rhs` object.
1207 /// After performing this action, the `rhs` object will be left in a
1208 /// valid, but unspecified state.
1210#endif
1211
1212 /// Reset this object to the default value (i.e., its value upon
1213 /// default construction).
1214 void reset();
1215
1216 /// Invoke the specified `manipulator` sequentially on the address of
1217 /// each (modifiable) attribute of this object, supplying `manipulator`
1218 /// with the corresponding attribute information structure until such
1219 /// invocation returns a non-zero value. Return the value from the
1220 /// last invocation of `manipulator` (i.e., the invocation that
1221 /// terminated the sequence).
1222 template<class MANIPULATOR>
1223 int manipulateAttributes(MANIPULATOR& manipulator);
1224
1225 /// Invoke the specified `manipulator` on the address of
1226 /// the (modifiable) attribute indicated by the specified `id`,
1227 /// supplying `manipulator` with the corresponding attribute
1228 /// information structure. Return the value returned from the
1229 /// invocation of `manipulator` if `id` identifies an attribute of this
1230 /// class, and -1 otherwise.
1231 template<class MANIPULATOR>
1232 int manipulateAttribute(MANIPULATOR& manipulator, int id);
1233
1234 /// Invoke the specified `manipulator` on the address of
1235 /// the (modifiable) attribute indicated by the specified `name` of the
1236 /// specified `nameLength`, supplying `manipulator` with the
1237 /// corresponding attribute information structure. Return the value
1238 /// returned from the invocation of `manipulator` if `name` identifies
1239 /// an attribute of this class, and -1 otherwise.
1240 template<class MANIPULATOR>
1241 int manipulateAttribute(MANIPULATOR& manipulator,
1242 const char *name,
1243 int nameLength);
1244
1245 /// Return a reference to the modifiable "Attribute1" attribute of this
1246 /// object.
1248
1249 // ACCESSORS
1250
1251 /// Format this object to the specified output `stream` at the
1252 /// optionally specified indentation `level` and return a reference to
1253 /// the modifiable `stream`. If `level` is specified, optionally
1254 /// specify `spacesPerLevel`, the number of spaces per indentation level
1255 /// for this and all of its nested objects. Each line is indented by
1256 /// the absolute value of `level * spacesPerLevel`. If `level` is
1257 /// negative, suppress indentation of the first line. If
1258 /// `spacesPerLevel` is negative, suppress line breaks and format the
1259 /// entire output on one line. If `stream` is initially invalid, this
1260 /// operation has no effect. Note that a trailing newline is provided
1261 /// in multiline mode only.
1262 bsl::ostream& print(bsl::ostream& stream,
1263 int level = 0,
1264 int spacesPerLevel = 4) const;
1265
1266 /// Invoke the specified `accessor` sequentially on each
1267 /// (non-modifiable) attribute of this object, supplying `accessor`
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 `accessor` (i.e., the invocation that terminated
1271 /// the sequence).
1272 template<class ACCESSOR>
1273 int accessAttributes(ACCESSOR& accessor) const;
1274
1275 /// Invoke the specified `accessor` on the (non-modifiable) attribute
1276 /// of this object indicated by the specified `id`, supplying `accessor`
1277 /// with the corresponding attribute information structure. Return the
1278 /// value returned from the invocation of `accessor` if `id` identifies
1279 /// an attribute of this class, and -1 otherwise.
1280 template<class ACCESSOR>
1281 int accessAttribute(ACCESSOR& accessor, int id) const;
1282
1283 /// Invoke the specified `accessor` on the (non-modifiable) attribute
1284 /// of this object indicated by the specified `name` of the specified
1285 /// `nameLength`, supplying `accessor` with the corresponding attribute
1286 /// information structure. Return the value returned from the
1287 /// invocation of `accessor` if `name` identifies an attribute of this
1288 /// class, and -1 otherwise.
1289 template<class ACCESSOR>
1290 int accessAttribute(ACCESSOR& accessor,
1291 const char *name,
1292 int nameLength) const;
1293
1294 /// Return a reference offering non-modifiable access to the
1295 /// "Attribute1" attribute of this object.
1297};
1298
1299// FREE OPERATORS
1300
1301/// Return `true` if the specified `lhs` and `rhs` attribute objects have
1302/// the same value, and `false` otherwise. Two attribute objects have the
1303/// same value if each respective attribute has the same value.
1304inline
1306
1307/// Return `true` if the specified `lhs` and `rhs` attribute objects do not
1308/// have the same value, and `false` otherwise. Two attribute objects do
1309/// not have the same value if one or more respective attributes differ in
1310/// values.
1311inline
1313
1314/// Format the specified `rhs` to the specified output `stream` and
1315/// return a reference to the modifiable `stream`.
1316inline
1317bsl::ostream& operator<<(bsl::ostream& stream, const MySequenceWithNillableStringArray& rhs);
1318
1319} // close package namespace
1320
1321// TRAITS
1322
1324
1325namespace s_baltst {
1326
1327 // =======================================================
1328 // class MySequenceWithNillableStringSequenceArraySequence
1329 // =======================================================
1330
1332
1333 // INSTANCE DATA
1334 bsl::string d_attribute1;
1335
1336 public:
1337 // TYPES
1338 enum {
1341
1342 enum {
1343 NUM_ATTRIBUTES = 1
1345
1346 enum {
1349
1350 // CONSTANTS
1351 static const char CLASS_NAME[];
1352
1354
1355 public:
1356 // CLASS METHODS
1357
1358 /// Return attribute information for the attribute indicated by the
1359 /// specified `id` if the attribute exists, and 0 otherwise.
1361
1362 /// Return attribute information for the attribute indicated by the
1363 /// specified `name` of the specified `nameLength` if the attribute
1364 /// exists, and 0 otherwise.
1366 const char *name,
1367 int nameLength);
1368
1369 // CREATORS
1370
1371 /// Create an object of type
1372 /// `MySequenceWithNillableStringSequenceArraySequence` having the
1373 /// default value. Use the optionally specified `basicAllocator` to
1374 /// supply memory. If `basicAllocator` is 0, the currently installed
1375 /// default allocator is used.
1377
1378 /// Create an object of type
1379 /// `MySequenceWithNillableStringSequenceArraySequence` having the value
1380 /// of the specified `original` object. Use the optionally specified
1381 /// `basicAllocator` to supply memory. If `basicAllocator` is 0, the
1382 /// currently installed default allocator is used.
1384 bslma::Allocator *basicAllocator = 0);
1385
1386#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) \
1387 && defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT)
1388 /// Create an object of type
1389 /// `MySequenceWithNillableStringSequenceArraySequence` having the value
1390 /// of the specified `original` object. After performing this action,
1391 /// the `original` object will be left in a valid, but unspecified
1392 /// state.
1394
1395 /// Create an object of type
1396 /// `MySequenceWithNillableStringSequenceArraySequence` having the value
1397 /// of the specified `original` object. After performing this action,
1398 /// the `original` object will be left in a valid, but unspecified
1399 /// state. Use the optionally specified `basicAllocator` to supply
1400 /// memory. If `basicAllocator` is 0, the currently installed default
1401 /// allocator is used.
1403 bslma::Allocator *basicAllocator);
1404#endif
1405
1406 /// Destroy this object.
1408
1409 // MANIPULATORS
1410
1411 /// Assign to this object the value of the specified `rhs` object.
1413
1414#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) \
1415 && defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT)
1416 /// Assign to this object the value of the specified `rhs` object.
1417 /// After performing this action, the `rhs` object will be left in a
1418 /// valid, but unspecified state.
1420#endif
1421
1422 /// Reset this object to the default value (i.e., its value upon
1423 /// default construction).
1424 void reset();
1425
1426 /// Invoke the specified `manipulator` sequentially on the address of
1427 /// each (modifiable) attribute of this object, supplying `manipulator`
1428 /// with the corresponding attribute information structure until such
1429 /// invocation returns a non-zero value. Return the value from the
1430 /// last invocation of `manipulator` (i.e., the invocation that
1431 /// terminated the sequence).
1432 template<class MANIPULATOR>
1433 int manipulateAttributes(MANIPULATOR& manipulator);
1434
1435 /// Invoke the specified `manipulator` on the address of
1436 /// the (modifiable) attribute indicated by the specified `id`,
1437 /// supplying `manipulator` with the corresponding attribute
1438 /// information structure. Return the value returned from the
1439 /// invocation of `manipulator` if `id` identifies an attribute of this
1440 /// class, and -1 otherwise.
1441 template<class MANIPULATOR>
1442 int manipulateAttribute(MANIPULATOR& manipulator, int id);
1443
1444 /// Invoke the specified `manipulator` on the address of
1445 /// the (modifiable) attribute indicated by the specified `name` of the
1446 /// specified `nameLength`, supplying `manipulator` with the
1447 /// corresponding attribute information structure. Return the value
1448 /// returned from the invocation of `manipulator` if `name` identifies
1449 /// an attribute of this class, and -1 otherwise.
1450 template<class MANIPULATOR>
1451 int manipulateAttribute(MANIPULATOR& manipulator,
1452 const char *name,
1453 int nameLength);
1454
1455 /// Return a reference to the modifiable "Attribute1" attribute of this
1456 /// object.
1458
1459 // ACCESSORS
1460
1461 /// Format this object to the specified output `stream` at the
1462 /// optionally specified indentation `level` and return a reference to
1463 /// the modifiable `stream`. If `level` is specified, optionally
1464 /// specify `spacesPerLevel`, the number of spaces per indentation level
1465 /// for this and all of its nested objects. Each line is indented by
1466 /// the absolute value of `level * spacesPerLevel`. If `level` is
1467 /// negative, suppress indentation of the first line. If
1468 /// `spacesPerLevel` is negative, suppress line breaks and format the
1469 /// entire output on one line. If `stream` is initially invalid, this
1470 /// operation has no effect. Note that a trailing newline is provided
1471 /// in multiline mode only.
1472 bsl::ostream& print(bsl::ostream& stream,
1473 int level = 0,
1474 int spacesPerLevel = 4) const;
1475
1476 /// Invoke the specified `accessor` sequentially on each
1477 /// (non-modifiable) attribute of this object, supplying `accessor`
1478 /// with the corresponding attribute information structure until such
1479 /// invocation returns a non-zero value. Return the value from the
1480 /// last invocation of `accessor` (i.e., the invocation that terminated
1481 /// the sequence).
1482 template<class ACCESSOR>
1483 int accessAttributes(ACCESSOR& accessor) const;
1484
1485 /// Invoke the specified `accessor` on the (non-modifiable) attribute
1486 /// of this object indicated by the specified `id`, supplying `accessor`
1487 /// with the corresponding attribute information structure. Return the
1488 /// value returned from the invocation of `accessor` if `id` identifies
1489 /// an attribute of this class, and -1 otherwise.
1490 template<class ACCESSOR>
1491 int accessAttribute(ACCESSOR& accessor, int id) const;
1492
1493 /// Invoke the specified `accessor` on the (non-modifiable) attribute
1494 /// of this object indicated by the specified `name` of the specified
1495 /// `nameLength`, supplying `accessor` with the corresponding attribute
1496 /// information structure. Return the value returned from the
1497 /// invocation of `accessor` if `name` identifies an attribute of this
1498 /// class, and -1 otherwise.
1499 template<class ACCESSOR>
1500 int accessAttribute(ACCESSOR& accessor,
1501 const char *name,
1502 int nameLength) const;
1503
1504 /// Return a reference offering non-modifiable access to the
1505 /// "Attribute1" attribute of this object.
1506 const bsl::string& attribute1() const;
1507};
1508
1509// FREE OPERATORS
1510
1511/// Return `true` if the specified `lhs` and `rhs` attribute objects have
1512/// the same value, and `false` otherwise. Two attribute objects have the
1513/// same value if each respective attribute has the same value.
1514inline
1516
1517/// Return `true` if the specified `lhs` and `rhs` attribute objects do not
1518/// have the same value, and `false` otherwise. Two attribute objects do
1519/// not have the same value if one or more respective attributes differ in
1520/// values.
1521inline
1523
1524/// Format the specified `rhs` to the specified output `stream` and
1525/// return a reference to the modifiable `stream`.
1526inline
1527bsl::ostream& operator<<(bsl::ostream& stream, const MySequenceWithNillableStringSequenceArraySequence& rhs);
1528
1529} // close package namespace
1530
1531// TRAITS
1532
1534
1535namespace s_baltst {
1536
1537 // ===================================
1538 // class MySequenceWithNillableIntList
1539 // ===================================
1540
1542
1543 // INSTANCE DATA
1545
1546 public:
1547 // TYPES
1548 enum {
1551
1552 enum {
1553 NUM_ATTRIBUTES = 1
1555
1556 enum {
1559
1560 // CONSTANTS
1561 static const char CLASS_NAME[];
1562
1564
1565 public:
1566 // CLASS METHODS
1567
1568 /// Return attribute information for the attribute indicated by the
1569 /// specified `id` if the attribute exists, and 0 otherwise.
1571
1572 /// Return attribute information for the attribute indicated by the
1573 /// specified `name` of the specified `nameLength` if the attribute
1574 /// exists, and 0 otherwise.
1576 const char *name,
1577 int nameLength);
1578
1579 // CREATORS
1580
1581 /// Create an object of type `MySequenceWithNillableIntList` having the
1582 /// default value. Use the optionally specified `basicAllocator` to
1583 /// supply memory. If `basicAllocator` is 0, the currently installed
1584 /// default allocator is used.
1586
1587 /// Create an object of type `MySequenceWithNillableIntList` having the
1588 /// value of the specified `original` object. Use the optionally
1589 /// specified `basicAllocator` to supply memory. If `basicAllocator` is
1590 /// 0, the currently installed default allocator is used.
1592 bslma::Allocator *basicAllocator = 0);
1593
1594#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) \
1595 && defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT)
1596 /// Create an object of type `MySequenceWithNillableIntList` having the
1597 /// value of the specified `original` object. After performing this
1598 /// action, the `original` object will be left in a valid, but
1599 /// unspecified state.
1601
1602 /// Create an object of type `MySequenceWithNillableIntList` having the
1603 /// value of the specified `original` object. After performing this
1604 /// action, the `original` object will be left in a valid, but
1605 /// unspecified state. Use the optionally specified `basicAllocator` to
1606 /// supply memory. If `basicAllocator` is 0, the currently installed
1607 /// default allocator is used.
1609 bslma::Allocator *basicAllocator);
1610#endif
1611
1612 /// Destroy this object.
1614
1615 // MANIPULATORS
1616
1617 /// Assign to this object the value of the specified `rhs` object.
1619
1620#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) \
1621 && defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT)
1622 /// Assign to this object the value of the specified `rhs` object.
1623 /// After performing this action, the `rhs` object will be left in a
1624 /// valid, but unspecified state.
1626#endif
1627
1628 /// Reset this object to the default value (i.e., its value upon
1629 /// default construction).
1630 void reset();
1631
1632 /// Invoke the specified `manipulator` sequentially on the address of
1633 /// each (modifiable) attribute of this object, supplying `manipulator`
1634 /// with the corresponding attribute information structure until such
1635 /// invocation returns a non-zero value. Return the value from the
1636 /// last invocation of `manipulator` (i.e., the invocation that
1637 /// terminated the sequence).
1638 template<class MANIPULATOR>
1639 int manipulateAttributes(MANIPULATOR& manipulator);
1640
1641 /// Invoke the specified `manipulator` on the address of
1642 /// the (modifiable) attribute indicated by the specified `id`,
1643 /// supplying `manipulator` with the corresponding attribute
1644 /// information structure. Return the value returned from the
1645 /// invocation of `manipulator` if `id` identifies an attribute of this
1646 /// class, and -1 otherwise.
1647 template<class MANIPULATOR>
1648 int manipulateAttribute(MANIPULATOR& manipulator, int id);
1649
1650 /// Invoke the specified `manipulator` on the address of
1651 /// the (modifiable) attribute indicated by the specified `name` of the
1652 /// specified `nameLength`, supplying `manipulator` with the
1653 /// corresponding attribute information structure. Return the value
1654 /// returned from the invocation of `manipulator` if `name` identifies
1655 /// an attribute of this class, and -1 otherwise.
1656 template<class MANIPULATOR>
1657 int manipulateAttribute(MANIPULATOR& manipulator,
1658 const char *name,
1659 int nameLength);
1660
1661 /// Return a reference to the modifiable "Attribute1" attribute of this
1662 /// object.
1664
1665 // ACCESSORS
1666
1667 /// Format this object to the specified output `stream` at the
1668 /// optionally specified indentation `level` and return a reference to
1669 /// the modifiable `stream`. If `level` is specified, optionally
1670 /// specify `spacesPerLevel`, the number of spaces per indentation level
1671 /// for this and all of its nested objects. Each line is indented by
1672 /// the absolute value of `level * spacesPerLevel`. If `level` is
1673 /// negative, suppress indentation of the first line. If
1674 /// `spacesPerLevel` is negative, suppress line breaks and format the
1675 /// entire output on one line. If `stream` is initially invalid, this
1676 /// operation has no effect. Note that a trailing newline is provided
1677 /// in multiline mode only.
1678 bsl::ostream& print(bsl::ostream& stream,
1679 int level = 0,
1680 int spacesPerLevel = 4) const;
1681
1682 /// Invoke the specified `accessor` sequentially on each
1683 /// (non-modifiable) attribute of this object, supplying `accessor`
1684 /// with the corresponding attribute information structure until such
1685 /// invocation returns a non-zero value. Return the value from the
1686 /// last invocation of `accessor` (i.e., the invocation that terminated
1687 /// the sequence).
1688 template<class ACCESSOR>
1689 int accessAttributes(ACCESSOR& accessor) const;
1690
1691 /// Invoke the specified `accessor` on the (non-modifiable) attribute
1692 /// of this object indicated by the specified `id`, supplying `accessor`
1693 /// with the corresponding attribute information structure. Return the
1694 /// value returned from the invocation of `accessor` if `id` identifies
1695 /// an attribute of this class, and -1 otherwise.
1696 template<class ACCESSOR>
1697 int accessAttribute(ACCESSOR& accessor, int id) const;
1698
1699 /// Invoke the specified `accessor` on the (non-modifiable) attribute
1700 /// of this object indicated by the specified `name` of the specified
1701 /// `nameLength`, supplying `accessor` with the corresponding attribute
1702 /// information structure. Return the value returned from the
1703 /// invocation of `accessor` if `name` identifies an attribute of this
1704 /// class, and -1 otherwise.
1705 template<class ACCESSOR>
1706 int accessAttribute(ACCESSOR& accessor,
1707 const char *name,
1708 int nameLength) const;
1709
1710 /// Return a reference offering non-modifiable access to the
1711 /// "Attribute1" attribute of this object.
1713};
1714
1715// FREE OPERATORS
1716
1717/// Return `true` if the specified `lhs` and `rhs` attribute objects have
1718/// the same value, and `false` otherwise. Two attribute objects have the
1719/// same value if each respective attribute has the same value.
1720inline
1721bool operator==(const MySequenceWithNillableIntList& lhs, const MySequenceWithNillableIntList& rhs);
1722
1723/// Return `true` if the specified `lhs` and `rhs` attribute objects do not
1724/// have the same value, and `false` otherwise. Two attribute objects do
1725/// not have the same value if one or more respective attributes differ in
1726/// values.
1727inline
1728bool operator!=(const MySequenceWithNillableIntList& lhs, const MySequenceWithNillableIntList& rhs);
1729
1730/// Format the specified `rhs` to the specified output `stream` and
1731/// return a reference to the modifiable `stream`.
1732inline
1733bsl::ostream& operator<<(bsl::ostream& stream, const MySequenceWithNillableIntList& rhs);
1734
1735} // close package namespace
1736
1737// TRAITS
1738
1740
1741namespace s_baltst {
1742
1743 // ============================================
1744 // class MySequenceWithNillableIntSequenceArray
1745 // ============================================
1746
1748
1749 // INSTANCE DATA
1751
1752 public:
1753 // TYPES
1754 enum {
1757
1758 enum {
1759 NUM_ATTRIBUTES = 1
1761
1762 enum {
1765
1766 // CONSTANTS
1767 static const char CLASS_NAME[];
1768
1770
1771 public:
1772 // CLASS METHODS
1773
1774 /// Return attribute information for the attribute indicated by the
1775 /// specified `id` if the attribute exists, and 0 otherwise.
1777
1778 /// Return attribute information for the attribute indicated by the
1779 /// specified `name` of the specified `nameLength` if the attribute
1780 /// exists, and 0 otherwise.
1782 const char *name,
1783 int nameLength);
1784
1785 // CREATORS
1786
1787 /// Create an object of type `MySequenceWithNillableIntSequenceArray`
1788 /// having the default value. Use the optionally specified
1789 /// `basicAllocator` to supply memory. If `basicAllocator` is 0, the
1790 /// currently installed default allocator is used.
1792
1793 /// Create an object of type `MySequenceWithNillableIntSequenceArray`
1794 /// having the value of the specified `original` object. Use the
1795 /// optionally specified `basicAllocator` to supply memory. If
1796 /// `basicAllocator` is 0, the currently installed default allocator is
1797 /// used.
1799 bslma::Allocator *basicAllocator = 0);
1800
1801#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) \
1802 && defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT)
1803 /// Create an object of type `MySequenceWithNillableIntSequenceArray`
1804 /// having the value of the specified `original` object. After
1805 /// performing this action, the `original` object will be left in a
1806 /// valid, but unspecified state.
1808
1809 /// Create an object of type `MySequenceWithNillableIntSequenceArray`
1810 /// having the value of the specified `original` object. After
1811 /// performing this action, the `original` object will be left in a
1812 /// valid, but unspecified state. Use the optionally specified
1813 /// `basicAllocator` to supply memory. If `basicAllocator` is 0, the
1814 /// currently installed default allocator is used.
1816 bslma::Allocator *basicAllocator);
1817#endif
1818
1819 /// Destroy this object.
1821
1822 // MANIPULATORS
1823
1824 /// Assign to this object the value of the specified `rhs` object.
1826
1827#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) \
1828 && defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT)
1829 /// Assign to this object the value of the specified `rhs` object.
1830 /// After performing this action, the `rhs` object will be left in a
1831 /// valid, but unspecified state.
1833#endif
1834
1835 /// Reset this object to the default value (i.e., its value upon
1836 /// default construction).
1837 void reset();
1838
1839 /// Invoke the specified `manipulator` sequentially on the address of
1840 /// each (modifiable) attribute of this object, supplying `manipulator`
1841 /// with the corresponding attribute information structure until such
1842 /// invocation returns a non-zero value. Return the value from the
1843 /// last invocation of `manipulator` (i.e., the invocation that
1844 /// terminated the sequence).
1845 template<class MANIPULATOR>
1846 int manipulateAttributes(MANIPULATOR& manipulator);
1847
1848 /// Invoke the specified `manipulator` on the address of
1849 /// the (modifiable) attribute indicated by the specified `id`,
1850 /// supplying `manipulator` with the corresponding attribute
1851 /// information structure. Return the value returned from the
1852 /// invocation of `manipulator` if `id` identifies an attribute of this
1853 /// class, and -1 otherwise.
1854 template<class MANIPULATOR>
1855 int manipulateAttribute(MANIPULATOR& manipulator, int id);
1856
1857 /// Invoke the specified `manipulator` on the address of
1858 /// the (modifiable) attribute indicated by the specified `name` of the
1859 /// specified `nameLength`, supplying `manipulator` with the
1860 /// corresponding attribute information structure. Return the value
1861 /// returned from the invocation of `manipulator` if `name` identifies
1862 /// an attribute of this class, and -1 otherwise.
1863 template<class MANIPULATOR>
1864 int manipulateAttribute(MANIPULATOR& manipulator,
1865 const char *name,
1866 int nameLength);
1867
1868 /// Return a reference to the modifiable "Attribute1" attribute of this
1869 /// object.
1871
1872 // ACCESSORS
1873
1874 /// Format this object to the specified output `stream` at the
1875 /// optionally specified indentation `level` and return a reference to
1876 /// the modifiable `stream`. If `level` is specified, optionally
1877 /// specify `spacesPerLevel`, the number of spaces per indentation level
1878 /// for this and all of its nested objects. Each line is indented by
1879 /// the absolute value of `level * spacesPerLevel`. If `level` is
1880 /// negative, suppress indentation of the first line. If
1881 /// `spacesPerLevel` is negative, suppress line breaks and format the
1882 /// entire output on one line. If `stream` is initially invalid, this
1883 /// operation has no effect. Note that a trailing newline is provided
1884 /// in multiline mode only.
1885 bsl::ostream& print(bsl::ostream& stream,
1886 int level = 0,
1887 int spacesPerLevel = 4) const;
1888
1889 /// Invoke the specified `accessor` sequentially on each
1890 /// (non-modifiable) attribute of this object, supplying `accessor`
1891 /// with the corresponding attribute information structure until such
1892 /// invocation returns a non-zero value. Return the value from the
1893 /// last invocation of `accessor` (i.e., the invocation that terminated
1894 /// the sequence).
1895 template<class ACCESSOR>
1896 int accessAttributes(ACCESSOR& accessor) const;
1897
1898 /// Invoke the specified `accessor` on the (non-modifiable) attribute
1899 /// of this object indicated by the specified `id`, supplying `accessor`
1900 /// with the corresponding attribute information structure. Return the
1901 /// value returned from the invocation of `accessor` if `id` identifies
1902 /// an attribute of this class, and -1 otherwise.
1903 template<class ACCESSOR>
1904 int accessAttribute(ACCESSOR& accessor, int id) const;
1905
1906 /// Invoke the specified `accessor` on the (non-modifiable) attribute
1907 /// of this object indicated by the specified `name` of the specified
1908 /// `nameLength`, supplying `accessor` with the corresponding attribute
1909 /// information structure. Return the value returned from the
1910 /// invocation of `accessor` if `name` identifies an attribute of this
1911 /// class, and -1 otherwise.
1912 template<class ACCESSOR>
1913 int accessAttribute(ACCESSOR& accessor,
1914 const char *name,
1915 int nameLength) const;
1916
1917 /// Return a reference offering non-modifiable access to the
1918 /// "Attribute1" attribute of this object.
1920};
1921
1922// FREE OPERATORS
1923
1924/// Return `true` if the specified `lhs` and `rhs` attribute objects have
1925/// the same value, and `false` otherwise. Two attribute objects have the
1926/// same value if each respective attribute has the same value.
1927inline
1929
1930/// Return `true` if the specified `lhs` and `rhs` attribute objects do not
1931/// have the same value, and `false` otherwise. Two attribute objects do
1932/// not have the same value if one or more respective attributes differ in
1933/// values.
1934inline
1936
1937/// Format the specified `rhs` to the specified output `stream` and
1938/// return a reference to the modifiable `stream`.
1939inline
1940bsl::ostream& operator<<(bsl::ostream& stream, const MySequenceWithNillableIntSequenceArray& rhs);
1941
1942} // close package namespace
1943
1944// TRAITS
1945
1947
1948namespace s_baltst {
1949
1950 // ======================================
1951 // class MySequenceWithNillableStringList
1952 // ======================================
1953
1955
1956 // INSTANCE DATA
1958
1959 public:
1960 // TYPES
1961 enum {
1964
1965 enum {
1966 NUM_ATTRIBUTES = 1
1968
1969 enum {
1972
1973 // CONSTANTS
1974 static const char CLASS_NAME[];
1975
1977
1978 public:
1979 // CLASS METHODS
1980
1981 /// Return attribute information for the attribute indicated by the
1982 /// specified `id` if the attribute exists, and 0 otherwise.
1984
1985 /// Return attribute information for the attribute indicated by the
1986 /// specified `name` of the specified `nameLength` if the attribute
1987 /// exists, and 0 otherwise.
1989 const char *name,
1990 int nameLength);
1991
1992 // CREATORS
1993
1994 /// Create an object of type `MySequenceWithNillableStringList` having
1995 /// the default value. Use the optionally specified `basicAllocator` to
1996 /// supply memory. If `basicAllocator` is 0, the currently installed
1997 /// default allocator is used.
1999
2000 /// Create an object of type `MySequenceWithNillableStringList` having
2001 /// the value of the specified `original` object. Use the optionally
2002 /// specified `basicAllocator` to supply memory. If `basicAllocator` is
2003 /// 0, the currently installed default allocator is used.
2005 bslma::Allocator *basicAllocator = 0);
2006
2007#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) \
2008 && defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT)
2009 /// Create an object of type `MySequenceWithNillableStringList` having
2010 /// the value of the specified `original` object. After performing this
2011 /// action, the `original` object will be left in a valid, but
2012 /// unspecified state.
2014
2015 /// Create an object of type `MySequenceWithNillableStringList` having
2016 /// the value of the specified `original` object. After performing this
2017 /// action, the `original` object will be left in a valid, but
2018 /// unspecified state. Use the optionally specified `basicAllocator` to
2019 /// supply memory. If `basicAllocator` is 0, the currently installed
2020 /// default allocator is used.
2022 bslma::Allocator *basicAllocator);
2023#endif
2024
2025 /// Destroy this object.
2027
2028 // MANIPULATORS
2029
2030 /// Assign to this object the value of the specified `rhs` object.
2032
2033#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) \
2034 && defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT)
2035 /// Assign to this object the value of the specified `rhs` object.
2036 /// After performing this action, the `rhs` object will be left in a
2037 /// valid, but unspecified state.
2039#endif
2040
2041 /// Reset this object to the default value (i.e., its value upon
2042 /// default construction).
2043 void reset();
2044
2045 /// Invoke the specified `manipulator` sequentially on the address of
2046 /// each (modifiable) attribute of this object, supplying `manipulator`
2047 /// with the corresponding attribute information structure until such
2048 /// invocation returns a non-zero value. Return the value from the
2049 /// last invocation of `manipulator` (i.e., the invocation that
2050 /// terminated the sequence).
2051 template<class MANIPULATOR>
2052 int manipulateAttributes(MANIPULATOR& manipulator);
2053
2054 /// Invoke the specified `manipulator` on the address of
2055 /// the (modifiable) attribute indicated by the specified `id`,
2056 /// supplying `manipulator` with the corresponding attribute
2057 /// information structure. Return the value returned from the
2058 /// invocation of `manipulator` if `id` identifies an attribute of this
2059 /// class, and -1 otherwise.
2060 template<class MANIPULATOR>
2061 int manipulateAttribute(MANIPULATOR& manipulator, int id);
2062
2063 /// Invoke the specified `manipulator` on the address of
2064 /// the (modifiable) attribute indicated by the specified `name` of the
2065 /// specified `nameLength`, supplying `manipulator` with the
2066 /// corresponding attribute information structure. Return the value
2067 /// returned from the invocation of `manipulator` if `name` identifies
2068 /// an attribute of this class, and -1 otherwise.
2069 template<class MANIPULATOR>
2070 int manipulateAttribute(MANIPULATOR& manipulator,
2071 const char *name,
2072 int nameLength);
2073
2074 /// Return a reference to the modifiable "Attribute1" attribute of this
2075 /// object.
2077
2078 // ACCESSORS
2079
2080 /// Format this object to the specified output `stream` at the
2081 /// optionally specified indentation `level` and return a reference to
2082 /// the modifiable `stream`. If `level` is specified, optionally
2083 /// specify `spacesPerLevel`, the number of spaces per indentation level
2084 /// for this and all of its nested objects. Each line is indented by
2085 /// the absolute value of `level * spacesPerLevel`. If `level` is
2086 /// negative, suppress indentation of the first line. If
2087 /// `spacesPerLevel` is negative, suppress line breaks and format the
2088 /// entire output on one line. If `stream` is initially invalid, this
2089 /// operation has no effect. Note that a trailing newline is provided
2090 /// in multiline mode only.
2091 bsl::ostream& print(bsl::ostream& stream,
2092 int level = 0,
2093 int spacesPerLevel = 4) const;
2094
2095 /// Invoke the specified `accessor` sequentially on each
2096 /// (non-modifiable) attribute of this object, supplying `accessor`
2097 /// with the corresponding attribute information structure until such
2098 /// invocation returns a non-zero value. Return the value from the
2099 /// last invocation of `accessor` (i.e., the invocation that terminated
2100 /// the sequence).
2101 template<class ACCESSOR>
2102 int accessAttributes(ACCESSOR& accessor) const;
2103
2104 /// Invoke the specified `accessor` on the (non-modifiable) attribute
2105 /// of this object indicated by the specified `id`, supplying `accessor`
2106 /// with the corresponding attribute information structure. Return the
2107 /// value returned from the invocation of `accessor` if `id` identifies
2108 /// an attribute of this class, and -1 otherwise.
2109 template<class ACCESSOR>
2110 int accessAttribute(ACCESSOR& accessor, int id) const;
2111
2112 /// Invoke the specified `accessor` on the (non-modifiable) attribute
2113 /// of this object indicated by the specified `name` of the specified
2114 /// `nameLength`, supplying `accessor` with the corresponding attribute
2115 /// information structure. Return the value returned from the
2116 /// invocation of `accessor` if `name` identifies an attribute of this
2117 /// class, and -1 otherwise.
2118 template<class ACCESSOR>
2119 int accessAttribute(ACCESSOR& accessor,
2120 const char *name,
2121 int nameLength) const;
2122
2123 /// Return a reference offering non-modifiable access to the
2124 /// "Attribute1" attribute of this object.
2126};
2127
2128// FREE OPERATORS
2129
2130/// Return `true` if the specified `lhs` and `rhs` attribute objects have
2131/// the same value, and `false` otherwise. Two attribute objects have the
2132/// same value if each respective attribute has the same value.
2133inline
2135
2136/// Return `true` if the specified `lhs` and `rhs` attribute objects do not
2137/// have the same value, and `false` otherwise. Two attribute objects do
2138/// not have the same value if one or more respective attributes differ in
2139/// values.
2140inline
2142
2143/// Format the specified `rhs` to the specified output `stream` and
2144/// return a reference to the modifiable `stream`.
2145inline
2146bsl::ostream& operator<<(bsl::ostream& stream, const MySequenceWithNillableStringList& rhs);
2147
2148} // close package namespace
2149
2150// TRAITS
2151
2153
2154namespace s_baltst {
2155
2156 // ===============================================
2157 // class MySequenceWithNillableStringSequenceArray
2158 // ===============================================
2159
2161
2162 // INSTANCE DATA
2164
2165 public:
2166 // TYPES
2167 enum {
2170
2171 enum {
2172 NUM_ATTRIBUTES = 1
2174
2175 enum {
2178
2179 // CONSTANTS
2180 static const char CLASS_NAME[];
2181
2183
2184 public:
2185 // CLASS METHODS
2186
2187 /// Return attribute information for the attribute indicated by the
2188 /// specified `id` if the attribute exists, and 0 otherwise.
2190
2191 /// Return attribute information for the attribute indicated by the
2192 /// specified `name` of the specified `nameLength` if the attribute
2193 /// exists, and 0 otherwise.
2195 const char *name,
2196 int nameLength);
2197
2198 // CREATORS
2199
2200 /// Create an object of type `MySequenceWithNillableStringSequenceArray`
2201 /// having the default value. Use the optionally specified
2202 /// `basicAllocator` to supply memory. If `basicAllocator` is 0, the
2203 /// currently installed default allocator is used.
2205
2206 /// Create an object of type `MySequenceWithNillableStringSequenceArray`
2207 /// having the value of the specified `original` object. Use the
2208 /// optionally specified `basicAllocator` to supply memory. If
2209 /// `basicAllocator` is 0, the currently installed default allocator is
2210 /// used.
2212 bslma::Allocator *basicAllocator = 0);
2213
2214#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) \
2215 && defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT)
2216 /// Create an object of type `MySequenceWithNillableStringSequenceArray`
2217 /// having the value of the specified `original` object. After
2218 /// performing this action, the `original` object will be left in a
2219 /// valid, but unspecified state.
2221
2222 /// Create an object of type `MySequenceWithNillableStringSequenceArray`
2223 /// having the value of the specified `original` object. After
2224 /// performing this action, the `original` object will be left in a
2225 /// valid, but unspecified state. Use the optionally specified
2226 /// `basicAllocator` to supply memory. If `basicAllocator` is 0, the
2227 /// currently installed default allocator is used.
2229 bslma::Allocator *basicAllocator);
2230#endif
2231
2232 /// Destroy this object.
2234
2235 // MANIPULATORS
2236
2237 /// Assign to this object the value of the specified `rhs` object.
2239
2240#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) \
2241 && defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT)
2242 /// Assign to this object the value of the specified `rhs` object.
2243 /// After performing this action, the `rhs` object will be left in a
2244 /// valid, but unspecified state.
2246#endif
2247
2248 /// Reset this object to the default value (i.e., its value upon
2249 /// default construction).
2250 void reset();
2251
2252 /// Invoke the specified `manipulator` sequentially on the address of
2253 /// each (modifiable) attribute of this object, supplying `manipulator`
2254 /// with the corresponding attribute information structure until such
2255 /// invocation returns a non-zero value. Return the value from the
2256 /// last invocation of `manipulator` (i.e., the invocation that
2257 /// terminated the sequence).
2258 template<class MANIPULATOR>
2259 int manipulateAttributes(MANIPULATOR& manipulator);
2260
2261 /// Invoke the specified `manipulator` on the address of
2262 /// the (modifiable) attribute indicated by the specified `id`,
2263 /// supplying `manipulator` with the corresponding attribute
2264 /// information structure. Return the value returned from the
2265 /// invocation of `manipulator` if `id` identifies an attribute of this
2266 /// class, and -1 otherwise.
2267 template<class MANIPULATOR>
2268 int manipulateAttribute(MANIPULATOR& manipulator, int id);
2269
2270 /// Invoke the specified `manipulator` on the address of
2271 /// the (modifiable) attribute indicated by the specified `name` of the
2272 /// specified `nameLength`, supplying `manipulator` with the
2273 /// corresponding attribute information structure. Return the value
2274 /// returned from the invocation of `manipulator` if `name` identifies
2275 /// an attribute of this class, and -1 otherwise.
2276 template<class MANIPULATOR>
2277 int manipulateAttribute(MANIPULATOR& manipulator,
2278 const char *name,
2279 int nameLength);
2280
2281 /// Return a reference to the modifiable "Attribute1" attribute of this
2282 /// object.
2284
2285 // ACCESSORS
2286
2287 /// Format this object to the specified output `stream` at the
2288 /// optionally specified indentation `level` and return a reference to
2289 /// the modifiable `stream`. If `level` is specified, optionally
2290 /// specify `spacesPerLevel`, the number of spaces per indentation level
2291 /// for this and all of its nested objects. Each line is indented by
2292 /// the absolute value of `level * spacesPerLevel`. If `level` is
2293 /// negative, suppress indentation of the first line. If
2294 /// `spacesPerLevel` is negative, suppress line breaks and format the
2295 /// entire output on one line. If `stream` is initially invalid, this
2296 /// operation has no effect. Note that a trailing newline is provided
2297 /// in multiline mode only.
2298 bsl::ostream& print(bsl::ostream& stream,
2299 int level = 0,
2300 int spacesPerLevel = 4) const;
2301
2302 /// Invoke the specified `accessor` sequentially on each
2303 /// (non-modifiable) attribute of this object, supplying `accessor`
2304 /// with the corresponding attribute information structure until such
2305 /// invocation returns a non-zero value. Return the value from the
2306 /// last invocation of `accessor` (i.e., the invocation that terminated
2307 /// the sequence).
2308 template<class ACCESSOR>
2309 int accessAttributes(ACCESSOR& accessor) const;
2310
2311 /// Invoke the specified `accessor` on the (non-modifiable) attribute
2312 /// of this object indicated by the specified `id`, supplying `accessor`
2313 /// with the corresponding attribute information structure. Return the
2314 /// value returned from the invocation of `accessor` if `id` identifies
2315 /// an attribute of this class, and -1 otherwise.
2316 template<class ACCESSOR>
2317 int accessAttribute(ACCESSOR& accessor, int id) const;
2318
2319 /// Invoke the specified `accessor` on the (non-modifiable) attribute
2320 /// of this object indicated by the specified `name` of the specified
2321 /// `nameLength`, supplying `accessor` with the corresponding attribute
2322 /// information structure. Return the value returned from the
2323 /// invocation of `accessor` if `name` identifies an attribute of this
2324 /// class, and -1 otherwise.
2325 template<class ACCESSOR>
2326 int accessAttribute(ACCESSOR& accessor,
2327 const char *name,
2328 int nameLength) const;
2329
2330 /// Return a reference offering non-modifiable access to the
2331 /// "Attribute1" attribute of this object.
2333};
2334
2335// FREE OPERATORS
2336
2337/// Return `true` if the specified `lhs` and `rhs` attribute objects have
2338/// the same value, and `false` otherwise. Two attribute objects have the
2339/// same value if each respective attribute has the same value.
2340inline
2342
2343/// Return `true` if the specified `lhs` and `rhs` attribute objects do not
2344/// have the same value, and `false` otherwise. Two attribute objects do
2345/// not have the same value if one or more respective attributes differ in
2346/// values.
2347inline
2349
2350/// Format the specified `rhs` to the specified output `stream` and
2351/// return a reference to the modifiable `stream`.
2352inline
2353bsl::ostream& operator<<(bsl::ostream& stream, const MySequenceWithNillableStringSequenceArray& rhs);
2354
2355} // close package namespace
2356
2357// TRAITS
2358
2360
2361// ============================================================================
2362// INLINE FUNCTION DEFINITIONS
2363// ============================================================================
2364
2365namespace s_baltst {
2366
2367 // ----------------------------
2368 // class MySequenceWithNillable
2369 // ----------------------------
2370
2371// CLASS METHODS
2372// MANIPULATORS
2373template <class MANIPULATOR>
2375{
2376 int ret;
2377
2378 ret = manipulator(&d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
2379 if (ret) {
2380 return ret;
2381 }
2382
2383 ret = manipulator(&d_myNillable, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_MY_NILLABLE]);
2384 if (ret) {
2385 return ret;
2386 }
2387
2388 ret = manipulator(&d_attribute2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE2]);
2389 if (ret) {
2390 return ret;
2391 }
2392
2393 return 0;
2394}
2395
2396template <class MANIPULATOR>
2397int MySequenceWithNillable::manipulateAttribute(MANIPULATOR& manipulator, int id)
2398{
2399 enum { NOT_FOUND = -1 };
2400
2401 switch (id) {
2403 return manipulator(&d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
2404 }
2406 return manipulator(&d_myNillable, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_MY_NILLABLE]);
2407 }
2409 return manipulator(&d_attribute2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE2]);
2410 }
2411 default:
2412 return NOT_FOUND;
2413 }
2414}
2415
2416template <class MANIPULATOR>
2418 MANIPULATOR& manipulator,
2419 const char *name,
2420 int nameLength)
2421{
2422 enum { NOT_FOUND = -1 };
2423
2424 const bdlat_AttributeInfo *attributeInfo =
2425 lookupAttributeInfo(name, nameLength);
2426 if (0 == attributeInfo) {
2427 return NOT_FOUND;
2428 }
2429
2430 return manipulateAttribute(manipulator, attributeInfo->d_id);
2431}
2432
2433inline
2435{
2436 return d_attribute1;
2437}
2438
2439inline
2444
2445inline
2447{
2448 return d_attribute2;
2449}
2450
2451// ACCESSORS
2452template <class ACCESSOR>
2453int MySequenceWithNillable::accessAttributes(ACCESSOR& accessor) const
2454{
2455 int ret;
2456
2457 ret = accessor(d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
2458 if (ret) {
2459 return ret;
2460 }
2461
2462 ret = accessor(d_myNillable, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_MY_NILLABLE]);
2463 if (ret) {
2464 return ret;
2465 }
2466
2467 ret = accessor(d_attribute2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE2]);
2468 if (ret) {
2469 return ret;
2470 }
2471
2472 return 0;
2473}
2474
2475template <class ACCESSOR>
2476int MySequenceWithNillable::accessAttribute(ACCESSOR& accessor, int id) const
2477{
2478 enum { NOT_FOUND = -1 };
2479
2480 switch (id) {
2482 return accessor(d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
2483 }
2485 return accessor(d_myNillable, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_MY_NILLABLE]);
2486 }
2488 return accessor(d_attribute2, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE2]);
2489 }
2490 default:
2491 return NOT_FOUND;
2492 }
2493}
2494
2495template <class ACCESSOR>
2497 ACCESSOR& accessor,
2498 const char *name,
2499 int nameLength) const
2500{
2501 enum { NOT_FOUND = -1 };
2502
2503 const bdlat_AttributeInfo *attributeInfo =
2504 lookupAttributeInfo(name, nameLength);
2505 if (0 == attributeInfo) {
2506 return NOT_FOUND;
2507 }
2508
2509 return accessAttribute(accessor, attributeInfo->d_id);
2510}
2511
2512inline
2514{
2515 return d_attribute1;
2516}
2517
2518inline
2520{
2521 return d_myNillable;
2522}
2523
2524inline
2526{
2527 return d_attribute2;
2528}
2529
2530
2531
2532 // ----------------------------------------
2533 // class MySequenceWithNillableBase64Binary
2534 // ----------------------------------------
2535
2536// CLASS METHODS
2537// MANIPULATORS
2538template <class MANIPULATOR>
2540{
2541 int ret;
2542
2543 ret = manipulator(&d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
2544 if (ret) {
2545 return ret;
2546 }
2547
2548 return 0;
2549}
2550
2551template <class MANIPULATOR>
2553{
2554 enum { NOT_FOUND = -1 };
2555
2556 switch (id) {
2558 return manipulator(&d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
2559 }
2560 default:
2561 return NOT_FOUND;
2562 }
2563}
2564
2565template <class MANIPULATOR>
2567 MANIPULATOR& manipulator,
2568 const char *name,
2569 int nameLength)
2570{
2571 enum { NOT_FOUND = -1 };
2572
2573 const bdlat_AttributeInfo *attributeInfo =
2574 lookupAttributeInfo(name, nameLength);
2575 if (0 == attributeInfo) {
2576 return NOT_FOUND;
2577 }
2578
2579 return manipulateAttribute(manipulator, attributeInfo->d_id);
2580}
2581
2582inline
2587
2588// ACCESSORS
2589template <class ACCESSOR>
2591{
2592 int ret;
2593
2594 ret = accessor(d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
2595 if (ret) {
2596 return ret;
2597 }
2598
2599 return 0;
2600}
2601
2602template <class ACCESSOR>
2603int MySequenceWithNillableBase64Binary::accessAttribute(ACCESSOR& accessor, int id) const
2604{
2605 enum { NOT_FOUND = -1 };
2606
2607 switch (id) {
2609 return accessor(d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
2610 }
2611 default:
2612 return NOT_FOUND;
2613 }
2614}
2615
2616template <class ACCESSOR>
2618 ACCESSOR& accessor,
2619 const char *name,
2620 int nameLength) const
2621{
2622 enum { NOT_FOUND = -1 };
2623
2624 const bdlat_AttributeInfo *attributeInfo =
2625 lookupAttributeInfo(name, nameLength);
2626 if (0 == attributeInfo) {
2627 return NOT_FOUND;
2628 }
2629
2630 return accessAttribute(accessor, attributeInfo->d_id);
2631}
2632
2633inline
2638
2639
2640
2641 // -------------------------------------
2642 // class MySequenceWithNillableHexBinary
2643 // -------------------------------------
2644
2645// CLASS METHODS
2646// MANIPULATORS
2647template <class MANIPULATOR>
2649{
2650 int ret;
2651
2652 ret = manipulator(&d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
2653 if (ret) {
2654 return ret;
2655 }
2656
2657 return 0;
2658}
2659
2660template <class MANIPULATOR>
2661int MySequenceWithNillableHexBinary::manipulateAttribute(MANIPULATOR& manipulator, int id)
2662{
2663 enum { NOT_FOUND = -1 };
2664
2665 switch (id) {
2667 return manipulator(&d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
2668 }
2669 default:
2670 return NOT_FOUND;
2671 }
2672}
2673
2674template <class MANIPULATOR>
2676 MANIPULATOR& manipulator,
2677 const char *name,
2678 int nameLength)
2679{
2680 enum { NOT_FOUND = -1 };
2681
2682 const bdlat_AttributeInfo *attributeInfo =
2683 lookupAttributeInfo(name, nameLength);
2684 if (0 == attributeInfo) {
2685 return NOT_FOUND;
2686 }
2687
2688 return manipulateAttribute(manipulator, attributeInfo->d_id);
2689}
2690
2691inline
2696
2697// ACCESSORS
2698template <class ACCESSOR>
2700{
2701 int ret;
2702
2703 ret = accessor(d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
2704 if (ret) {
2705 return ret;
2706 }
2707
2708 return 0;
2709}
2710
2711template <class ACCESSOR>
2712int MySequenceWithNillableHexBinary::accessAttribute(ACCESSOR& accessor, int id) const
2713{
2714 enum { NOT_FOUND = -1 };
2715
2716 switch (id) {
2718 return accessor(d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
2719 }
2720 default:
2721 return NOT_FOUND;
2722 }
2723}
2724
2725template <class ACCESSOR>
2727 ACCESSOR& accessor,
2728 const char *name,
2729 int nameLength) const
2730{
2731 enum { NOT_FOUND = -1 };
2732
2733 const bdlat_AttributeInfo *attributeInfo =
2734 lookupAttributeInfo(name, nameLength);
2735 if (0 == attributeInfo) {
2736 return NOT_FOUND;
2737 }
2738
2739 return accessAttribute(accessor, attributeInfo->d_id);
2740}
2741
2742inline
2744{
2745 return d_attribute1;
2746}
2747
2748
2749
2750 // ------------------------------------
2751 // class MySequenceWithNillableIntArray
2752 // ------------------------------------
2753
2754// CLASS METHODS
2755// MANIPULATORS
2756template <class MANIPULATOR>
2758{
2759 int ret;
2760
2761 ret = manipulator(&d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
2762 if (ret) {
2763 return ret;
2764 }
2765
2766 return 0;
2767}
2768
2769template <class MANIPULATOR>
2770int MySequenceWithNillableIntArray::manipulateAttribute(MANIPULATOR& manipulator, int id)
2771{
2772 enum { NOT_FOUND = -1 };
2773
2774 switch (id) {
2776 return manipulator(&d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
2777 }
2778 default:
2779 return NOT_FOUND;
2780 }
2781}
2782
2783template <class MANIPULATOR>
2785 MANIPULATOR& manipulator,
2786 const char *name,
2787 int nameLength)
2788{
2789 enum { NOT_FOUND = -1 };
2790
2791 const bdlat_AttributeInfo *attributeInfo =
2792 lookupAttributeInfo(name, nameLength);
2793 if (0 == attributeInfo) {
2794 return NOT_FOUND;
2795 }
2796
2797 return manipulateAttribute(manipulator, attributeInfo->d_id);
2798}
2799
2800inline
2805
2806// ACCESSORS
2807template <class ACCESSOR>
2809{
2810 int ret;
2811
2812 ret = accessor(d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
2813 if (ret) {
2814 return ret;
2815 }
2816
2817 return 0;
2818}
2819
2820template <class ACCESSOR>
2821int MySequenceWithNillableIntArray::accessAttribute(ACCESSOR& accessor, int id) const
2822{
2823 enum { NOT_FOUND = -1 };
2824
2825 switch (id) {
2827 return accessor(d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
2828 }
2829 default:
2830 return NOT_FOUND;
2831 }
2832}
2833
2834template <class ACCESSOR>
2836 ACCESSOR& accessor,
2837 const char *name,
2838 int nameLength) const
2839{
2840 enum { NOT_FOUND = -1 };
2841
2842 const bdlat_AttributeInfo *attributeInfo =
2843 lookupAttributeInfo(name, nameLength);
2844 if (0 == attributeInfo) {
2845 return NOT_FOUND;
2846 }
2847
2848 return accessAttribute(accessor, attributeInfo->d_id);
2849}
2850
2851inline
2853{
2854 return d_attribute1;
2855}
2856
2857
2858
2859 // ----------------------------------------------------
2860 // class MySequenceWithNillableIntSequenceArraySequence
2861 // ----------------------------------------------------
2862
2863// CLASS METHODS
2864// MANIPULATORS
2865template <class MANIPULATOR>
2867{
2868 int ret;
2869
2870 ret = manipulator(&d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
2871 if (ret) {
2872 return ret;
2873 }
2874
2875 return 0;
2876}
2877
2878template <class MANIPULATOR>
2880{
2881 enum { NOT_FOUND = -1 };
2882
2883 switch (id) {
2885 return manipulator(&d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
2886 }
2887 default:
2888 return NOT_FOUND;
2889 }
2890}
2891
2892template <class MANIPULATOR>
2894 MANIPULATOR& manipulator,
2895 const char *name,
2896 int nameLength)
2897{
2898 enum { NOT_FOUND = -1 };
2899
2900 const bdlat_AttributeInfo *attributeInfo =
2901 lookupAttributeInfo(name, nameLength);
2902 if (0 == attributeInfo) {
2903 return NOT_FOUND;
2904 }
2905
2906 return manipulateAttribute(manipulator, attributeInfo->d_id);
2907}
2908
2909inline
2911{
2912 return d_attribute1;
2913}
2914
2915// ACCESSORS
2916template <class ACCESSOR>
2918{
2919 int ret;
2920
2921 ret = accessor(d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
2922 if (ret) {
2923 return ret;
2924 }
2925
2926 return 0;
2927}
2928
2929template <class ACCESSOR>
2931{
2932 enum { NOT_FOUND = -1 };
2933
2934 switch (id) {
2936 return accessor(d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
2937 }
2938 default:
2939 return NOT_FOUND;
2940 }
2941}
2942
2943template <class ACCESSOR>
2945 ACCESSOR& accessor,
2946 const char *name,
2947 int nameLength) const
2948{
2949 enum { NOT_FOUND = -1 };
2950
2951 const bdlat_AttributeInfo *attributeInfo =
2952 lookupAttributeInfo(name, nameLength);
2953 if (0 == attributeInfo) {
2954 return NOT_FOUND;
2955 }
2956
2957 return accessAttribute(accessor, attributeInfo->d_id);
2958}
2959
2960inline
2962{
2963 return d_attribute1;
2964}
2965
2966
2967
2968 // ---------------------------------------
2969 // class MySequenceWithNillableStringArray
2970 // ---------------------------------------
2971
2972// CLASS METHODS
2973// MANIPULATORS
2974template <class MANIPULATOR>
2976{
2977 int ret;
2978
2979 ret = manipulator(&d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
2980 if (ret) {
2981 return ret;
2982 }
2983
2984 return 0;
2985}
2986
2987template <class MANIPULATOR>
2989{
2990 enum { NOT_FOUND = -1 };
2991
2992 switch (id) {
2994 return manipulator(&d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
2995 }
2996 default:
2997 return NOT_FOUND;
2998 }
2999}
3000
3001template <class MANIPULATOR>
3003 MANIPULATOR& manipulator,
3004 const char *name,
3005 int nameLength)
3006{
3007 enum { NOT_FOUND = -1 };
3008
3009 const bdlat_AttributeInfo *attributeInfo =
3010 lookupAttributeInfo(name, nameLength);
3011 if (0 == attributeInfo) {
3012 return NOT_FOUND;
3013 }
3014
3015 return manipulateAttribute(manipulator, attributeInfo->d_id);
3016}
3017
3018inline
3023
3024// ACCESSORS
3025template <class ACCESSOR>
3027{
3028 int ret;
3029
3030 ret = accessor(d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
3031 if (ret) {
3032 return ret;
3033 }
3034
3035 return 0;
3036}
3037
3038template <class ACCESSOR>
3039int MySequenceWithNillableStringArray::accessAttribute(ACCESSOR& accessor, int id) const
3040{
3041 enum { NOT_FOUND = -1 };
3042
3043 switch (id) {
3045 return accessor(d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
3046 }
3047 default:
3048 return NOT_FOUND;
3049 }
3050}
3051
3052template <class ACCESSOR>
3054 ACCESSOR& accessor,
3055 const char *name,
3056 int nameLength) const
3057{
3058 enum { NOT_FOUND = -1 };
3059
3060 const bdlat_AttributeInfo *attributeInfo =
3061 lookupAttributeInfo(name, nameLength);
3062 if (0 == attributeInfo) {
3063 return NOT_FOUND;
3064 }
3065
3066 return accessAttribute(accessor, attributeInfo->d_id);
3067}
3068
3069inline
3074
3075
3076
3077 // -------------------------------------------------------
3078 // class MySequenceWithNillableStringSequenceArraySequence
3079 // -------------------------------------------------------
3080
3081// CLASS METHODS
3082// MANIPULATORS
3083template <class MANIPULATOR>
3085{
3086 int ret;
3087
3088 ret = manipulator(&d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
3089 if (ret) {
3090 return ret;
3091 }
3092
3093 return 0;
3094}
3095
3096template <class MANIPULATOR>
3098{
3099 enum { NOT_FOUND = -1 };
3100
3101 switch (id) {
3103 return manipulator(&d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
3104 }
3105 default:
3106 return NOT_FOUND;
3107 }
3108}
3109
3110template <class MANIPULATOR>
3112 MANIPULATOR& manipulator,
3113 const char *name,
3114 int nameLength)
3115{
3116 enum { NOT_FOUND = -1 };
3117
3118 const bdlat_AttributeInfo *attributeInfo =
3119 lookupAttributeInfo(name, nameLength);
3120 if (0 == attributeInfo) {
3121 return NOT_FOUND;
3122 }
3123
3124 return manipulateAttribute(manipulator, attributeInfo->d_id);
3125}
3126
3127inline
3132
3133// ACCESSORS
3134template <class ACCESSOR>
3136{
3137 int ret;
3138
3139 ret = accessor(d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
3140 if (ret) {
3141 return ret;
3142 }
3143
3144 return 0;
3145}
3146
3147template <class ACCESSOR>
3149{
3150 enum { NOT_FOUND = -1 };
3151
3152 switch (id) {
3154 return accessor(d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
3155 }
3156 default:
3157 return NOT_FOUND;
3158 }
3159}
3160
3161template <class ACCESSOR>
3163 ACCESSOR& accessor,
3164 const char *name,
3165 int nameLength) const
3166{
3167 enum { NOT_FOUND = -1 };
3168
3169 const bdlat_AttributeInfo *attributeInfo =
3170 lookupAttributeInfo(name, nameLength);
3171 if (0 == attributeInfo) {
3172 return NOT_FOUND;
3173 }
3174
3175 return accessAttribute(accessor, attributeInfo->d_id);
3176}
3177
3178inline
3180{
3181 return d_attribute1;
3182}
3183
3184
3185
3186 // -----------------------------------
3187 // class MySequenceWithNillableIntList
3188 // -----------------------------------
3189
3190// CLASS METHODS
3191// MANIPULATORS
3192template <class MANIPULATOR>
3194{
3195 int ret;
3196
3197 ret = manipulator(&d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
3198 if (ret) {
3199 return ret;
3200 }
3201
3202 return 0;
3203}
3204
3205template <class MANIPULATOR>
3206int MySequenceWithNillableIntList::manipulateAttribute(MANIPULATOR& manipulator, int id)
3207{
3208 enum { NOT_FOUND = -1 };
3209
3210 switch (id) {
3212 return manipulator(&d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
3213 }
3214 default:
3215 return NOT_FOUND;
3216 }
3217}
3218
3219template <class MANIPULATOR>
3221 MANIPULATOR& manipulator,
3222 const char *name,
3223 int nameLength)
3224{
3225 enum { NOT_FOUND = -1 };
3226
3227 const bdlat_AttributeInfo *attributeInfo =
3228 lookupAttributeInfo(name, nameLength);
3229 if (0 == attributeInfo) {
3230 return NOT_FOUND;
3231 }
3232
3233 return manipulateAttribute(manipulator, attributeInfo->d_id);
3234}
3235
3236inline
3241
3242// ACCESSORS
3243template <class ACCESSOR>
3245{
3246 int ret;
3247
3248 ret = accessor(d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
3249 if (ret) {
3250 return ret;
3251 }
3252
3253 return 0;
3254}
3255
3256template <class ACCESSOR>
3257int MySequenceWithNillableIntList::accessAttribute(ACCESSOR& accessor, int id) const
3258{
3259 enum { NOT_FOUND = -1 };
3260
3261 switch (id) {
3263 return accessor(d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
3264 }
3265 default:
3266 return NOT_FOUND;
3267 }
3268}
3269
3270template <class ACCESSOR>
3272 ACCESSOR& accessor,
3273 const char *name,
3274 int nameLength) const
3275{
3276 enum { NOT_FOUND = -1 };
3277
3278 const bdlat_AttributeInfo *attributeInfo =
3279 lookupAttributeInfo(name, nameLength);
3280 if (0 == attributeInfo) {
3281 return NOT_FOUND;
3282 }
3283
3284 return accessAttribute(accessor, attributeInfo->d_id);
3285}
3286
3287inline
3289{
3290 return d_attribute1;
3291}
3292
3293
3294
3295 // --------------------------------------------
3296 // class MySequenceWithNillableIntSequenceArray
3297 // --------------------------------------------
3298
3299// CLASS METHODS
3300// MANIPULATORS
3301template <class MANIPULATOR>
3303{
3304 int ret;
3305
3306 ret = manipulator(&d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
3307 if (ret) {
3308 return ret;
3309 }
3310
3311 return 0;
3312}
3313
3314template <class MANIPULATOR>
3316{
3317 enum { NOT_FOUND = -1 };
3318
3319 switch (id) {
3321 return manipulator(&d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
3322 }
3323 default:
3324 return NOT_FOUND;
3325 }
3326}
3327
3328template <class MANIPULATOR>
3330 MANIPULATOR& manipulator,
3331 const char *name,
3332 int nameLength)
3333{
3334 enum { NOT_FOUND = -1 };
3335
3336 const bdlat_AttributeInfo *attributeInfo =
3337 lookupAttributeInfo(name, nameLength);
3338 if (0 == attributeInfo) {
3339 return NOT_FOUND;
3340 }
3341
3342 return manipulateAttribute(manipulator, attributeInfo->d_id);
3343}
3344
3345inline
3350
3351// ACCESSORS
3352template <class ACCESSOR>
3354{
3355 int ret;
3356
3357 ret = accessor(d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
3358 if (ret) {
3359 return ret;
3360 }
3361
3362 return 0;
3363}
3364
3365template <class ACCESSOR>
3367{
3368 enum { NOT_FOUND = -1 };
3369
3370 switch (id) {
3372 return accessor(d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
3373 }
3374 default:
3375 return NOT_FOUND;
3376 }
3377}
3378
3379template <class ACCESSOR>
3381 ACCESSOR& accessor,
3382 const char *name,
3383 int nameLength) const
3384{
3385 enum { NOT_FOUND = -1 };
3386
3387 const bdlat_AttributeInfo *attributeInfo =
3388 lookupAttributeInfo(name, nameLength);
3389 if (0 == attributeInfo) {
3390 return NOT_FOUND;
3391 }
3392
3393 return accessAttribute(accessor, attributeInfo->d_id);
3394}
3395
3396inline
3401
3402
3403
3404 // --------------------------------------
3405 // class MySequenceWithNillableStringList
3406 // --------------------------------------
3407
3408// CLASS METHODS
3409// MANIPULATORS
3410template <class MANIPULATOR>
3412{
3413 int ret;
3414
3415 ret = manipulator(&d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
3416 if (ret) {
3417 return ret;
3418 }
3419
3420 return 0;
3421}
3422
3423template <class MANIPULATOR>
3425{
3426 enum { NOT_FOUND = -1 };
3427
3428 switch (id) {
3430 return manipulator(&d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
3431 }
3432 default:
3433 return NOT_FOUND;
3434 }
3435}
3436
3437template <class MANIPULATOR>
3439 MANIPULATOR& manipulator,
3440 const char *name,
3441 int nameLength)
3442{
3443 enum { NOT_FOUND = -1 };
3444
3445 const bdlat_AttributeInfo *attributeInfo =
3446 lookupAttributeInfo(name, nameLength);
3447 if (0 == attributeInfo) {
3448 return NOT_FOUND;
3449 }
3450
3451 return manipulateAttribute(manipulator, attributeInfo->d_id);
3452}
3453
3454inline
3459
3460// ACCESSORS
3461template <class ACCESSOR>
3463{
3464 int ret;
3465
3466 ret = accessor(d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
3467 if (ret) {
3468 return ret;
3469 }
3470
3471 return 0;
3472}
3473
3474template <class ACCESSOR>
3475int MySequenceWithNillableStringList::accessAttribute(ACCESSOR& accessor, int id) const
3476{
3477 enum { NOT_FOUND = -1 };
3478
3479 switch (id) {
3481 return accessor(d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
3482 }
3483 default:
3484 return NOT_FOUND;
3485 }
3486}
3487
3488template <class ACCESSOR>
3490 ACCESSOR& accessor,
3491 const char *name,
3492 int nameLength) const
3493{
3494 enum { NOT_FOUND = -1 };
3495
3496 const bdlat_AttributeInfo *attributeInfo =
3497 lookupAttributeInfo(name, nameLength);
3498 if (0 == attributeInfo) {
3499 return NOT_FOUND;
3500 }
3501
3502 return accessAttribute(accessor, attributeInfo->d_id);
3503}
3504
3505inline
3510
3511
3512
3513 // -----------------------------------------------
3514 // class MySequenceWithNillableStringSequenceArray
3515 // -----------------------------------------------
3516
3517// CLASS METHODS
3518// MANIPULATORS
3519template <class MANIPULATOR>
3521{
3522 int ret;
3523
3524 ret = manipulator(&d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
3525 if (ret) {
3526 return ret;
3527 }
3528
3529 return 0;
3530}
3531
3532template <class MANIPULATOR>
3534{
3535 enum { NOT_FOUND = -1 };
3536
3537 switch (id) {
3539 return manipulator(&d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
3540 }
3541 default:
3542 return NOT_FOUND;
3543 }
3544}
3545
3546template <class MANIPULATOR>
3548 MANIPULATOR& manipulator,
3549 const char *name,
3550 int nameLength)
3551{
3552 enum { NOT_FOUND = -1 };
3553
3554 const bdlat_AttributeInfo *attributeInfo =
3555 lookupAttributeInfo(name, nameLength);
3556 if (0 == attributeInfo) {
3557 return NOT_FOUND;
3558 }
3559
3560 return manipulateAttribute(manipulator, attributeInfo->d_id);
3561}
3562
3563inline
3568
3569// ACCESSORS
3570template <class ACCESSOR>
3572{
3573 int ret;
3574
3575 ret = accessor(d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
3576 if (ret) {
3577 return ret;
3578 }
3579
3580 return 0;
3581}
3582
3583template <class ACCESSOR>
3585{
3586 enum { NOT_FOUND = -1 };
3587
3588 switch (id) {
3590 return accessor(d_attribute1, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_ATTRIBUTE1]);
3591 }
3592 default:
3593 return NOT_FOUND;
3594 }
3595}
3596
3597template <class ACCESSOR>
3599 ACCESSOR& accessor,
3600 const char *name,
3601 int nameLength) const
3602{
3603 enum { NOT_FOUND = -1 };
3604
3605 const bdlat_AttributeInfo *attributeInfo =
3606 lookupAttributeInfo(name, nameLength);
3607 if (0 == attributeInfo) {
3608 return NOT_FOUND;
3609 }
3610
3611 return accessAttribute(accessor, attributeInfo->d_id);
3612}
3613
3614inline
3619
3620} // close package namespace
3621
3622// FREE FUNCTIONS
3623
3624inline
3628{
3629 return lhs.attribute1() == rhs.attribute1()
3630 && lhs.myNillable() == rhs.myNillable()
3631 && lhs.attribute2() == rhs.attribute2();
3632}
3633
3634inline
3638{
3639 return !(lhs == rhs);
3640}
3641
3642inline
3643bsl::ostream& s_baltst::operator<<(
3644 bsl::ostream& stream,
3646{
3647 return rhs.print(stream, 0, -1);
3648}
3649
3650
3651inline
3655{
3656 return lhs.attribute1() == rhs.attribute1();
3657}
3658
3659inline
3663{
3664 return !(lhs == rhs);
3665}
3666
3667inline
3668bsl::ostream& s_baltst::operator<<(
3669 bsl::ostream& stream,
3671{
3672 return rhs.print(stream, 0, -1);
3673}
3674
3675
3676inline
3680{
3681 return lhs.attribute1() == rhs.attribute1();
3682}
3683
3684inline
3688{
3689 return !(lhs == rhs);
3690}
3691
3692inline
3693bsl::ostream& s_baltst::operator<<(
3694 bsl::ostream& stream,
3696{
3697 return rhs.print(stream, 0, -1);
3698}
3699
3700
3701inline
3705{
3706 return lhs.attribute1() == rhs.attribute1();
3707}
3708
3709inline
3713{
3714 return !(lhs == rhs);
3715}
3716
3717inline
3718bsl::ostream& s_baltst::operator<<(
3719 bsl::ostream& stream,
3721{
3722 return rhs.print(stream, 0, -1);
3723}
3724
3725
3726inline
3730{
3731 return lhs.attribute1() == rhs.attribute1();
3732}
3733
3734inline
3738{
3739 return !(lhs == rhs);
3740}
3741
3742inline
3743bsl::ostream& s_baltst::operator<<(
3744 bsl::ostream& stream,
3746{
3747 return rhs.print(stream, 0, -1);
3748}
3749
3750
3751inline
3755{
3756 return lhs.attribute1() == rhs.attribute1();
3757}
3758
3759inline
3763{
3764 return !(lhs == rhs);
3765}
3766
3767inline
3768bsl::ostream& s_baltst::operator<<(
3769 bsl::ostream& stream,
3771{
3772 return rhs.print(stream, 0, -1);
3773}
3774
3775
3776inline
3780{
3781 return lhs.attribute1() == rhs.attribute1();
3782}
3783
3784inline
3788{
3789 return !(lhs == rhs);
3790}
3791
3792inline
3793bsl::ostream& s_baltst::operator<<(
3794 bsl::ostream& stream,
3796{
3797 return rhs.print(stream, 0, -1);
3798}
3799
3800
3801inline
3805{
3806 return lhs.attribute1() == rhs.attribute1();
3807}
3808
3809inline
3813{
3814 return !(lhs == rhs);
3815}
3816
3817inline
3818bsl::ostream& s_baltst::operator<<(
3819 bsl::ostream& stream,
3821{
3822 return rhs.print(stream, 0, -1);
3823}
3824
3825
3826inline
3830{
3831 return lhs.attribute1() == rhs.attribute1();
3832}
3833
3834inline
3838{
3839 return !(lhs == rhs);
3840}
3841
3842inline
3843bsl::ostream& s_baltst::operator<<(
3844 bsl::ostream& stream,
3846{
3847 return rhs.print(stream, 0, -1);
3848}
3849
3850
3851inline
3855{
3856 return lhs.attribute1() == rhs.attribute1();
3857}
3858
3859inline
3863{
3864 return !(lhs == rhs);
3865}
3866
3867inline
3868bsl::ostream& s_baltst::operator<<(
3869 bsl::ostream& stream,
3871{
3872 return rhs.print(stream, 0, -1);
3873}
3874
3875
3876inline
3880{
3881 return lhs.attribute1() == rhs.attribute1();
3882}
3883
3884inline
3888{
3889 return !(lhs == rhs);
3890}
3891
3892inline
3893bsl::ostream& s_baltst::operator<<(
3894 bsl::ostream& stream,
3896{
3897 return rhs.print(stream, 0, -1);
3898}
3899
3900
3901#endif
3902
3903// GENERATED BY @BLP_BAS_CODEGEN_VERSION@
3904// USING bas_codegen.pl s_baltst_mysequencewithnillable.xsd --mode msg --includedir . --msgComponent mysequencewithnillable --noRecurse --noExternalization --noHashSupport --noAggregateConversion
3905// ----------------------------------------------------------------------------
3906// NOTICE:
3907// Copyright 2022 Bloomberg Finance L.P. All rights reserved.
3908// Property of Bloomberg Finance L.P. (BFLP)
3909// This software is made available solely pursuant to the
3910// terms of a BFLP license agreement which governs its use.
3911// ------------------------------- END-OF-FILE --------------------------------
3912
3913/** @} */
3914/** @} */
3915/** @} */
Definition bdlb_nullablevalue.h:257
Definition bslstl_string.h:1281
Definition bslstl_vector.h:1025
Definition bslma_allocator.h:457
Definition s_baltst_mysequencewithnillable.h:314
int manipulateAttributes(MANIPULATOR &manipulator)
Definition s_baltst_mysequencewithnillable.h:2539
bdlb::NullableValue< bsl::vector< char > > & attribute1()
Definition s_baltst_mysequencewithnillable.h:2583
MySequenceWithNillableBase64Binary(bslma::Allocator *basicAllocator=0)
MySequenceWithNillableBase64Binary(const MySequenceWithNillableBase64Binary &original, bslma::Allocator *basicAllocator=0)
~MySequenceWithNillableBase64Binary()
Destroy this object.
static const char CLASS_NAME[]
Definition s_baltst_mysequencewithnillable.h:334
static const bdlat_AttributeInfo * lookupAttributeInfo(const char *name, int nameLength)
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
@ NUM_ATTRIBUTES
Definition s_baltst_mysequencewithnillable.h:326
int accessAttribute(ACCESSOR &accessor, int id) const
Definition s_baltst_mysequencewithnillable.h:2603
MySequenceWithNillableBase64Binary & operator=(const MySequenceWithNillableBase64Binary &rhs)
Assign to this object the value of the specified rhs object.
int accessAttributes(ACCESSOR &accessor) const
Definition s_baltst_mysequencewithnillable.h:2590
static const bdlat_AttributeInfo ATTRIBUTE_INFO_ARRAY[]
Definition s_baltst_mysequencewithnillable.h:336
@ ATTRIBUTE_INDEX_ATTRIBUTE1
Definition s_baltst_mysequencewithnillable.h:330
@ ATTRIBUTE_ID_ATTRIBUTE1
Definition s_baltst_mysequencewithnillable.h:322
int manipulateAttribute(MANIPULATOR &manipulator, int id)
Definition s_baltst_mysequencewithnillable.h:2552
static const bdlat_AttributeInfo * lookupAttributeInfo(int id)
Definition s_baltst_mysequencewithnillable.h:520
@ ATTRIBUTE_ID_ATTRIBUTE1
Definition s_baltst_mysequencewithnillable.h:528
int accessAttribute(ACCESSOR &accessor, int id) const
Definition s_baltst_mysequencewithnillable.h:2712
int accessAttributes(ACCESSOR &accessor) const
Definition s_baltst_mysequencewithnillable.h:2699
@ NUM_ATTRIBUTES
Definition s_baltst_mysequencewithnillable.h:532
MySequenceWithNillableHexBinary & operator=(const MySequenceWithNillableHexBinary &rhs)
Assign to this object the value of the specified rhs object.
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
static const bdlat_AttributeInfo * lookupAttributeInfo(int id)
@ ATTRIBUTE_INDEX_ATTRIBUTE1
Definition s_baltst_mysequencewithnillable.h:536
MySequenceWithNillableHexBinary(bslma::Allocator *basicAllocator=0)
~MySequenceWithNillableHexBinary()
Destroy this object.
static const char CLASS_NAME[]
Definition s_baltst_mysequencewithnillable.h:540
static const bdlat_AttributeInfo * lookupAttributeInfo(const char *name, int nameLength)
bdlb::NullableValue< bsl::vector< char > > & attribute1()
Definition s_baltst_mysequencewithnillable.h:2692
MySequenceWithNillableHexBinary(const MySequenceWithNillableHexBinary &original, bslma::Allocator *basicAllocator=0)
int manipulateAttribute(MANIPULATOR &manipulator, int id)
Definition s_baltst_mysequencewithnillable.h:2661
int manipulateAttributes(MANIPULATOR &manipulator)
Definition s_baltst_mysequencewithnillable.h:2648
static const bdlat_AttributeInfo ATTRIBUTE_INFO_ARRAY[]
Definition s_baltst_mysequencewithnillable.h:542
Definition s_baltst_mysequencewithnillable.h:726
MySequenceWithNillableIntArray & operator=(const MySequenceWithNillableIntArray &rhs)
Assign to this object the value of the specified rhs object.
bsl::vector< bdlb::NullableValue< int > > & attribute1()
Definition s_baltst_mysequencewithnillable.h:2801
@ NUM_ATTRIBUTES
Definition s_baltst_mysequencewithnillable.h:738
int manipulateAttribute(MANIPULATOR &manipulator, int id)
Definition s_baltst_mysequencewithnillable.h:2770
static const bdlat_AttributeInfo ATTRIBUTE_INFO_ARRAY[]
Definition s_baltst_mysequencewithnillable.h:748
static const char CLASS_NAME[]
Definition s_baltst_mysequencewithnillable.h:746
@ ATTRIBUTE_ID_ATTRIBUTE1
Definition s_baltst_mysequencewithnillable.h:734
~MySequenceWithNillableIntArray()
Destroy this object.
int accessAttributes(ACCESSOR &accessor) const
Definition s_baltst_mysequencewithnillable.h:2808
static const bdlat_AttributeInfo * lookupAttributeInfo(int id)
MySequenceWithNillableIntArray(bslma::Allocator *basicAllocator=0)
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
@ ATTRIBUTE_INDEX_ATTRIBUTE1
Definition s_baltst_mysequencewithnillable.h:742
static const bdlat_AttributeInfo * lookupAttributeInfo(const char *name, int nameLength)
int accessAttribute(ACCESSOR &accessor, int id) const
Definition s_baltst_mysequencewithnillable.h:2821
int manipulateAttributes(MANIPULATOR &manipulator)
Definition s_baltst_mysequencewithnillable.h:2757
MySequenceWithNillableIntArray(const MySequenceWithNillableIntArray &original, bslma::Allocator *basicAllocator=0)
Definition s_baltst_mysequencewithnillable.h:1541
int manipulateAttribute(MANIPULATOR &manipulator, int id)
Definition s_baltst_mysequencewithnillable.h:3206
MySequenceWithNillableIntList(const MySequenceWithNillableIntList &original, bslma::Allocator *basicAllocator=0)
static const bdlat_AttributeInfo * lookupAttributeInfo(int id)
MySequenceWithNillableIntList & operator=(const MySequenceWithNillableIntList &rhs)
Assign to this object the value of the specified rhs object.
int accessAttributes(ACCESSOR &accessor) const
Definition s_baltst_mysequencewithnillable.h:3244
MySequenceWithNillableIntList(bslma::Allocator *basicAllocator=0)
int manipulateAttributes(MANIPULATOR &manipulator)
Definition s_baltst_mysequencewithnillable.h:3193
static const char CLASS_NAME[]
Definition s_baltst_mysequencewithnillable.h:1561
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
@ NUM_ATTRIBUTES
Definition s_baltst_mysequencewithnillable.h:1553
static const bdlat_AttributeInfo ATTRIBUTE_INFO_ARRAY[]
Definition s_baltst_mysequencewithnillable.h:1563
@ ATTRIBUTE_ID_ATTRIBUTE1
Definition s_baltst_mysequencewithnillable.h:1549
int accessAttribute(ACCESSOR &accessor, int id) const
Definition s_baltst_mysequencewithnillable.h:3257
static const bdlat_AttributeInfo * lookupAttributeInfo(const char *name, int nameLength)
@ ATTRIBUTE_INDEX_ATTRIBUTE1
Definition s_baltst_mysequencewithnillable.h:1557
bsl::vector< bdlb::NullableValue< int > > & attribute1()
Definition s_baltst_mysequencewithnillable.h:3237
~MySequenceWithNillableIntList()
Destroy this object.
Definition s_baltst_mysequencewithnillable.h:932
int accessAttribute(ACCESSOR &accessor, int id) const
Definition s_baltst_mysequencewithnillable.h:2930
static const bdlat_AttributeInfo * lookupAttributeInfo(const char *name, int nameLength)
MySequenceWithNillableIntSequenceArraySequence & operator=(const MySequenceWithNillableIntSequenceArraySequence &rhs)
Assign to this object the value of the specified rhs object.
int & attribute1()
Definition s_baltst_mysequencewithnillable.h:2910
@ ATTRIBUTE_INDEX_ATTRIBUTE1
Definition s_baltst_mysequencewithnillable.h:948
int manipulateAttribute(MANIPULATOR &manipulator, int id)
Definition s_baltst_mysequencewithnillable.h:2879
int manipulateAttributes(MANIPULATOR &manipulator)
Definition s_baltst_mysequencewithnillable.h:2866
int accessAttributes(ACCESSOR &accessor) const
Definition s_baltst_mysequencewithnillable.h:2917
static const bdlat_AttributeInfo ATTRIBUTE_INFO_ARRAY[]
Definition s_baltst_mysequencewithnillable.h:954
static const char CLASS_NAME[]
Definition s_baltst_mysequencewithnillable.h:952
static const bdlat_AttributeInfo * lookupAttributeInfo(int id)
MySequenceWithNillableIntSequenceArraySequence(const MySequenceWithNillableIntSequenceArraySequence &original)
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
@ ATTRIBUTE_ID_ATTRIBUTE1
Definition s_baltst_mysequencewithnillable.h:940
@ NUM_ATTRIBUTES
Definition s_baltst_mysequencewithnillable.h:944
Definition s_baltst_mysequencewithnillable.h:1747
@ ATTRIBUTE_INDEX_ATTRIBUTE1
Definition s_baltst_mysequencewithnillable.h:1763
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
int accessAttributes(ACCESSOR &accessor) const
Definition s_baltst_mysequencewithnillable.h:3353
int accessAttribute(ACCESSOR &accessor, int id) const
Definition s_baltst_mysequencewithnillable.h:3366
MySequenceWithNillableIntSequenceArray(const MySequenceWithNillableIntSequenceArray &original, bslma::Allocator *basicAllocator=0)
static const bdlat_AttributeInfo ATTRIBUTE_INFO_ARRAY[]
Definition s_baltst_mysequencewithnillable.h:1769
int manipulateAttributes(MANIPULATOR &manipulator)
Definition s_baltst_mysequencewithnillable.h:3302
~MySequenceWithNillableIntSequenceArray()
Destroy this object.
MySequenceWithNillableIntSequenceArray & operator=(const MySequenceWithNillableIntSequenceArray &rhs)
Assign to this object the value of the specified rhs object.
int manipulateAttribute(MANIPULATOR &manipulator, int id)
Definition s_baltst_mysequencewithnillable.h:3315
MySequenceWithNillableIntSequenceArray(bslma::Allocator *basicAllocator=0)
static const bdlat_AttributeInfo * lookupAttributeInfo(int id)
@ NUM_ATTRIBUTES
Definition s_baltst_mysequencewithnillable.h:1759
@ ATTRIBUTE_ID_ATTRIBUTE1
Definition s_baltst_mysequencewithnillable.h:1755
static const bdlat_AttributeInfo * lookupAttributeInfo(const char *name, int nameLength)
static const char CLASS_NAME[]
Definition s_baltst_mysequencewithnillable.h:1767
bsl::vector< bdlb::NullableValue< MySequenceWithNillableIntSequenceArraySequence > > & attribute1()
Definition s_baltst_mysequencewithnillable.h:3346
Definition s_baltst_mysequencewithnillable.h:1125
@ ATTRIBUTE_ID_ATTRIBUTE1
Definition s_baltst_mysequencewithnillable.h:1133
static const char CLASS_NAME[]
Definition s_baltst_mysequencewithnillable.h:1145
MySequenceWithNillableStringArray(const MySequenceWithNillableStringArray &original, bslma::Allocator *basicAllocator=0)
static const bdlat_AttributeInfo ATTRIBUTE_INFO_ARRAY[]
Definition s_baltst_mysequencewithnillable.h:1147
int accessAttribute(ACCESSOR &accessor, int id) const
Definition s_baltst_mysequencewithnillable.h:3039
int manipulateAttributes(MANIPULATOR &manipulator)
Definition s_baltst_mysequencewithnillable.h:2975
static const bdlat_AttributeInfo * lookupAttributeInfo(int id)
int manipulateAttribute(MANIPULATOR &manipulator, int id)
Definition s_baltst_mysequencewithnillable.h:2988
@ ATTRIBUTE_INDEX_ATTRIBUTE1
Definition s_baltst_mysequencewithnillable.h:1141
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
bsl::vector< bdlb::NullableValue< bsl::string > > & attribute1()
Definition s_baltst_mysequencewithnillable.h:3019
int accessAttributes(ACCESSOR &accessor) const
Definition s_baltst_mysequencewithnillable.h:3026
~MySequenceWithNillableStringArray()
Destroy this object.
MySequenceWithNillableStringArray(bslma::Allocator *basicAllocator=0)
MySequenceWithNillableStringArray & operator=(const MySequenceWithNillableStringArray &rhs)
Assign to this object the value of the specified rhs object.
@ NUM_ATTRIBUTES
Definition s_baltst_mysequencewithnillable.h:1137
static const bdlat_AttributeInfo * lookupAttributeInfo(const char *name, int nameLength)
Definition s_baltst_mysequencewithnillable.h:1954
MySequenceWithNillableStringList(const MySequenceWithNillableStringList &original, bslma::Allocator *basicAllocator=0)
@ ATTRIBUTE_INDEX_ATTRIBUTE1
Definition s_baltst_mysequencewithnillable.h:1970
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
MySequenceWithNillableStringList & operator=(const MySequenceWithNillableStringList &rhs)
Assign to this object the value of the specified rhs object.
@ NUM_ATTRIBUTES
Definition s_baltst_mysequencewithnillable.h:1966
int manipulateAttribute(MANIPULATOR &manipulator, int id)
Definition s_baltst_mysequencewithnillable.h:3424
@ ATTRIBUTE_ID_ATTRIBUTE1
Definition s_baltst_mysequencewithnillable.h:1962
bsl::vector< bdlb::NullableValue< bsl::string > > & attribute1()
Definition s_baltst_mysequencewithnillable.h:3455
int accessAttributes(ACCESSOR &accessor) const
Definition s_baltst_mysequencewithnillable.h:3462
int manipulateAttributes(MANIPULATOR &manipulator)
Definition s_baltst_mysequencewithnillable.h:3411
static const char CLASS_NAME[]
Definition s_baltst_mysequencewithnillable.h:1974
static const bdlat_AttributeInfo * lookupAttributeInfo(const char *name, int nameLength)
static const bdlat_AttributeInfo * lookupAttributeInfo(int id)
~MySequenceWithNillableStringList()
Destroy this object.
int accessAttribute(ACCESSOR &accessor, int id) const
Definition s_baltst_mysequencewithnillable.h:3475
MySequenceWithNillableStringList(bslma::Allocator *basicAllocator=0)
static const bdlat_AttributeInfo ATTRIBUTE_INFO_ARRAY[]
Definition s_baltst_mysequencewithnillable.h:1976
Definition s_baltst_mysequencewithnillable.h:1331
@ ATTRIBUTE_INDEX_ATTRIBUTE1
Definition s_baltst_mysequencewithnillable.h:1347
MySequenceWithNillableStringSequenceArraySequence(bslma::Allocator *basicAllocator=0)
@ ATTRIBUTE_ID_ATTRIBUTE1
Definition s_baltst_mysequencewithnillable.h:1339
static const char CLASS_NAME[]
Definition s_baltst_mysequencewithnillable.h:1351
int manipulateAttributes(MANIPULATOR &manipulator)
Definition s_baltst_mysequencewithnillable.h:3084
int accessAttribute(ACCESSOR &accessor, int id) const
Definition s_baltst_mysequencewithnillable.h:3148
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
@ NUM_ATTRIBUTES
Definition s_baltst_mysequencewithnillable.h:1343
int manipulateAttribute(MANIPULATOR &manipulator, int id)
Definition s_baltst_mysequencewithnillable.h:3097
int accessAttributes(ACCESSOR &accessor) const
Definition s_baltst_mysequencewithnillable.h:3135
MySequenceWithNillableStringSequenceArraySequence(const MySequenceWithNillableStringSequenceArraySequence &original, bslma::Allocator *basicAllocator=0)
static const bdlat_AttributeInfo * lookupAttributeInfo(int id)
MySequenceWithNillableStringSequenceArraySequence & operator=(const MySequenceWithNillableStringSequenceArraySequence &rhs)
Assign to this object the value of the specified rhs object.
static const bdlat_AttributeInfo * lookupAttributeInfo(const char *name, int nameLength)
bsl::string & attribute1()
Definition s_baltst_mysequencewithnillable.h:3128
static const bdlat_AttributeInfo ATTRIBUTE_INFO_ARRAY[]
Definition s_baltst_mysequencewithnillable.h:1353
Definition s_baltst_mysequencewithnillable.h:2160
bsl::vector< bdlb::NullableValue< MySequenceWithNillableStringSequenceArraySequence > > & attribute1()
Definition s_baltst_mysequencewithnillable.h:3564
static const bdlat_AttributeInfo ATTRIBUTE_INFO_ARRAY[]
Definition s_baltst_mysequencewithnillable.h:2182
@ NUM_ATTRIBUTES
Definition s_baltst_mysequencewithnillable.h:2172
~MySequenceWithNillableStringSequenceArray()
Destroy this object.
static const bdlat_AttributeInfo * lookupAttributeInfo(int id)
static const bdlat_AttributeInfo * lookupAttributeInfo(const char *name, int nameLength)
MySequenceWithNillableStringSequenceArray & operator=(const MySequenceWithNillableStringSequenceArray &rhs)
Assign to this object the value of the specified rhs object.
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
@ ATTRIBUTE_ID_ATTRIBUTE1
Definition s_baltst_mysequencewithnillable.h:2168
int accessAttributes(ACCESSOR &accessor) const
Definition s_baltst_mysequencewithnillable.h:3571
@ ATTRIBUTE_INDEX_ATTRIBUTE1
Definition s_baltst_mysequencewithnillable.h:2176
MySequenceWithNillableStringSequenceArray(bslma::Allocator *basicAllocator=0)
int manipulateAttributes(MANIPULATOR &manipulator)
Definition s_baltst_mysequencewithnillable.h:3520
MySequenceWithNillableStringSequenceArray(const MySequenceWithNillableStringSequenceArray &original, bslma::Allocator *basicAllocator=0)
int accessAttribute(ACCESSOR &accessor, int id) const
Definition s_baltst_mysequencewithnillable.h:3584
static const char CLASS_NAME[]
Definition s_baltst_mysequencewithnillable.h:2180
int manipulateAttribute(MANIPULATOR &manipulator, int id)
Definition s_baltst_mysequencewithnillable.h:3533
Definition s_baltst_mysequencewithnillable.h:87
static const bdlat_AttributeInfo * lookupAttributeInfo(int id)
@ NUM_ATTRIBUTES
Definition s_baltst_mysequencewithnillable.h:103
int manipulateAttributes(MANIPULATOR &manipulator)
Definition s_baltst_mysequencewithnillable.h:2374
int & attribute1()
Definition s_baltst_mysequencewithnillable.h:2434
bdlb::NullableValue< bsl::string > & myNillable()
Definition s_baltst_mysequencewithnillable.h:2440
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
int manipulateAttribute(MANIPULATOR &manipulator, int id)
Definition s_baltst_mysequencewithnillable.h:2397
static const bdlat_AttributeInfo * lookupAttributeInfo(const char *name, int nameLength)
static const char CLASS_NAME[]
Definition s_baltst_mysequencewithnillable.h:113
@ ATTRIBUTE_ID_ATTRIBUTE1
Definition s_baltst_mysequencewithnillable.h:97
@ ATTRIBUTE_ID_MY_NILLABLE
Definition s_baltst_mysequencewithnillable.h:98
@ ATTRIBUTE_ID_ATTRIBUTE2
Definition s_baltst_mysequencewithnillable.h:99
@ ATTRIBUTE_INDEX_ATTRIBUTE2
Definition s_baltst_mysequencewithnillable.h:109
@ ATTRIBUTE_INDEX_ATTRIBUTE1
Definition s_baltst_mysequencewithnillable.h:107
@ ATTRIBUTE_INDEX_MY_NILLABLE
Definition s_baltst_mysequencewithnillable.h:108
MySequenceWithNillable(const MySequenceWithNillable &original, bslma::Allocator *basicAllocator=0)
bsl::string & attribute2()
Definition s_baltst_mysequencewithnillable.h:2446
int accessAttribute(ACCESSOR &accessor, int id) const
Definition s_baltst_mysequencewithnillable.h:2476
~MySequenceWithNillable()
Destroy this object.
MySequenceWithNillable & operator=(const MySequenceWithNillable &rhs)
Assign to this object the value of the specified rhs object.
int accessAttributes(ACCESSOR &accessor) const
Definition s_baltst_mysequencewithnillable.h:2453
static const bdlat_AttributeInfo ATTRIBUTE_INFO_ARRAY[]
Definition s_baltst_mysequencewithnillable.h:115
MySequenceWithNillable(bslma::Allocator *basicAllocator=0)
#define BDLAT_DECL_SEQUENCE_WITH_ALLOCATOR_BITWISEMOVEABLE_TRAITS(ClassName)
Definition bdlat_typetraits.h:282
#define BDLAT_DECL_SEQUENCE_WITH_BITWISEMOVEABLE_TRAITS(ClassName)
Definition bdlat_typetraits.h:275
#define BSLS_IDENT_RCSID(tag, str)
Definition bsls_ident.h:260
#define BSLS_IDENT_PRAGMA_ONCE
Definition bsls_ident.h:310
Definition balxml_encoderoptions.h:68
Definition s_baltst_address.h:66
bool operator!=(const Address &lhs, const Address &rhs)
bool operator==(const Address &lhs, const Address &rhs)
bsl::ostream & operator<<(bsl::ostream &stream, const Address &rhs)
Definition bdlat_attributeinfo.h:137
int d_id
Definition bdlat_attributeinfo.h:140