DataList_detail::VirtBases< B1, B2, B3 > Class Template Reference

VirtBases for three classes. More...

Inheritance diagram for DataList_detail::VirtBases< B1, B2, B3 >:
KeepFirstTemplateArguments DataList< B1 > DataList< B2 > DataList< B3 > Base SelectNoInstance KeepFirstTemplateArguments Base SelectNoInstance KeepFirstTemplateArguments Base SelectNoInstance KeepFirstTemplateArguments

List of all members.

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.

Detailed Description

template<class B1, class B2, class B3>
class DataList_detail::VirtBases< B1, B2, B3 >

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.


Member Typedef Documentation

template<class B1 , class B2 , class 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 >.


Member Function Documentation

template<class B1 , class B2 , class B3 >
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 >.

template<class B1 , class B2 , class B3 >
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.

Returns:
The 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 >.

template<class B1 , class B2 , class B3 >
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 >.

template<class B1 , class B2 , class B3 >
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 >.


Member Data Documentation

template<class B1 , class B2 , class B3 >
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 >.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 1 Dec 2017 for RootCore Packages by  doxygen 1.6.1