CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Attributes | Friends
edm::reftobase::IndirectHolder< T > Class Template Reference

#include <EDProductfwd.h>

Inheritance diagram for edm::reftobase::IndirectHolder< T >:
edm::reftobase::BaseHolder< T >

Public Member Functions

BaseHolder< T > * clone () const override
 
bool fillRefIfMyTypeMatches (RefHolderBase &fillme, std::string &msg) const override
 
T const * getPtr () const override
 
std::unique_ptr< RefHolderBaseholder () const override
 
ProductID id () const override
 
 IndirectHolder ()
 
 IndirectHolder (IndirectHolder const &other)
 
 IndirectHolder (std::shared_ptr< RefHolderBase > p)
 
template<typename U >
 IndirectHolder (std::unique_ptr< U > p)
 
bool isAvailable () const override
 
bool isEqualTo (BaseHolder< T > const &rhs) const override
 
bool isTransient () const override
 
size_t key () const override
 
std::unique_ptr< BaseVectorHolder< T > > makeVectorHolder () const override
 
IndirectHolderoperator= (IndirectHolder const &rhs)
 
EDProductGetter const * productGetter () const override
 
void swap (IndirectHolder &other)
 
 ~IndirectHolder () override
 
- Public Member Functions inherited from edm::reftobase::BaseHolder< T >
 BaseHolder ()
 
void swap (BaseHolder &)
 
virtual ~BaseHolder ()
 

Static Public Member Functions

static short Class_Version ()
 
- Static Public Member Functions inherited from edm::reftobase::BaseHolder< T >
static short Class_Version ()
 

Private Attributes

RefHolderBasehelper_
 

Friends

class IndirectVectorHolder< T >
 
class RefToBase< T >
 

Additional Inherited Members

- Protected Member Functions inherited from edm::reftobase::BaseHolder< T >
 BaseHolder (BaseHolder const &other)
 
BaseHolderoperator= (BaseHolder const &rhs)
 

Detailed Description

template<typename T>
class edm::reftobase::IndirectHolder< T >

Definition at line 48 of file EDProductfwd.h.

Constructor & Destructor Documentation

◆ IndirectHolder() [1/4]

template<typename T>
edm::reftobase::IndirectHolder< T >::IndirectHolder ( )
inline

Definition at line 31 of file IndirectHolder.h.

31 : BaseHolder<T>(), helper_(nullptr) {}

◆ IndirectHolder() [2/4]

template<typename T >
edm::reftobase::IndirectHolder< T >::IndirectHolder ( std::shared_ptr< RefHolderBase p)
inline

Definition at line 69 of file IndirectHolder.h.

69 : BaseHolder<T>(), helper_(p->clone()) {}

◆ IndirectHolder() [3/4]

template<typename T>
template<typename U >
edm::reftobase::IndirectHolder< T >::IndirectHolder ( std::unique_ptr< U >  p)
inline

Definition at line 34 of file IndirectHolder.h.

34 : helper_(p.release()) {}

◆ IndirectHolder() [4/4]

template<typename T >
edm::reftobase::IndirectHolder< T >::IndirectHolder ( IndirectHolder< T > const &  other)
inline

Definition at line 72 of file IndirectHolder.h.

73  : BaseHolder<T>(other), helper_(other.helper_->clone()) {}

◆ ~IndirectHolder()

template<typename T >
edm::reftobase::IndirectHolder< T >::~IndirectHolder ( )
override

Definition at line 89 of file IndirectHolder.h.

89  {
90  delete helper_;
91  }

Member Function Documentation

◆ Class_Version()

template<typename T>
static short edm::reftobase::IndirectHolder< T >::Class_Version ( )
inlinestatic

Definition at line 58 of file IndirectHolder.h.

60 :
61  friend class RefToBase<T>;

◆ clone()

template<typename T >
BaseHolder< T > * edm::reftobase::IndirectHolder< T >::clone ( void  ) const
overridevirtual

Implements edm::reftobase::BaseHolder< T >.

Definition at line 94 of file IndirectHolder.h.

94  {
95  return new IndirectHolder<T>(*this);
96  }

◆ fillRefIfMyTypeMatches()

template<typename T >
bool edm::reftobase::IndirectHolder< T >::fillRefIfMyTypeMatches ( RefHolderBase fillme,
std::string &  msg 
) const
overridevirtual

Implements edm::reftobase::BaseHolder< T >.

Definition at line 125 of file IndirectHolder.h.

125  {
126  return helper_->fillRefIfMyTypeMatches(fillme, msg);
127  }

References mps_check::msg.

◆ getPtr()

template<typename T >
T const * edm::reftobase::IndirectHolder< T >::getPtr ( ) const
overridevirtual

Implements edm::reftobase::BaseHolder< T >.

Definition at line 99 of file IndirectHolder.h.

99  {
100  return helper_->template getPtr<T>();
101  }

◆ holder()

template<typename T >
std::unique_ptr< RefHolderBase > edm::reftobase::IndirectHolder< T >::holder ( ) const
overridevirtual

Implements edm::reftobase::BaseHolder< T >.

Definition at line 130 of file IndirectHolder.h.

130  {
131  return std::unique_ptr<RefHolderBase>(helper_->clone());
132  }

◆ id()

template<typename T >
ProductID edm::reftobase::IndirectHolder< T >::id ( ) const
overridevirtual

Implements edm::reftobase::BaseHolder< T >.

Definition at line 104 of file IndirectHolder.h.

104  {
105  return helper_->id();
106  }

References edm::ProductID::id().

◆ isAvailable()

template<typename T>
bool edm::reftobase::IndirectHolder< T >::isAvailable ( ) const
inlineoverridevirtual

