DataList_detail::VirtBases< B1, B2, DataModel_detail::NoBase > Struct Template Reference

VirtBases for two classes. More...

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

List of all members.

Public Types

typedef ::boost::is_same
< typename DataList< B1 >
::PtrList, typename DataList
< B2 >::PtrList
check
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

Public Member Functions

 BOOST_STATIC_ASSERT (check::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>
struct DataList_detail::VirtBases< B1, B2, DataModel_detail::NoBase >

VirtBases for two classes.

DataList<T> derives from this for the case of T deriving from two classes. It in turn derives from B1 and B2.


Member Typedef Documentation

template<class B1 , class B2 >
typedef DataList<B1>::PtrList DataList_detail::VirtBases< B1, B2, DataModel_detail::NoBase >::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 >
void DataList_detail::VirtBases< B1, B2, DataModel_detail::NoBase >::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 >
virtual const std::type_info& DataList_detail::VirtBases< B1, B2, DataModel_detail::NoBase >::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 >
virtual const DataModel_detail::DVLInfoBase& DataList_detail::VirtBases< B1, B2, DataModel_detail::NoBase >::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 >
virtual void DataList_detail::VirtBases< B1, B2, DataModel_detail::NoBase >::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 >
const bool DataList_detail::VirtBases< B1, B2, DataModel_detail::NoBase >::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 struct was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 15 Apr 2017 for RootCore Packages by  doxygen 1.6.1