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 >.