Checks if product collection is in memory or available in the Event. No type checking is done.

Implements edm::reftobase::BaseHolder< T >.

Definition at line 53 of file IndirectHolder.h.

53 { return helper_->isAvailable(); }

References edm::reftobase::IndirectHolder< T >::helper_, and edm::reftobase::RefHolderBase::isAvailable().

◆ isEqualTo()

template<typename T >
bool edm::reftobase::IndirectHolder< T >::isEqualTo ( BaseHolder< T > const &  rhs) const
overridevirtual

Implements edm::reftobase::BaseHolder< T >.

Definition at line 119 of file IndirectHolder.h.

119  {
120  IndirectHolder const* h = dynamic_cast<IndirectHolder const*>(&rhs);
121  return h && helper_->isEqualTo(*h->helper_);
122  }

◆ isTransient()

template<typename T>
bool edm::reftobase::IndirectHolder< T >::isTransient ( ) const
inlineoverridevirtual

◆ key()

template<typename T >
size_t edm::reftobase::IndirectHolder< T >::key ( ) const
overridevirtual

Implements edm::reftobase::BaseHolder< T >.

Definition at line 109 of file IndirectHolder.h.

109  {
110  return helper_->key();
111  }

◆ makeVectorHolder()

template<typename T >
std::unique_ptr< BaseVectorHolder< T > > edm::reftobase::IndirectHolder< T >::makeVectorHolder ( ) const
overridevirtual

Implements edm::reftobase::BaseHolder< T >.

Definition at line 149 of file IndirectHolder.h.

149  {
150  std::unique_ptr<RefVectorHolderBase> p = helper_->makeVectorHolder();
151  std::shared_ptr<RefVectorHolderBase> sp(p.release());
152  return std::unique_ptr<BaseVectorHolder<T> >(new IndirectVectorHolder<T>(sp));
153  }

References AlCaHLTBitMon_ParallelJobs::p.

◆ operator=()

template<typename T >
IndirectHolder< T > & edm::reftobase::IndirectHolder< T >::operator= ( IndirectHolder< T > const &  rhs)
inline

Definition at line 82 of file IndirectHolder.h.

82  {
83  IndirectHolder temp(rhs);
84  swap(temp);
85  return *this;
86  }

References edm::reftobase::swap(), and groupFilesInBlocks::temp.

◆ productGetter()

template<typename T >
EDProductGetter const * edm::reftobase::IndirectHolder< T >::productGetter ( ) const
inlineoverridevirtual

Implements edm::reftobase::BaseHolder< T >.

Definition at line 114 of file IndirectHolder.h.

114  {
115  return helper_->productGetter();
116  }

◆ swap()

template<typename T >
void edm::reftobase::IndirectHolder< T >::swap ( IndirectHolder< T > &  other)
inline

Definition at line 76 of file IndirectHolder.h.

76  {
78  std::swap(helper_, other.helper_);
79  }

References trackingPlots::other, edm::reftobase::BaseHolder< T >::swap(), and std::swap().

Referenced by edm::reftobase::swap().

Friends And Related Function Documentation

◆ IndirectVectorHolder< T >

template<typename T>
friend class IndirectVectorHolder< T >
friend

Definition at line 62 of file IndirectHolder.h.

◆ RefToBase< T >

template<typename T>
friend class RefToBase< T >
friend

Definition at line 61 of file IndirectHolder.h.

Member Data Documentation

◆ helper_

template<typename T>
RefHolderBase* edm::reftobase::IndirectHolder< T >::helper_
private
edm::reftobase::IndirectHolder::swap
void swap(IndirectHolder &other)
Definition: IndirectHolder.h:76
edm::reftobase::IndirectHolder::IndirectVectorHolder< T >
friend class IndirectVectorHolder< T >
Definition: IndirectHolder.h:62
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
mps_check.msg
tuple msg
Definition: mps_check.py:285
edm::reftobase::RefHolderBase::productGetter
virtual EDProductGetter const * productGetter() const =0
groupFilesInBlocks.temp
list temp
Definition: groupFilesInBlocks.py:142
edm::reftobase::RefHolderBase::isAvailable
virtual bool isAvailable() const =0
std::swap
void swap(edm::DataFrameContainer &lhs, edm::DataFrameContainer &rhs)
Definition: DataFrameContainer.h:209
edm::reftobase::RefHolderBase::makeVectorHolder
virtual std::unique_ptr< RefVectorHolderBase > makeVectorHolder() const =0
edm::reftobase::RefHolderBase::fillRefIfMyTypeMatches
virtual bool fillRefIfMyTypeMatches(RefHolderBase &ref, std::string &msg) const =0
trackingPlots.other
other
Definition: trackingPlots.py:1460
h
edm::reftobase::BaseHolder::swap
void swap(BaseHolder &)
Definition: BaseHolder.h:105
edm::reftobase::RefHolderBase::key
virtual size_t key() const =0
edm::reftobase::RefHolderBase::clone
virtual RefHolderBase * clone() const =0
edm::reftobase::RefHolderBase::id
virtual ProductID id() const =0
edm::reftobase::IndirectHolder::helper_
RefHolderBase * helper_
Definition: IndirectHolder.h:63
RefToBase
edm::reftobase::IndirectHolder::IndirectHolder
IndirectHolder()
Definition: IndirectHolder.h:31
edm::reftobase::RefHolderBase::isEqualTo
virtual bool isEqualTo(RefHolderBase const &rhs) const =0
T
long double T
Definition: Basic3DVectorLD.h:48
edm::reftobase::RefHolderBase::isTransient
virtual bool isTransient() const =0