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

VirtBases for one class. More...

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

List of all members.

Public Types

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

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>
struct DataVector_detail::VirtBases< B1, DataModel_detail::NoBase, DataModel_detail::NoBase >

VirtBases for one class.

DataVector<T> derives from this for the case of T deriving virtually from a single class. It in turn derives from B1.


Member Typedef Documentation

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

Reimplemented from DataVector< B1 >.


Member Function Documentation

template<class B1 >
void DataVector_detail::VirtBases< B1, DataModel_detail::NoBase, 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 >
virtual const std::type_info& DataVector_detail::VirtBases< B1, DataModel_detail::NoBase, 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 >
virtual const DataModel_detail::DVLInfoBase& DataVector_detail::VirtBases< B1, DataModel_detail::NoBase, 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 >
virtual void DataVector_detail::VirtBases< B1, DataModel_detail::NoBase, 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 >
const bool DataVector_detail::VirtBases< B1, DataModel_detail::NoBase, 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