CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Friends
edm::PtrVector< T > Class Template Reference

#include <PtrVector.h>

Inheritance diagram for edm::PtrVector< T >:
edm::PtrVectorBase

Public Types

using collection_type = void
 
using const_iterator = PtrVectorItr< T >
 
using iterator = PtrVectorItr< T >
 
using member_type = T
 
using value_type = Ptr< T >
 
- Public Types inherited from edm::PtrVectorBase
typedef unsigned long key_type
 
typedef key_type size_type
 

Public Member Functions

const_iterator begin () const
 
const_iterator end () const
 
void fillView (std::vector< void const *> &pointers, FillViewHelperVector &helpers) const
 
PtrVectoroperator= (PtrVector const &rhs)
 
Ptr< Toperator[] (unsigned long const iIndex) const
 
 PtrVector ()
 
 PtrVector (ProductID const &iId)
 
 PtrVector (PtrVector< T > const &iOther)
 
template<typename U >
 PtrVector (PtrVector< U > const &iOther)
 
void push_back (Ptr< T > const &iPtr)
 
template<typename U >
void push_back (Ptr< U > const &iPtr)
 
void swap (PtrVector &other)
 
- Public Member Functions inherited from edm::PtrVectorBase
size_type capacity () const
 Capacity of the RefVector. More...
 
void clear ()
 Clear the PtrVector. More...
 
bool empty () const
 Is the RefVector empty. More...
 
bool hasCache () const
 
ProductID id () const
 Accessor for product ID. More...
 
bool isAvailable () const
 
bool isNonnull () const
 Checks for non-null. More...
 
bool isNull () const
 Checks for null. More...
 
bool isTransient () const
 
bool operator! () const
 Checks for null. More...
 
PtrVectorBaseoperator= (const PtrVectorBase &)=delete
 
bool operator== (PtrVectorBase const &iRHS) const
 
void const * product () const
 
EDProductGetter const * productGetter () const
 Accessor for product getter. More...
 
 PtrVectorBase (ProductID const &productID, void const *prodPtr=nullptr, EDProductGetter const *prodGetter=nullptr)
 
 PtrVectorBase (const PtrVectorBase &)
 
void reserve (size_type n)
 Reserve space for RefVector. More...
 
void setProductGetter (EDProductGetter *iGetter) const
 
size_type size () const
 Size of the RefVector. More...
 
virtual ~PtrVectorBase ()
 

Static Public Member Functions

static short Class_Version ()
 

Private Member Functions

Ptr< TfromItr (std::vector< void const *>::const_iterator const &iItr) const
 
std::type_info const & typeInfo () const override
 

Friends

class PtrVectorItr< T >
 

Additional Inherited Members

- Protected Member Functions inherited from edm::PtrVectorBase
template<typename TPtr >
TPtr makePtr (unsigned long iIndex) const
 
template<typename TPtr >
TPtr makePtr (std::vector< void const *>::const_iterator const iIt) const
 
 PtrVectorBase ()
 
void push_back_base (RefCore const &core, key_type iKey, void const *iData)
 
void swap (PtrVectorBase &other)
 swap More...
 
std::vector< void const * >::const_iterator void_begin () const
 
std::vector< void const * >::const_iterator void_end () const
 

Detailed Description

template<typename T>
class edm::PtrVector< T >

Definition at line 36 of file PtrVector.h.

Member Typedef Documentation

◆ collection_type

template<typename T>
using edm::PtrVector< T >::collection_type = void

Definition at line 131 of file PtrVector.h.

◆ const_iterator

template<typename T>
using edm::PtrVector< T >::const_iterator = PtrVectorItr<T>

Definition at line 127 of file PtrVector.h.

◆ iterator

template<typename T>
using edm::PtrVector< T >::iterator = PtrVectorItr<T>

Definition at line 128 of file PtrVector.h.

◆ member_type

template<typename T>
using edm::PtrVector< T >::member_type = T

Definition at line 130 of file PtrVector.h.

◆ value_type

template<typename T>
using edm::PtrVector< T >::value_type = Ptr<T>

Definition at line 129 of file PtrVector.h.

Constructor & Destructor Documentation

◆ PtrVector() [1/4]

template<typename T>
edm::PtrVector< T >::PtrVector ( )
inline

Definition at line 134 of file PtrVector.h.

◆ PtrVector() [2/4]

template<typename T>
edm::PtrVector< T >::PtrVector ( ProductID const &  iId)
inlineexplicit

Definition at line 135 of file PtrVector.h.

135 : PtrVectorBase(iId) {}

◆ PtrVector() [3/4]

template<typename T>
edm::PtrVector< T >::PtrVector ( PtrVector< T > const &  iOther)
inline

Definition at line 136 of file PtrVector.h.

136 : PtrVectorBase(iOther) {}

◆ PtrVector() [4/4]

template<typename T>
template<typename U >
edm::PtrVector< T >::PtrVector ( PtrVector< U > const &  iOther)
inline

Definition at line 139 of file PtrVector.h.

139  : PtrVectorBase(iOther) {
140  static_assert(std::is_base_of<T, U>::value, "PtrVector being copied is not of compatible type");
141  }

Member Function Documentation

◆ begin()

template<typename T>
const_iterator edm::PtrVector< T >::begin ( void  ) const
inline

◆ Class_Version()

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

Definition at line 177 of file PtrVector.h.

179 :
180  //PtrVector const& operator=(PtrVector const&); // stop default

