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

VirtBases for two classes. More...

Inheritance diagram for DataVector_detail::VirtBases< B1, B2, DataModel_detail::NoBase >:
DataVector< B1 > DataVector< B2 > KeepFirstTemplateArguments Base KeepFirstTemplateArguments Base

List of all members.

Public Types

typedef ::boost::is_same
< typename DataVector< B1 >
::PtrVector, typename
DataVector< B2 >::PtrVector
check
typedef DataVector< B1 >::PtrVector PtrVector
typedef DataVector< B1 >::size_type size_type
typedef DataVector< B1 >
::difference_type 
difference_type
typedef DataVector< 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 & dv_typeid () const
 Find the most-derived DataVector 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.

Static Protected Member Functions

static int baseOffset1 (const char *p, const VirtBases &dv, const std::type_info &ti)

Detailed Description

template<class B1, class B2>
struct DataVector_detail::VirtBases< B1, B2, DataModel_detail::NoBase >

VirtBases for two classes.

DataVector<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 DataVector<B1>::PtrVector DataVector_detail::VirtBases< B1, B2, DataModel_detail::NoBase >::PtrVector

This is the type of the underlying std::vector (what stdcont returns).

Reimplemented from DataVector< B1 >.


Member Function Documentation

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

template<class B1 , class B2 >
virtual const std::type_info& DataVector_detail::VirtBases< B1, B2, DataModel_detail::NoBase >::dv_typeid (  )  const [inline, protected, virtual]

Find the most-derived DataVector class in the hierarchy.

Returns:
The type_info for the class for which this method gets run.

This is used to generate a nice error message when the most-derived check for insertions fails. Every DataVector defines this virtual method, so when it's called, the one corresponding to the most-derived DataVector gets run.

Reimplemented from DataVector< B1 >.

template<class B1 , class B2 >
virtual const DataModel_detail::DVLInfoBase& DataVector_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 DataVector< B1 >.

template<class B1 , class B2 >
virtual void DataVector_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 DataVector< B1 >.


Member Data Documentation

template<class B1 , class B2 >
const bool DataVector_detail::VirtBases< B1, B2, DataModel_detail::NoBase >::has_virtual = true [static]

This is true for any DataVector class if we need to use virtual derivation to get to the base DataVector class.

Reimplemented from DataVector< 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