BDE 4.14.0 Production release
Loading...
Searching...
No Matches
s_baltst_mysequencewithchoice.h
Go to the documentation of this file.
1/// @file s_baltst_mysequencewithchoice.h
2///
3/// The content of this file has been pre-processed for Doxygen.
4///
5
6
7// s_baltst_mysequencewithchoice.h *DO NOT EDIT* @generated -*-C++-*-
8#ifndef INCLUDED_S_BALTST_MYSEQUENCEWITHCHOICE
9#define INCLUDED_S_BALTST_MYSEQUENCEWITHCHOICE
10
11#include <bsls_ident.h>
12BSLS_IDENT_RCSID(s_baltst_mysequencewithchoice_h, "$Id$ $CSID$")
14
15/// @defgroup s_baltst_mysequencewithchoice s_baltst_mysequencewithchoice
16/// @brief Provide value-semantic attribute classes
17/// @addtogroup Standalones
18/// @{
19/// @addtogroup s_baltst
20/// @{
21/// @addtogroup s_baltst_mysequencewithchoice
22/// @{
23///
24/// <h1> Outline </h1>
25/// * <a href="#s_baltst_mysequencewithchoice-purpose"> Purpose</a>
26///
27/// # Purpose {#s_baltst_mysequencewithchoice-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_mysequencewithchoice
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 <bsls_assert.h>
54
55#include <bsl_iosfwd.h>
56#include <bsl_limits.h>
57
58
59
60namespace s_baltst { class MySequenceWithChoiceChoice; }
61namespace s_baltst { class MySequenceWithChoice; }
62namespace s_baltst {
63
64 // ================================
65 // class MySequenceWithChoiceChoice
66 // ================================
67
69
70 // INSTANCE DATA
71 union {
73 };
74
75 int d_selectionId;
76
77 public:
78 // TYPES
79
80 enum {
83 };
84
85 enum {
87 };
88
89 enum {
91 };
92
93 // CONSTANTS
94 static const char CLASS_NAME[];
95
97
98 // CLASS METHODS
99
100 /// Return selection information for the selection indicated by the
101 /// specified `id` if the selection exists, and 0 otherwise.
103
104 /// Return selection information for the selection indicated by the
105 /// specified `name` of the specified `nameLength` if the selection
106 /// exists, and 0 otherwise.
108 const char *name,
109 int nameLength);
110
111 // CREATORS
112
113 /// Create an object of type `MySequenceWithChoiceChoice` having the
114 /// default value.
116
117 /// Create an object of type `MySequenceWithChoiceChoice` having the
118 /// value of the specified `original` object.
120
121#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) \
122 && defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT)
123 /// Create an object of type `MySequenceWithChoiceChoice` having the
124 /// value of the specified `original` object. After performing this
125 /// action, the `original` object will be left in a valid, but
126 /// unspecified state.
128#endif
129
130 /// Destroy this object.
132
133 // MANIPULATORS
134
135 /// Assign to this object the value of the specified `rhs` object.
137
138#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) \
139 && defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT)
140 /// Assign to this object the value of the specified `rhs` object.
141 /// After performing this action, the `rhs` object will be left in a
142 /// valid, but unspecified state.
144#endif
145
146 /// Reset this object to the default value (i.e., its value upon default
147 /// construction).
148 void reset();
149
150 /// Set the value of this object to be the default for the selection
151 /// indicated by the specified `selectionId`. Return 0 on success, and
152 /// non-zero value otherwise (i.e., the selection is not found).
154
155 /// Set the value of this object to be the default for the selection
156 /// indicated by the specified `name` of the specified `nameLength`.
157 /// Return 0 on success, and non-zero value otherwise (i.e., the
158 /// selection is not found).
159 int makeSelection(const char *name, int nameLength);
160
161 /// Set the value of this object to be a "ChoiceA" value. Optionally
162 /// specify the `value` of the "ChoiceA". If `value` is not specified,
163 /// the default "ChoiceA" value is used.
165 int& makeChoiceA(int value);
166
167 /// Invoke the specified `manipulator` on the address of the modifiable
168 /// selection, supplying `manipulator` with the corresponding selection
169 /// information structure. Return the value returned from the
170 /// invocation of `manipulator` if this object has a defined selection,
171 /// and -1 otherwise.
172 template<class MANIPULATOR>
173 int manipulateSelection(MANIPULATOR& manipulator);
174
175 /// Return a reference to the modifiable "ChoiceA" selection of this
176 /// object if "ChoiceA" is the current selection. The behavior is
177 /// undefined unless "ChoiceA" is the selection of this object.
178 int& choiceA();
179
180 // ACCESSORS
181
182 /// Format this object to the specified output `stream` at the
183 /// optionally specified indentation `level` and return a reference to
184 /// the modifiable `stream`. If `level` is specified, optionally
185 /// specify `spacesPerLevel`, the number of spaces per indentation level
186 /// for this and all of its nested objects. Each line is indented by
187 /// the absolute value of `level * spacesPerLevel`. If `level` is
188 /// negative, suppress indentation of the first line. If
189 /// `spacesPerLevel` is negative, suppress line breaks and format the
190 /// entire output on one line. If `stream` is initially invalid, this
191 /// operation has no effect. Note that a trailing newline is provided
192 /// in multiline mode only.
193 bsl::ostream& print(bsl::ostream& stream,
194 int level = 0,
195 int spacesPerLevel = 4) const;
196
197 /// Return the id of the current selection if the selection is defined,
198 /// and -1 otherwise.
199 int selectionId() const;
200
201 /// Invoke the specified `accessor` on the non-modifiable selection,
202 /// supplying `accessor` with the corresponding selection information
203 /// structure. Return the value returned from the invocation of
204 /// `accessor` if this object has a defined selection, and -1 otherwise.
205 template<class ACCESSOR>
206 int accessSelection(ACCESSOR& accessor) const;
207
208 /// Return a reference to the non-modifiable "ChoiceA" selection of this
209 /// object if "ChoiceA" is the current selection. The behavior is
210 /// undefined unless "ChoiceA" is the selection of this object.
211 const int& choiceA() const;
212
213 /// Return `true` if the value of this object is a "ChoiceA" value, and
214 /// return `false` otherwise.
215 bool isChoiceAValue() const;
216
217 /// Return `true` if the value of this object is undefined, and `false`
218 /// otherwise.
219 bool isUndefinedValue() const;
220
221 /// Return the symbolic name of the current selection of this object.
222 const char *selectionName() const;
223};
224
225// FREE OPERATORS
226
227/// Return `true` if the specified `lhs` and `rhs` objects have the same
228/// value, and `false` otherwise. Two `MySequenceWithChoiceChoice` objects have the same
229/// value if either the selections in both objects have the same ids and
230/// the same values, or both selections are undefined.
231inline
232bool operator==(const MySequenceWithChoiceChoice& lhs, const MySequenceWithChoiceChoice& rhs);
233
234/// Return `true` if the specified `lhs` and `rhs` objects do not have the
235/// same values, as determined by `operator==`, and `false` otherwise.
236inline
237bool operator!=(const MySequenceWithChoiceChoice& lhs, const MySequenceWithChoiceChoice& rhs);
238
239/// Format the specified `rhs` to the specified output `stream` and
240/// return a reference to the modifiable `stream`.
241inline
242bsl::ostream& operator<<(bsl::ostream& stream, const MySequenceWithChoiceChoice& rhs);
243
244} // close package namespace
245
246// TRAITS
247
249
250namespace s_baltst {
251
252 // ==========================
253 // class MySequenceWithChoice
254 // ==========================
255
257
258 // INSTANCE DATA
260
261 public:
262 // TYPES
263 enum {
265 };
266
267 enum {
269 };
270
271 enum {
273 };
274
275 // CONSTANTS
276 static const char CLASS_NAME[];
277
279
280 public:
281 // CLASS METHODS
282
283 /// Return attribute information for the attribute indicated by the
284 /// specified `id` if the attribute exists, and 0 otherwise.
286
287 /// Return attribute information for the attribute indicated by the
288 /// specified `name` of the specified `nameLength` if the attribute
289 /// exists, and 0 otherwise.
291 const char *name,
292 int nameLength);
293
294 // CREATORS
295
296 /// Create an object of type `MySequenceWithChoice` having the default
297 /// value.
299
300 /// Create an object of type `MySequenceWithChoice` having the value of
301 /// the specified `original` object.
303
304#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) \
305 && defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT)
306 /// Create an object of type `MySequenceWithChoice` having the value of
307 /// the specified `original` object. After performing this action, the
308 /// `original` object will be left in a valid, but unspecified state.
309 MySequenceWithChoice(MySequenceWithChoice&& original) = default;
310#endif
311
312 /// Destroy this object.
314
315 // MANIPULATORS
316
317 /// Assign to this object the value of the specified `rhs` object.
319
320#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES) \
321 && defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT)
322 /// Assign to this object the value of the specified `rhs` object.
323 /// After performing this action, the `rhs` object will be left in a
324 /// valid, but unspecified state.
326#endif
327
328 /// Reset this object to the default value (i.e., its value upon
329 /// default construction).
330 void reset();
331
332 /// Invoke the specified `manipulator` sequentially on the address of
333 /// each (modifiable) attribute of this object, supplying `manipulator`
334 /// with the corresponding attribute information structure until such
335 /// invocation returns a non-zero value. Return the value from the
336 /// last invocation of `manipulator` (i.e., the invocation that
337 /// terminated the sequence).
338 template<class MANIPULATOR>
339 int manipulateAttributes(MANIPULATOR& manipulator);
340
341 /// Invoke the specified `manipulator` on the address of
342 /// the (modifiable) attribute indicated by the specified `id`,
343 /// supplying `manipulator` with the corresponding attribute
344 /// information structure. Return the value returned from the
345 /// invocation of `manipulator` if `id` identifies an attribute of this
346 /// class, and -1 otherwise.
347 template<class MANIPULATOR>
348 int manipulateAttribute(MANIPULATOR& manipulator, int id);
349
350 /// Invoke the specified `manipulator` on the address of
351 /// the (modifiable) attribute indicated by the specified `name` of the
352 /// specified `nameLength`, supplying `manipulator` with the
353 /// corresponding attribute information structure. Return the value
354 /// returned from the invocation of `manipulator` if `name` identifies
355 /// an attribute of this class, and -1 otherwise.
356 template<class MANIPULATOR>
357 int manipulateAttribute(MANIPULATOR& manipulator,
358 const char *name,
359 int nameLength);
360
361 /// Return a reference to the modifiable "Mode" attribute of this
362 /// object.
364
365 // ACCESSORS
366
367 /// Format this object to the specified output `stream` at the
368 /// optionally specified indentation `level` and return a reference to
369 /// the modifiable `stream`. If `level` is specified, optionally
370 /// specify `spacesPerLevel`, the number of spaces per indentation level
371 /// for this and all of its nested objects. Each line is indented by
372 /// the absolute value of `level * spacesPerLevel`. If `level` is
373 /// negative, suppress indentation of the first line. If
374 /// `spacesPerLevel` is negative, suppress line breaks and format the
375 /// entire output on one line. If `stream` is initially invalid, this
376 /// operation has no effect. Note that a trailing newline is provided
377 /// in multiline mode only.
378 bsl::ostream& print(bsl::ostream& stream,
379 int level = 0,
380 int spacesPerLevel = 4) const;
381
382 /// Invoke the specified `accessor` sequentially on each
383 /// (non-modifiable) attribute of this object, supplying `accessor`
384 /// with the corresponding attribute information structure until such
385 /// invocation returns a non-zero value. Return the value from the
386 /// last invocation of `accessor` (i.e., the invocation that terminated
387 /// the sequence).
388 template<class ACCESSOR>
389 int accessAttributes(ACCESSOR& accessor) const;
390
391 /// Invoke the specified `accessor` on the (non-modifiable) attribute
392 /// of this object indicated by the specified `id`, supplying `accessor`
393 /// with the corresponding attribute information structure. Return the
394 /// value returned from the invocation of `accessor` if `id` identifies
395 /// an attribute of this class, and -1 otherwise.
396 template<class ACCESSOR>
397 int accessAttribute(ACCESSOR& accessor, int id) const;
398
399 /// Invoke the specified `accessor` on the (non-modifiable) attribute
400 /// of this object indicated by the specified `name` of the specified
401 /// `nameLength`, supplying `accessor` with the corresponding attribute
402 /// information structure. Return the value returned from the
403 /// invocation of `accessor` if `name` identifies an attribute of this
404 /// class, and -1 otherwise.
405 template<class ACCESSOR>
406 int accessAttribute(ACCESSOR& accessor,
407 const char *name,
408 int nameLength) const;
409
410 /// Return a reference offering non-modifiable access to the "Mode"
411 /// attribute of this object.
412 const MySequenceWithChoiceChoice& mode() const;
413};
414
415// FREE OPERATORS
416
417/// Return `true` if the specified `lhs` and `rhs` attribute objects have
418/// the same value, and `false` otherwise. Two attribute objects have the
419/// same value if each respective attribute has the same value.
420inline
421bool operator==(const MySequenceWithChoice& lhs, const MySequenceWithChoice& rhs);
422
423/// Return `true` if the specified `lhs` and `rhs` attribute objects do not
424/// have the same value, and `false` otherwise. Two attribute objects do
425/// not have the same value if one or more respective attributes differ in
426/// values.
427inline
428bool operator!=(const MySequenceWithChoice& lhs, const MySequenceWithChoice& rhs);
429
430/// Format the specified `rhs` to the specified output `stream` and
431/// return a reference to the modifiable `stream`.
432inline
433bsl::ostream& operator<<(bsl::ostream& stream, const MySequenceWithChoice& rhs);
434
435} // close package namespace
436
437// TRAITS
438
440
441// ============================================================================
442// INLINE FUNCTION DEFINITIONS
443// ============================================================================
444
445namespace s_baltst {
446
447 // --------------------------------
448 // class MySequenceWithChoiceChoice
449 // --------------------------------
450
451// CLASS METHODS
452// CREATORS
453inline
455: d_selectionId(SELECTION_ID_UNDEFINED)
456{
457}
458
459inline
464
465// MANIPULATORS
466template <class MANIPULATOR>
468{
469 switch (d_selectionId) {
471 return manipulator(&d_choiceA.object(),
473 default:
475 return -1;
476 }
477}
478
479inline
481{
482 BSLS_ASSERT(SELECTION_ID_CHOICE_A == d_selectionId);
483 return d_choiceA.object();
484}
485
486// ACCESSORS
487inline
489{
490 return d_selectionId;
491}
492
493template <class ACCESSOR>
495{
496 switch (d_selectionId) {
498 return accessor(d_choiceA.object(),
500 default:
501 BSLS_ASSERT(SELECTION_ID_UNDEFINED == d_selectionId);
502 return -1;
503 }
504}
505
506inline
508{
509 BSLS_ASSERT(SELECTION_ID_CHOICE_A == d_selectionId);
510 return d_choiceA.object();
511}
512
513inline
515{
516 return SELECTION_ID_CHOICE_A == d_selectionId;
517}
518
519inline
521{
522 return SELECTION_ID_UNDEFINED == d_selectionId;
523}
524
525
526 // --------------------------
527 // class MySequenceWithChoice
528 // --------------------------
529
530// CLASS METHODS
531// MANIPULATORS
532template <class MANIPULATOR>
534{
535 int ret;
536
537 ret = manipulator(&d_mode, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_MODE]);
538 if (ret) {
539 return ret;
540 }
541
542 return 0;
543}
544
545template <class MANIPULATOR>
546int MySequenceWithChoice::manipulateAttribute(MANIPULATOR& manipulator, int id)
547{
548 enum { NOT_FOUND = -1 };
549
550 switch (id) {
551 case ATTRIBUTE_ID_MODE: {
552 return manipulator(&d_mode, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_MODE]);
553 }
554 default:
555 return NOT_FOUND;
556 }
557}
558
559template <class MANIPULATOR>
561 MANIPULATOR& manipulator,
562 const char *name,
563 int nameLength)
564{
565 enum { NOT_FOUND = -1 };
566
567 const bdlat_AttributeInfo *attributeInfo =
568 lookupAttributeInfo(name, nameLength);
569 if (0 == attributeInfo) {
570 return NOT_FOUND;
571 }
572
573 return manipulateAttribute(manipulator, attributeInfo->d_id);
574}
575
576inline
581
582// ACCESSORS
583template <class ACCESSOR>
584int MySequenceWithChoice::accessAttributes(ACCESSOR& accessor) const
585{
586 int ret;
587
588 ret = accessor(d_mode, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_MODE]);
589 if (ret) {
590 return ret;
591 }
592
593 return 0;
594}
595
596template <class ACCESSOR>
597int MySequenceWithChoice::accessAttribute(ACCESSOR& accessor, int id) const
598{
599 enum { NOT_FOUND = -1 };
600
601 switch (id) {
602 case ATTRIBUTE_ID_MODE: {
603 return accessor(d_mode, ATTRIBUTE_INFO_ARRAY[ATTRIBUTE_INDEX_MODE]);
604 }
605 default:
606 return NOT_FOUND;
607 }
608}
609
610template <class ACCESSOR>
612 ACCESSOR& accessor,
613 const char *name,
614 int nameLength) const
615{
616 enum { NOT_FOUND = -1 };
617
618 const bdlat_AttributeInfo *attributeInfo =
619 lookupAttributeInfo(name, nameLength);
620 if (0 == attributeInfo) {
621 return NOT_FOUND;
622 }
623
624 return accessAttribute(accessor, attributeInfo->d_id);
625}
626
627inline
629{
630 return d_mode;
631}
632
633} // close package namespace
634
635// FREE FUNCTIONS
636
637inline
641{
643 if (lhs.selectionId() == rhs.selectionId()) {
644 switch (rhs.selectionId()) {
645 case Class::SELECTION_ID_CHOICE_A:
646 return lhs.choiceA() == rhs.choiceA();
647 default:
648 BSLS_ASSERT(Class::SELECTION_ID_UNDEFINED == rhs.selectionId());
649 return true;
650 }
651 }
652 else {
653 return false;
654 }
655}
656
657inline
661{
662 return !(lhs == rhs);
663}
664
665inline
666bsl::ostream& s_baltst::operator<<(
667 bsl::ostream& stream,
669{
670 return rhs.print(stream, 0, -1);
671}
672
673
674inline
678{
679 return lhs.mode() == rhs.mode();
680}
681
682inline
686{
687 return !(lhs == rhs);
688}
689
690inline
691bsl::ostream& s_baltst::operator<<(
692 bsl::ostream& stream,
694{
695 return rhs.print(stream, 0, -1);
696}
697
698
699#endif
700
701// GENERATED BY @BLP_BAS_CODEGEN_VERSION@
702// USING bas_codegen.pl s_baltst_mysequencewithchoice.xsd --mode msg --includedir . --msgComponent mysequencewithchoice --noRecurse --noExternalization --noHashSupport --noAggregateConversion
703// ----------------------------------------------------------------------------
704// NOTICE:
705// Copyright 2022 Bloomberg Finance L.P. All rights reserved.
706// Property of Bloomberg Finance L.P. (BFLP)
707// This software is made available solely pursuant to the
708// terms of a BFLP license agreement which governs its use.
709// ------------------------------- END-OF-FILE --------------------------------
710
711/** @} */
712/** @} */
713/** @} */
Definition s_baltst_mysequencewithchoice.h:68
const char * selectionName() const
Return the symbolic name of the current selection of this object.
static const bdlat_SelectionInfo * lookupSelectionInfo(const char *name, int nameLength)
@ NUM_SELECTIONS
Definition s_baltst_mysequencewithchoice.h:86
int manipulateSelection(MANIPULATOR &manipulator)
Definition s_baltst_mysequencewithchoice.h:467
@ SELECTION_INDEX_CHOICE_A
Definition s_baltst_mysequencewithchoice.h:90
int makeSelection(const char *name, int nameLength)
@ SELECTION_ID_UNDEFINED
Definition s_baltst_mysequencewithchoice.h:81
@ SELECTION_ID_CHOICE_A
Definition s_baltst_mysequencewithchoice.h:82
MySequenceWithChoiceChoice & operator=(const MySequenceWithChoiceChoice &rhs)
Assign to this object the value of the specified rhs object.
bool isUndefinedValue() const
Definition s_baltst_mysequencewithchoice.h:520
static const bdlat_SelectionInfo SELECTION_INFO_ARRAY[]
Definition s_baltst_mysequencewithchoice.h:96
~MySequenceWithChoiceChoice()
Destroy this object.
Definition s_baltst_mysequencewithchoice.h:460
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
bsls::ObjectBuffer< int > d_choiceA
Definition s_baltst_mysequencewithchoice.h:72
static const bdlat_SelectionInfo * lookupSelectionInfo(int id)
bool isChoiceAValue() const
Definition s_baltst_mysequencewithchoice.h:514
int makeSelection(int selectionId)
MySequenceWithChoiceChoice(const MySequenceWithChoiceChoice &original)
static const char CLASS_NAME[]
Definition s_baltst_mysequencewithchoice.h:94
int accessSelection(ACCESSOR &accessor) const
Definition s_baltst_mysequencewithchoice.h:494
int & choiceA()
Definition s_baltst_mysequencewithchoice.h:480
MySequenceWithChoiceChoice()
Definition s_baltst_mysequencewithchoice.h:454
int selectionId() const
Definition s_baltst_mysequencewithchoice.h:488
Definition s_baltst_mysequencewithchoice.h:256
@ ATTRIBUTE_ID_MODE
Definition s_baltst_mysequencewithchoice.h:264
MySequenceWithChoiceChoice & mode()
Definition s_baltst_mysequencewithchoice.h:577
MySequenceWithChoice(const MySequenceWithChoice &original)
int manipulateAttribute(MANIPULATOR &manipulator, int id)
Definition s_baltst_mysequencewithchoice.h:546
static const bdlat_AttributeInfo * lookupAttributeInfo(const char *name, int nameLength)
static const bdlat_AttributeInfo * lookupAttributeInfo(int id)
int manipulateAttributes(MANIPULATOR &manipulator)
Definition s_baltst_mysequencewithchoice.h:533
MySequenceWithChoice & operator=(const MySequenceWithChoice &rhs)
Assign to this object the value of the specified rhs object.
static const bdlat_AttributeInfo ATTRIBUTE_INFO_ARRAY[]
Definition s_baltst_mysequencewithchoice.h:278
static const char CLASS_NAME[]
Definition s_baltst_mysequencewithchoice.h:276
@ ATTRIBUTE_INDEX_MODE
Definition s_baltst_mysequencewithchoice.h:272
~MySequenceWithChoice()
Destroy this object.
int accessAttribute(ACCESSOR &accessor, int id) const
Definition s_baltst_mysequencewithchoice.h:597
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
int accessAttributes(ACCESSOR &accessor) const
Definition s_baltst_mysequencewithchoice.h:584
@ NUM_ATTRIBUTES
Definition s_baltst_mysequencewithchoice.h:268
#define BDLAT_DECL_CHOICE_WITH_BITWISEMOVEABLE_TRAITS(ClassName)
Definition bdlat_typetraits.h:242
#define BDLAT_DECL_SEQUENCE_WITH_BITWISEMOVEABLE_TRAITS(ClassName)
Definition bdlat_typetraits.h:275
#define BSLS_ASSERT(X)
Definition bsls_assert.h:1804
#define BSLS_IDENT_RCSID(tag, str)
Definition bsls_ident.h:260
#define BSLS_IDENT_PRAGMA_ONCE
Definition bsls_ident.h:310
Definition 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
Definition bdlat_selectioninfo.h:136
TYPE & object()
Definition bsls_objectbuffer.h:351