Set up BaseInfo information for DataVector/DataList elements. More...
Classes | |
| struct | DVLEltBase_init< B > |
| struct | DVLEltBase_init< DataModel_detail::NoBase > |
| struct | DVLEltBase_init< VirtBases< B1, B2, B3 > > |
| struct | DVLEltBase_init< DVLTYPE< B > > |
| struct | RegisterDVLEltBaseInit< T > |
| struct | DVLEltBaseInit< T > |
Defines | |
| #define | DVLPASTE1(y, x) y##x |
| #define | DVLPASTE2(y, x) DVLPASTE1(y,x) |
| #define | DVLPASTE(x) DVLPASTE2(DVLTYPE,x) |
Set up BaseInfo information for DataVector/DataList elements.
DATAVECTOR_BASE(D,B) macro, we want to record the D, B inheritance relation in SG::BaseInfo. We can't just invoke SG_BASE for this from DATAVECTOR_BASE because there may be duplicates, and SG_BASE won't compile in that case. But BaseInfo has a deferred initialization mechanism, so we use that: we arrange for an appropriate initializer be added to the list. We also need to walk the DV/DL type information structures rather then the BaseInfo ones.This is common code to be used for both DataVector and DataList. It should be included inside of the appropriate detail namespace. In addition, the macro DVLTYPE should be defined as either DataVector or DataList. Then, the *_BASE macros should explicitly instantiate the template *_detailDVLEltBaseInit<T>.
1.6.1