BDE 4.14.0 Production release
Loading...
Searching...
No Matches
s_baltst.h
Go to the documentation of this file.
1
/// @file s_baltst.h
2
///
3
///
4
/// @defgroup s_baltst Package s_baltst
5
/// @brief
6
/// @addtogroup Standalones
7
/// @{
8
/// @addtogroup s_baltst
9
/// [s_baltst]: group__s__baltst.html
10
/// @{
11
///
12
/// # Purpose {#s_baltst-purpose}
13
/// Private auto-generated classes for testing of other packages.
14
///
15
/// @see balber, baljsn, balxml
16
///
17
/// # Description {#s_baltst-description}
18
/// The 's_baltst' package provides a number of classes for testing
19
/// encoders and decoders in other packages.
20
///
21
/// ## Component Synopsis
22
///
23
/// @ref s_baltst_address :
24
/// Provide value-semantic attribute classes
25
///
26
/// @ref s_baltst_basicrecord :
27
/// Provide value-semantic attribute classes
28
///
29
/// @ref s_baltst_basicschema :
30
/// Provide value-semantic attribute classes
31
///
32
/// @ref s_baltst_basicschemautil :
33
/// Provide utilities for 's_baltst::BasicSchema' objects.
34
///
35
/// @ref s_baltst_bigrecord :
36
/// Provide value-semantic attribute classes
37
///
38
/// @ref s_baltst_customint :
39
/// Provide value-semantic attribute classes
40
///
41
/// @ref s_baltst_customizedstring :
42
/// Provide value-semantic attribute classes
43
///
44
/// @ref s_baltst_customstring :
45
/// Provide value-semantic attribute classes
46
///
47
/// @ref s_baltst_employee :
48
/// Provide value-semantic attribute classes
49
///
50
/// @ref s_baltst_enumerated :
51
/// Provide value-semantic attribute classes
52
///
53
/// @ref s_baltst_featuretestmessage :
54
/// Provide value-semantic attribute classes
55
///
56
/// @ref s_baltst_featuretestmessageutil :
57
/// Provide utilities for testing codecs with feature-test messages.
58
///
59
/// @ref s_baltst_mychoice :
60
/// Provide value-semantic attribute classes
61
///
62
/// @ref s_baltst_myenumeration :
63
/// Provide value-semantic attribute classes
64
///
65
/// @ref s_baltst_mysequence :
66
/// Provide value-semantic attribute classes
67
///
68
/// @ref s_baltst_mysequencewithanonymouschoice :
69
/// Provide value-semantic attribute classes
70
///
71
/// @ref s_baltst_mysequencewitharray :
72
/// Provide value-semantic attribute classes
73
///
74
/// @ref s_baltst_mysequencewithattributes :
75
/// Provide value-semantic attribute classes
76
///
77
/// @ref s_baltst_mysequencewithchoice :
78
/// Provide value-semantic attribute classes
79
///
80
/// @ref s_baltst_mysequencewithdecimalattribute :
81
/// Provide value-semantic attribute classes
82
///
83
/// @ref s_baltst_mysequencewithdoubleattribute :
84
/// Provide value-semantic attribute classes
85
///
86
/// @ref s_baltst_mysequencewithnillable :
87
/// Provide value-semantic attribute classes
88
///
89
/// @ref s_baltst_mysequencewithnillables :
90
/// Provide value-semantic attribute classes
91
///
92
/// @ref s_baltst_mysequencewithnullable :
93
/// Provide value-semantic attribute classes
94
///
95
/// @ref s_baltst_mysequencewithnullables :
96
/// Provide value-semantic attribute classes
97
///
98
/// @ref s_baltst_mysequencewithprecisiondecimalattribute :
99
/// Provide value-semantic attribute classes
100
///
101
/// @ref s_baltst_mysimplecontent :
102
/// Provide value-semantic attribute classes
103
///
104
/// @ref s_baltst_mysimpleintcontent :
105
/// Provide value-semantic attribute classes
106
///
107
/// @ref s_baltst_ratsnest :
108
/// Provide value-semantic attribute classes
109
///
110
/// @ref s_baltst_rawdata :
111
/// Provide value-semantic attribute classes
112
///
113
/// @ref s_baltst_rawdataswitched :
114
/// Provide value-semantic attribute classes
115
///
116
/// @ref s_baltst_rawdataunformatted :
117
/// Provide value-semantic attribute classes
118
///
119
/// @ref s_baltst_request :
120
/// Provide value-semantic attribute classes
121
///
122
/// @ref s_baltst_response :
123
/// Provide value-semantic attribute classes
124
///
125
/// @ref s_baltst_sequencewithanonymity :
126
/// Provide value-semantic attribute classes
127
///
128
/// @ref s_baltst_simplerequest :
129
/// Provide value-semantic attribute classes
130
///
131
/// @ref s_baltst_sqrt :
132
/// Provide value-semantic attribute classes
133
///
134
/// @ref s_baltst_sqrtf :
135
/// Provide value-semantic attribute classes
136
///
137
/// @ref s_baltst_test :
138
/// Provide a superficial test of all classes in 'baltst' package.
139
///
140
/// @ref s_baltst_timingrequest :
141
/// Provide value-semantic attribute classes
142
///
143
/// @ref s_baltst_topchoice :
144
/// Provide value-semantic attribute classes
145
///
146
/// @ref s_baltst_unsignedsequence :
147
/// Provide value-semantic attribute classes
148
///
149
/// @ref s_baltst_voidsequence :
150
/// Provide value-semantic attribute classes
151
///
152
/// ### Auto-Generated: Single class or struct per Component
153
///
154
/// @code
155
/// Component 'class' or 'struct'
156
/// ---------------------------------------- ------------------------------------
157
/// s_baltst_address Address
158
/// s_baltst_basicrecord BasicRecord
159
/// s_baltst_bigrecord BigRecord
160
/// s_baltst_customint CustomInt
161
/// s_baltst_customizedstring CustomString
162
/// s_baltst_customstring CustomizedString
163
/// s_baltst_employee Employee
164
/// s_baltst_enumerated Enumerated
165
/// s_baltst_mychoice MyChoice
166
/// s_baltst_myenumeration MyEnumeration
167
/// s_baltst_mysequence MySequence
168
/// s_baltst_mysequencewithanonymouschoice MySequenceWithAnonymousChoice
169
/// s_baltst_mysequencewitharray MySequenceWithArray
170
/// s_baltst_mysequencewithattributes MySequenceWithAttributes
171
/// s_baltst_mysequencewithnillable MySequenceWithNillable
172
/// s_baltst_mysequencewithnillables MySequenceWithNillables
173
/// s_baltst_mysequencewithnullable MySequenceWithNullable
174
/// s_baltst_mysequencewithnullables MySequenceWithNullables
175
/// s_baltst_mysimplecontent MySimpleContent
176
/// s_baltst_mysimpleintcontent MySimpleIntContent
177
/// s_baltst_rawdata RawData
178
/// s_baltst_rawdataswitched RawDataSwitched
179
/// s_baltst_rawdataunformatted RawDataUnformatted
180
/// s_baltst_sqrt Sqrt
181
/// s_baltst_sqrtf SqrtF
182
/// s_baltst_timingrequest TimingRequest
183
/// s_baltst_topchoice Topchoice
184
/// @endcode
185
///
186
/// ### Auto-generated: Multiple Classes Merged into a Single Component
187
///
188
/// The nine components:
189
/// @code
190
/// s_baltst_ratsnest{choice{1,2,3},sequence{1,2,3,4,5,6}}
191
/// @endcode
192
/// define the nine classes:
193
/// @code
194
/// Choice1
195
/// Choice2
196
/// Choice3
197
/// Sequence1
198
/// Sequence2
199
/// Sequence3
200
/// Sequence4
201
/// Sequence5
202
/// Sequence6
203
/// @endcode
204
/// These nine auto-generated components must be merged into a single component,
205
/// @ref s_baltst_ratsnest , after being generated. See instructions under {Rat's
206
/// Nest}).
207
///
208
/// ### Hand-Written Superficial Test Driver
209
///
210
/// There is only one test driver in the package. All it has is a breathing test
211
/// which default constructs every value type in the package, and ensures that
212
/// 'operator==' and 'operator!=' exist and work and that 'operator<<' exists.
213
/// @code
214
/// s_baltst_test
215
/// @endcode
216
///
217
/// ### Schema
218
///
219
/// @code \
220
/// s_baltst.xsd
221
/// @endcode
222
///
223
/// ### Generation Script
224
///
225
/// @code
226
/// s_baltst_codegen.sh
227
/// @endcode
228
/// To run this script, copy 'baltxt.xsd' and 's_baltst_codegen.sh' to an empty
229
/// directory, and run the script there with no arguments.
230
/// @code
231
/// $ mkdir tmpDir
232
/// $ cp s_baltst.xsd s_baltst_codegen.sh tmpDir
233
/// $ cd tmpDir
234
/// $ ./s_baltst_codegen.sh
235
/// @endcode
236
/// The script will refuse to run in the source directory where it lives, since
237
/// that would write over the source there, most of which will probably not need
238
/// to be changed.
239
///
240
/// The script will generate all the components listed in {Auto-Generated: Single
241
/// 'class' or 'struct' per Component} above (but not @ref s_baltst_test ), which will
242
/// not need any modification. If the changes you made to schema file
243
/// 's_baltst.xsd' affect only classes in these components, you can just copy
244
/// those components into your source directory, rebuild, and you are done.
245
///
246
/// ### Rats Nest
247
///
248
/// The file @ref s_baltst_ratsnest will NOT be auto-generated, instead the script
249
/// will generate 9 rat's nest components, with one class apiece.
250
/// @code
251
/// s_baltst_ratsnestchoice1
252
/// s_baltst_ratsnestchoice2
253
/// s_baltst_ratsnestchoice3
254
/// s_baltst_ratsnestsequence1
255
/// s_baltst_ratsnestsequence2
256
/// s_baltst_ratsnestsequence3
257
/// s_baltst_ratsnestsequence4
258
/// s_baltst_ratsnestsequence5
259
/// s_baltst_ratsnestsequence6
260
/// @endcode
261
/// The classes in these components have a complex and sometimes circular set of
262
/// dependencies, hence the name 'Rat's Nest' and the need for them to be in a
263
/// single component, which shall be named @ref s_baltst_ratsnest .
264
///
265
/// To get the includes needed for 's_baltst_ratsnest.h', do:
266
/// @code
267
/// $ grep '#include' s_baltst_ratsnest*.h | sed -e 's/^.*[:]//' | sort -u
268
/// @endcode
269
/// and for 's_baltst_ratsnest.cpp', do:
270
/// @code
271
/// $ grep '#include' s_baltst_ratsnest*.cpp | sed -e 's/^.*[:]//' | sort -u
272
/// @endcode
273
/// However, BAS does not seem to be designed with circular dependencies in mind,
274
/// and when putting classes into separate component, seems to have each component
275
/// include include files from all the previously generated components, without
276
/// regard to which dependencies actually exist.
277
///
278
/// This winds up being problematic, because a lot of other 's_baltst_*'
279
/// components include 'baltst_ratsnest.h', which combined with the complex and
280
/// circular dependences, results in compilation failures. But it turns out that
281
/// the ONLY other 's_baltst' include files needed to be included by
282
/// 's_baltst_ratsnest.h' are 's_baltst_customint.h', 's_baltst_customstring.h',
283
/// and 's_baltst_enumerated.h'. Other than include files from other packages and
284
/// the system, 's_baltst_ratsnest.cpp' does not need any include file other than
285
/// 's_baltst_ratsnest.h'.
286
///
287
/// Forward declare all 9 classes at the beginning before defining them, but
288
/// that's not enough, the order in which they are defined is important. Because
289
/// of the dependencies, if they are defined in alphabetical order, very, very
290
/// bizarre (apparently 'impossible') and hard to understand compiler errors are
291
/// generated. An order of the class definitions that has been found to work is:
292
/// @code
293
///7. Choice1
294
/// Choice2
295
/// Sequence2
296
/// Sequence3
297
/// Sequence4
298
/// Sequence5
299
/// Sequence6
300
/// Choice3
301
/// Sequence1
302
/// @endcode
303
/// Define all the classes first and all definitions of inline and template
304
/// functions should follow the last one.
305
///
306
/// The 's_baltst_ratsnest*.cpp' files can be merged into 's_baltst_ratsnest.cpp'
307
/// through a similar means, though the ordering of things in that file is
308
/// unimportant and can be in alphabetical order by class name.
309
///
310
/// If you just changed the schema for a subset of the rat's nest classes, you can
311
/// hand-migrate your new work into 's_baltst_ratsnets.{h,cpp}'.
312
///
313
/// @}
314
/** @} */
doxygen_input
bde
standalones
s_baltst
doc
s_baltst.h
Generated by
1.9.8