◆ end()

template<typename T>
const_iterator edm::PtrVector< T >::end ( void  ) const
inline

◆ fillView()

template<typename T >
void PtrVector::fillView ( std::vector< void const *> &  pointers,
FillViewHelperVector helpers 
) const

Definition at line 188 of file PtrVector.h.

188  {
189  pointers.reserve(this->size());
190  for (const_iterator i = begin(), e = end(); i != e; ++i) {
191  Ptr<T> ref = *i;
192  T const* address = ref.isNull() ? nullptr : &*ref;
193  pointers.push_back(address);
194  helpers.push_back(FillViewHelperVector::value_type(ref.id(), ref.key()));
195  }
196  }
size_type size() const
Size of the RefVector.
Definition: PtrVectorBase.h:75
PtrVectorItr< T > const_iterator
Definition: PtrVector.h:127
const_iterator end() const
Definition: PtrVector.h:149
const_iterator begin() const
Definition: PtrVector.h:147
long double T

◆ fromItr()

template<typename T>
Ptr<T> edm::PtrVector< T >::fromItr ( std::vector< void const *>::const_iterator const &  iItr) const
inlineprivate

Definition at line 184 of file PtrVector.h.

184 { return this->makePtr<Ptr<T> >(iItr); }

◆ operator=()

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

Definition at line 168 of file PtrVector.h.

168  {
169  PtrVector temp(rhs);
170  this->swap(temp);
171  return *this;
172  }
void swap(PtrVector &other)
Definition: PtrVector.h:166

◆ operator[]()

template<typename T>
Ptr<T> edm::PtrVector< T >::operator[] ( unsigned long const  iIndex) const
inline

Definition at line 145 of file PtrVector.h.

145 { return this->makePtr<Ptr<T> >(iIndex); }

◆ push_back() [1/2]

template<typename T>
void edm::PtrVector< T >::push_back ( Ptr< T > const &  iPtr)
inline

Definition at line 152 of file PtrVector.h.

Referenced by reco::SuperCluster::addCluster(), reco::SuperCluster::addPreshowerCluster(), HiEgammaSCEnergyCorrectionAlgo::applyCorrection(), ConvertedPhotonProducer::buildCollections(), EcalClusterPUCleaningTools::CleanedSuperCluster(), PFEGammaProducer::createSingleLegConversions(), pat::helper::BasicOverlapTest::fillOverlapsForItem(), pat::helper::OverlapBySuperClusterSeed::fillOverlapsForItem(), Multi5x5SuperClusterProducer::getClusterPtrVector(), HiSuperClusterProducer::getClusterPtrVector(), BremRecoveryClusterAlgo::makeIslandSuperClusters(), HiBremRecoveryClusterAlgo::makeIslandSuperClusters(), Multi5x5BremRecoveryClusterAlgo::makeIslandSuperClusters(), BremRecoveryClusterAlgo::makeSuperClusters(), HiBremRecoveryClusterAlgo::makeSuperClusters(), Multi5x5BremRecoveryClusterAlgo::makeSuperClusters(), HybridClusterAlgo::makeSuperClusters(), ConversionProducer::matchingSC(), helper::SelectionPtrViewAdder< T >::operator()(), pat::PATTauSlimmer::produce(), MultiClustersFromTrackstersProducer::produce(), HGCalMultiClusterProducer::produce(), TriggerMatchProducer< object >::produce(), UncleanSCRecoveryProducer::produce(), CleanAndMergeProducer::produce(), HybridClusterProducer::produce(), PFEGammaProducer::produce(), UnifiedSCCollectionProducer::produce(), PreshowerPhiClusterProducer::produce(), PFECALSuperClusterProducer::produce(), PreshowerClusterProducer::produce(), and ReducedEGProducer::relinkCaloClusters().

152  {
153  this->push_back_base(
154  iPtr.refCore(), iPtr.key(), iPtr.hasProductCache() ? iPtr.operator->() : static_cast<void const*>(nullptr));
155  }
void push_back_base(RefCore const &core, key_type iKey, void const *iData)

◆ push_back() [2/2]

template<typename T>
template<typename U >
void edm::PtrVector< T >::push_back ( Ptr< U > const &  iPtr)
inline

Definition at line 158 of file PtrVector.h.

158  {
159  //check that types are assignable
160  static_assert(std::is_base_of<T, U>::value,
161  "Ptr used in push_back can not be converted to type used by PtrVector.");
162  this->push_back_base(
163  iPtr.refCore(), iPtr.key(), iPtr.hasProductCache() ? iPtr.operator->() : static_cast<void const*>(nullptr));
164  }
void push_back_base(RefCore const &core, key_type iKey, void const *iData)

◆ swap()

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

Definition at line 166 of file PtrVector.h.

Referenced by edm::PtrVector< reco::CaloCluster >::operator=(), and edm::swap().

166 { this->PtrVectorBase::swap(other); }
void swap(PtrVectorBase &other)
swap

◆ typeInfo()

template<typename T>
std::type_info const& edm::PtrVector< T >::typeInfo ( ) const
inlineoverrideprivatevirtual

Reimplemented from edm::PtrVectorBase.

Definition at line 181 of file PtrVector.h.

181 { return typeid(T); }
long double T

Friends And Related Function Documentation

◆ PtrVectorItr< T >

template<typename T>
friend class PtrVectorItr< T >
friend

Definition at line 133 of file PtrVector.h.