BDE 4.14.0 Production release
|
Modules | |
s_baltst_address | |
Provide value-semantic attribute classes. | |
s_baltst_basicrecord | |
Provide value-semantic attribute classes. | |
s_baltst_basicschema | |
Provide value-semantic attribute classes. | |
s_baltst_basicschemautil | |
Provide utilities for s_baltst::BasicSchema objects. | |
s_baltst_bigrecord | |
Provide value-semantic attribute classes. | |
s_baltst_configschema | |
Provide the service configuration schema. | |
s_baltst_customint | |
Provide value-semantic attribute classes. | |
s_baltst_customizedbase64binary | |
Provide value-semantic attribute classes. | |
s_baltst_customizedhexbinary | |
Provide value-semantic attribute classes. | |
s_baltst_customizedstring | |
Provide value-semantic attribute classes. | |
s_baltst_customstring | |
Provide value-semantic attribute classes. | |
s_baltst_employee | |
Provide value-semantic attribute classes. | |
s_baltst_enumerated | |
Provide value-semantic attribute classes. | |
s_baltst_generatetestarray | |
Provide a component for generating test array types. | |
s_baltst_generatetestchoice | |
Provide a component for generating test choice types. | |
s_baltst_generatetestcustomizedtype | |
Provide a component for generating test customized types. | |
s_baltst_generatetestdynamictype | |
Provide a component for generating test dynamic types. | |
s_baltst_generatetestenumeration | |
Provide a component for generating test enumeration types. | |
s_baltst_generatetestnullablevalue | |
Provide a component for generating test nullable value types. | |
s_baltst_generatetestsequence | |
Provide a component for generating test sequence types. | |
s_baltst_generatetesttaggedvalue | |
Provide a component for generating test tagged value types. | |
s_baltst_mychoice | |
Provide value-semantic attribute classes. | |
s_baltst_myenumeration | |
Provide value-semantic attribute classes. | |
s_baltst_myenumerationunpreservedwithfallback | |
Provide value-semantic attribute classes. | |
s_baltst_myenumerationwithfallback | |
Provide value-semantic attribute classes. | |
s_baltst_myintenumeration | |
Provide value-semantic attribute classes. | |
s_baltst_mysequence | |
Provide value-semantic attribute classes. | |
s_baltst_mysequencewithanonymouschoice | |
Provide value-semantic attribute classes. | |
s_baltst_mysequencewitharray | |
Provide value-semantic attribute classes. | |
s_baltst_mysequencewithattributes | |
Provide value-semantic attribute classes. | |
s_baltst_mysequencewithchoice | |
Provide value-semantic attribute classes. | |
s_baltst_mysequencewithchoicearray | |
Provide value-semantic attribute classes. | |
s_baltst_mysequencewithchoices | |
Provide value-semantic attribute classes. | |
s_baltst_mysequencewithcustomizedbase64binary | |
Provide value-semantic attribute classes. | |
s_baltst_mysequencewithcustomizedhexbinary | |
Provide value-semantic attribute classes. | |
s_baltst_mysequencewithdecimalattribute | |
Provide value-semantic attribute classes. | |
s_baltst_mysequencewithdoubleattribute | |
Provide value-semantic attribute classes. | |
s_baltst_mysequencewithnillable | |
Provide value-semantic attribute classes. | |
s_baltst_mysequencewithnillables | |
Provide value-semantic attribute classes. | |
s_baltst_mysequencewithnullable | |
Provide value-semantic attribute classes. | |
s_baltst_mysequencewithnullableanonymouschoice | |
Provide value-semantic attribute classes. | |
s_baltst_mysequencewithnullables | |
Provide value-semantic attribute classes. | |
s_baltst_mysequencewithprecisiondecimalattribute | |
Provide value-semantic attribute classes. | |
s_baltst_mysimplecontent | |
Provide value-semantic attribute classes. | |
s_baltst_mysimpleintcontent | |
Provide value-semantic attribute classes. | |
s_baltst_ratsnest | |
Provide value-semantic attribute classes. | |
s_baltst_rawdata | |
Provide value-semantic attribute classes. | |
s_baltst_rawdataswitched | |
Provide value-semantic attribute classes. | |
s_baltst_rawdataunformatted | |
Provide value-semantic attribute classes. | |
s_baltst_request | |
Provide value-semantic attribute classes. | |
s_baltst_response | |
Provide value-semantic attribute classes. | |
s_baltst_sequencewithanonymity | |
Provide value-semantic attribute classes. | |
s_baltst_simplerequest | |
Provide value-semantic attribute classes. | |
s_baltst_sqrt | |
Provide value-semantic attribute classes. | |
s_baltst_sqrtf | |
Provide value-semantic attribute classes. | |
s_baltst_test | |
Provide a superficial test of all classes in baltst package. | |
s_baltst_testarrayutil | |
Provide a utilty for generating test arrays. | |
s_baltst_testattribute | |
Provide attribute metadata types for test sequences. | |
s_baltst_testchoice | |
Provide a test implementation of a bdlat "choice" type. | |
s_baltst_testchoiceutil | |
Provide non-primitive operations on s_baltst::TestChoice . | |
s_baltst_testcustomizedtype | |
Provide a test implementation of a bdlat "customized type". | |
s_baltst_testcustomizedtypeutil | |
Provide non-primitive operations on s_baltst::TestCustomizedType . | |
s_baltst_testdynamictype | |
Provide a test implementation of a bdlat "dynamic type". | |
s_baltst_testdynamictypeutil | |
Provide non-primitive operations on s_baltst::TestDynamicType . | |
s_baltst_testenumeration | |
Provide a test implementation of a bdlat "enumeration" type. | |
s_baltst_testenumerationutil | |
Provide non-primitive operations on s_baltst::TestEnumeration . | |
s_baltst_testenumerator | |
Provide enumerator metadata types for test enumerations. | |
s_baltst_testnilvalue | |
Provide a singular, valueless, value-semantic type for testing. | |
s_baltst_testnullablevalueutil | |
Provide non-primitive operations on nullable values for testing. | |
s_baltst_testplaceholder | |
Provide a value-level representation of a type for testing. | |
s_baltst_testselection | |
Provide selection metadata types for test choices. | |
s_baltst_testsequence | |
Provide a test implementation of a bdlat "sequence" type. | |
s_baltst_testsequenceutil | |
Provide non-primitive operations on s_baltst::TestSequence . | |
s_baltst_testtaggedvalue | |
Provide a test bdlat -compatible type with interceptable methods. | |
s_baltst_testtaggedvalueutil | |
Provide non-primitive operations on s_baltst::TestTaggedValue . | |
s_baltst_timingrequest | |
Provide value-semantic attribute classes. | |
s_baltst_topchoice | |
Provide value-semantic attribute classes. | |
s_baltst_unsignedsequence | |
Provide value-semantic attribute classes. | |
s_baltst_voidsequence | |
Provide value-semantic attribute classes. | |
Private auto-generated classes for testing of other packages.
The 's_baltst' package provides a number of classes for testing encoders and decoders in other packages.
s_baltst_address : Provide value-semantic attribute classes
s_baltst_basicrecord : Provide value-semantic attribute classes
s_baltst_basicschema : Provide value-semantic attribute classes
s_baltst_basicschemautil : Provide utilities for 's_baltst::BasicSchema' objects.
s_baltst_bigrecord : Provide value-semantic attribute classes
s_baltst_customint : Provide value-semantic attribute classes
s_baltst_customizedstring : Provide value-semantic attribute classes
s_baltst_customstring : Provide value-semantic attribute classes
s_baltst_employee : Provide value-semantic attribute classes
s_baltst_enumerated : Provide value-semantic attribute classes
s_baltst_featuretestmessage : Provide value-semantic attribute classes
s_baltst_featuretestmessageutil : Provide utilities for testing codecs with feature-test messages.
s_baltst_mychoice : Provide value-semantic attribute classes
s_baltst_myenumeration : Provide value-semantic attribute classes
s_baltst_mysequence : Provide value-semantic attribute classes
s_baltst_mysequencewithanonymouschoice : Provide value-semantic attribute classes
s_baltst_mysequencewitharray : Provide value-semantic attribute classes
s_baltst_mysequencewithattributes : Provide value-semantic attribute classes
s_baltst_mysequencewithchoice : Provide value-semantic attribute classes
s_baltst_mysequencewithdecimalattribute : Provide value-semantic attribute classes
s_baltst_mysequencewithdoubleattribute : Provide value-semantic attribute classes
s_baltst_mysequencewithnillable : Provide value-semantic attribute classes
s_baltst_mysequencewithnillables : Provide value-semantic attribute classes
s_baltst_mysequencewithnullable : Provide value-semantic attribute classes
s_baltst_mysequencewithnullables : Provide value-semantic attribute classes
s_baltst_mysequencewithprecisiondecimalattribute : Provide value-semantic attribute classes
s_baltst_mysimplecontent : Provide value-semantic attribute classes
s_baltst_mysimpleintcontent : Provide value-semantic attribute classes
s_baltst_ratsnest : Provide value-semantic attribute classes
s_baltst_rawdata : Provide value-semantic attribute classes
s_baltst_rawdataswitched : Provide value-semantic attribute classes
s_baltst_rawdataunformatted : Provide value-semantic attribute classes
s_baltst_request : Provide value-semantic attribute classes
s_baltst_response : Provide value-semantic attribute classes
s_baltst_sequencewithanonymity : Provide value-semantic attribute classes
s_baltst_simplerequest : Provide value-semantic attribute classes
s_baltst_sqrt : Provide value-semantic attribute classes
s_baltst_sqrtf : Provide value-semantic attribute classes
s_baltst_test : Provide a superficial test of all classes in 'baltst' package.
s_baltst_timingrequest : Provide value-semantic attribute classes
s_baltst_topchoice : Provide value-semantic attribute classes
s_baltst_unsignedsequence : Provide value-semantic attribute classes
s_baltst_voidsequence : Provide value-semantic attribute classes
The nine components:
define the nine classes:
These nine auto-generated components must be merged into a single component, s_baltst_ratsnest , after being generated. See instructions under {Rat's Nest}).
There is only one test driver in the package. All it has is a breathing test which default constructs every value type in the package, and ensures that 'operator==' and 'operator!=' exist and work and that 'operator<<' exists.
To run this script, copy 'baltxt.xsd' and 's_baltst_codegen.sh' to an empty directory, and run the script there with no arguments.
The script will refuse to run in the source directory where it lives, since that would write over the source there, most of which will probably not need to be changed.
The script will generate all the components listed in {Auto-Generated: Single 'class' or 'struct' per Component} above (but not s_baltst_test ), which will not need any modification. If the changes you made to schema file 's_baltst.xsd' affect only classes in these components, you can just copy those components into your source directory, rebuild, and you are done.
The file s_baltst_ratsnest will NOT be auto-generated, instead the script will generate 9 rat's nest components, with one class apiece.
The classes in these components have a complex and sometimes circular set of dependencies, hence the name 'Rat's Nest' and the need for them to be in a single component, which shall be named s_baltst_ratsnest .
To get the includes needed for 's_baltst_ratsnest.h', do:
and for 's_baltst_ratsnest.cpp', do:
However, BAS does not seem to be designed with circular dependencies in mind, and when putting classes into separate component, seems to have each component include include files from all the previously generated components, without regard to which dependencies actually exist.
This winds up being problematic, because a lot of other 's_baltst_*' components include 'baltst_ratsnest.h', which combined with the complex and circular dependences, results in compilation failures. But it turns out that the ONLY other 's_baltst' include files needed to be included by 's_baltst_ratsnest.h' are 's_baltst_customint.h', 's_baltst_customstring.h', and 's_baltst_enumerated.h'. Other than include files from other packages and the system, 's_baltst_ratsnest.cpp' does not need any include file other than 's_baltst_ratsnest.h'.
Forward declare all 9 classes at the beginning before defining them, but that's not enough, the order in which they are defined is important. Because of the dependencies, if they are defined in alphabetical order, very, very bizarre (apparently 'impossible') and hard to understand compiler errors are generated. An order of the class definitions that has been found to work is:
Define all the classes first and all definitions of inline and template functions should follow the last one.
The 's_baltst_ratsnest*.cpp' files can be merged into 's_baltst_ratsnest.cpp' through a similar means, though the ordering of things in that file is unimportant and can be in alphabetical order by class name.
If you just changed the schema for a subset of the rat's nest classes, you can hand-migrate your new work into 's_baltst_ratsnets.{h,cpp}'.