VirtBases for three classes. More...
Public Types | |
|
typedef ::boost::is_same < typename DataList< B1 > ::PtrList, typename DataList < B2 >::PtrList > | check1 |
|
typedef ::boost::is_same < typename DataList< B1 > ::PtrList, typename DataList < B3 >::PtrList > | check2 |
| typedef DataList< B1 >::PtrList | PtrList |
| typedef DataList< B1 >::size_type | size_type |
|
typedef DataList< B1 > ::difference_type | difference_type |
|
typedef DataList< B1 > ::allocator_type | allocator_type |
|
typedef DataList_detail::VirtBases< B1, B2, B3 > | self |
Public Member Functions | |
| BOOST_STATIC_ASSERT (check1::value) | |
| BOOST_STATIC_ASSERT (check2::value) | |
Static Public Attributes | |
| static const bool | has_virtual = true |
Protected Member Functions | |
| void | clearMostDerived () |
Clear m_isMostDerived for this instance and for all bases. | |
| virtual const std::type_info & | dl_typeid () const |
Find the most-derived DataList class in the hierarchy. | |
| virtual const DataModel_detail::DVLInfoBase & | dvlinfo_v () const |
| Return the DV/DL info struct for this class. | |
| virtual void | setMostDerived () |
Set m_isMostDerived for this instance and clear it for all bases. | |
VirtBases for three classes.
DataList<T> derives from this for the case of T deriving from three classes. It in turn derives from B1, B2, and B3.
| typedef DataList<B1>::PtrList DataList_detail::VirtBases< B1, B2, B3 >::PtrList |
This is the type of the underlying std::list (what stdcont returns).
Reimplemented from DataList< B1 >.
| void DataList_detail::VirtBases< B1, B2, B3 >::clearMostDerived | ( | ) | [inline, protected] |
Clear m_isMostDerived for this instance and for all bases.
Called from the constructor after setting m_isMostDerived.
Reimplemented from DataList< B1 >.
| virtual const std::type_info& DataList_detail::VirtBases< B1, B2, B3 >::dl_typeid | ( | ) | const [inline, protected, virtual] |
Find the most-derived DataList class in the hierarchy.
type_info for the class for which this method gets run.In order to properly type-check insertions, we need to be able to find the most-derived DataList class in the inheritance hierarchy. That's the purpose of this function. Every DataList defines this virtual method, so when it's called, the one corresponding to the most-derived DataList gets run.
Reimplemented from DataList< B1 >.
| virtual const DataModel_detail::DVLInfoBase& DataList_detail::VirtBases< B1, B2, B3 >::dvlinfo_v | ( | ) | const [inline, protected, virtual] |
Return the DV/DL info struct for this class.
This can be used to make sure that it's instantiated.
Reimplemented from DataList< B1 >.
| virtual void DataList_detail::VirtBases< B1, B2, B3 >::setMostDerived | ( | ) | [inline, protected, virtual] |
Set m_isMostDerived for this instance and clear it for all bases.
Called from testInsert if the test fails. The flag may not have been set if this container was made via copy construction, so set it appropriately now so we can test again.
Reimplemented from DataList< B1 >.
const bool DataList_detail::VirtBases< B1, B2, B3 >::has_virtual = true [static] |
This is true for any DataList class if we need to use virtual derivation to get to the base DataList class.
Reimplemented from DataList< B1 >.
1.6.1