CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Types | Public Member Functions | Private Attributes
edm::RefToBaseVector< T > Class Template Reference

#include <EDProductfwd.h>

Public Types

typedef holder_type::const_iterator const_iterator
 
typedef
reftobase::BaseVectorHolder< T
holder_type
 
typedef T member_type
 
typedef holder_type::size_type size_type
 
typedef RefToBase< Tvalue_type
 

Public Member Functions

value_type at (size_type idx) const
 
const_iterator begin () const
 
void clear ()
 
bool empty () const
 
const_iterator end () const
 
void fillView (std::vector< void const * > &pointers) const
 
ProductID id () const
 
bool isAvailable () const
 
bool isInvalid () const
 
bool isValid () const
 
RefToBaseVectoroperator= (RefToBaseVector const &iRHS)
 
value_type operator[] (size_type idx) const
 
const void * product () const
 
EDProductGetter const * productGetter () const
 
void push_back (const RefToBase< T > &)
 
 RefToBaseVector ()
 
 RefToBaseVector (RefToBaseVector const &)
 
template<class REFV >
 RefToBaseVector (REFV const &)
 
template<typename C >
 RefToBaseVector (Handle< C > const &)
 
template<typename T1 >
 RefToBaseVector (Handle< View< T1 > > const &)
 
 RefToBaseVector (std::shared_ptr< reftobase::RefVectorHolderBase > p)
 
template<class T >
 RefToBaseVector (const RefToBaseVector< T > &iOther)
 
size_type size () const
 
void swap (RefToBaseVector &other)
 
std::auto_ptr
< reftobase::RefVectorHolderBase
vectorHolder () const
 
 ~RefToBaseVector ()
 

Private Attributes

holder_typeholder_
 

Detailed Description

template<class T>
class edm::RefToBaseVector< T >

RefToBase<T> provides a mechanism to refer to an object of type T (or which has T as a public base), held in a collection (of type not known to RefToBase<T>) which itself it in an Event.

Definition at line 27 of file EDProductfwd.h.

Member Typedef Documentation

Definition at line 31 of file RefToBaseVector.h.

Definition at line 29 of file RefToBaseVector.h.

template<class T>
typedef T edm::RefToBaseVector< T >::member_type

Definition at line 28 of file RefToBaseVector.h.

template<class T>
typedef holder_type::size_type edm::RefToBaseVector< T >::size_type

Definition at line 30 of file RefToBaseVector.h.

template<class T>
typedef RefToBase<T> edm::RefToBaseVector< T >::value_type

Definition at line 27 of file RefToBaseVector.h.

Constructor & Destructor Documentation

template<class T >
RefToBaseVector::RefToBaseVector ( )
inline

Definition at line 112 of file RefToBaseVector.h.

112  :
113  holder_(0)
114  { }
holder_type * holder_
template<class T>
edm::RefToBaseVector< T >::RefToBaseVector ( RefToBaseVector< T > const &  )
template<class T >
template<class REFV >
RefToBaseVector::RefToBaseVector ( REFV const &  iRef)
inlineexplicit

Definition at line 119 of file RefToBaseVector.h.

119  :
120  holder_(new reftobase::VectorHolder<T,REFV>(iRef))
121  { }
holder_type * holder_
template<typename T >
template<typename C >
RefToBaseVector::RefToBaseVector ( Handle< C > const &  h)
explicit

Definition at line 289 of file RefToBaseVector.h.

289  :
290  holder_(new reftobase::VectorHolder<T, RefVector<C, typename refhelper::ValueTrait<C>::value,
291  typename refhelper::FindTrait<C, T>::value> >(h.id())) {
292  }
holder_type * holder_
long double T
edm::RefVector< Container > RefVector
template<typename T >
template<typename T1 >
RefToBaseVector::RefToBaseVector ( Handle< View< T1 > > const &  h)
explicit

Definition at line 296 of file RefToBaseVector.h.

296  :
297  holder_(h->refVector().holder_->cloneEmpty()) {
298  }
holder_type * holder_
template<class T >
RefToBaseVector::RefToBaseVector ( std::shared_ptr< reftobase::RefVectorHolderBase p)
inline

Definition at line 131 of file RefToBaseVector.h.

131  :
132  holder_(new reftobase::IndirectVectorHolder<T>(p)) {
133  }
holder_type * holder_
template<class T >
RefToBaseVector::~RefToBaseVector ( )
inline

Definition at line 153 of file RefToBaseVector.h.

154  {
155  delete holder_;
156  }
holder_type * holder_
template<class T>
template<class T >
edm::RefToBaseVector< T >::RefToBaseVector ( const RefToBaseVector< T > &  iOther)
inline

Definition at line 125 of file RefToBaseVector.h.

125  :
126  holder_(iOther.holder_ ? iOther.holder_->clone() : 0)
127  { }
holder_type * holder_

Member Function Documentation

template<class T >
RefToBaseVector< T >::value_type RefToBaseVector::at ( size_type  idx) const
inline

Definition at line 161 of file RefToBaseVector.h.

References edm::reftobase::BaseVectorHolder< T >::at(), edm::errors::InvalidReference, and edm::Exception::throwThis().

Referenced by reco::tautools::CastedRefProducer< DerivedCollection, BaseType >::produce().

162  {
163  if ( holder_ == 0 )
165  "Trying to dereference null RefToBaseVector<T> in method: at(",
166  idx,
167  ")\n");
168  return holder_->at( idx );
169  }
static void throwThis(Code category, char const *message0="", char const *message1="", char const *message2="", char const *message3="", char const *message4="")
holder_type * holder_
tuple idx
DEBUGGING if hasattr(process,&quot;trackMonIterativeTracking2012&quot;): print &quot;trackMonIterativeTracking2012 D...
virtual base_ref_type const at(size_type idx) const =0
template<class T >
RefToBaseVector< T >::const_iterator RefToBaseVector::begin ( void  ) const
inline
template<class T >
void RefToBaseVector::clear ( void  )
inline
template<class T >
bool RefToBaseVector::empty ( ) const
inline
template<class T >
RefToBaseVector< T >::const_iterator RefToBaseVector::end ( void  ) const
inline
template<typename T >
void RefToBaseVector::fillView ( std::vector< void const * > &  pointers) const

Definition at line 238 of file RefToBaseVector.h.

References begin, alignCSCRings::e, end, i, edm::RefToBase< T >::isNull(), and findQualityFiles::size.

Referenced by edm::fillView().

239  {
240  pointers.reserve(this->size());
241  for (const_iterator i=begin(), e=end(); i!=e; ++i) {
242  RefToBase<T> ref = * i;
243  member_type const * address = ref.isNull() ? 0 : & * ref;
244  pointers.push_back(address);
245  }
246  }
int i
Definition: DBlmapReader.cc:9
holder_type::const_iterator const_iterator
const_iterator end() const
size_type size() const
const_iterator begin() const
template<class T >
ProductID RefToBaseVector::id ( void  ) const
inline

Definition at line 207 of file RefToBaseVector.h.

References edm::reftobase::BaseVectorHolder< T >::id().

Referenced by MatchJet::operator()().

208  {
209  return holder_ ? holder_->id() : ProductID();
210  }
virtual ProductID id() const =0
holder_type * holder_
template<class T>
bool edm::RefToBaseVector< T >::isAvailable ( ) const
inline

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

Definition at line 70 of file RefToBaseVector.h.

70 { return holder_->isAvailable(); }
virtual bool isAvailable() const =0
holder_type * holder_
template<class T>
bool edm::RefToBaseVector< T >::isInvalid ( ) const
inline

Definition at line 53 of file RefToBaseVector.h.

Referenced by edm::operator==().

53 { return holder_ == 0; }
holder_type * holder_
template<class T>
bool edm::RefToBaseVector< T >::isValid ( void  ) const
inline

Definition at line 52 of file RefToBaseVector.h.

52 { return holder_ != 0; }
holder_type * holder_
template<class T >
RefToBaseVector< T > & RefToBaseVector::operator= ( RefToBaseVector< T > const &  iRHS)
inline

Definition at line 138 of file RefToBaseVector.h.

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

138  {
139  RefToBaseVector temp(iRHS);
140  this->swap(temp);
141  return *this;
142  }
void swap(RefToBaseVector &other)
template<class T >
RefToBaseVector< T >::value_type RefToBaseVector::operator[] ( size_type  idx) const
inline

Definition at line 174 of file RefToBaseVector.h.

References asciidump::at.

175  {
176  return at( idx );
177  }
value_type at(size_type idx) const
tuple idx
DEBUGGING if hasattr(process,&quot;trackMonIterativeTracking2012&quot;): print &quot;trackMonIterativeTracking2012 D...
template<typename T >
const void * RefToBaseVector::product ( ) const

Definition at line 275 of file RefToBaseVector.h.

References edm::reftobase::BaseVectorHolder< T >::product().

275  {
276  return holder_ ? holder_->product() : 0;
277  }
virtual void const * product() const =0
holder_type * holder_
template<class T >
EDProductGetter const * RefToBaseVector::productGetter ( ) const
inline

Definition at line 215 of file RefToBaseVector.h.

References edm::reftobase::BaseVectorHolder< T >::productGetter().

216  {
217  return holder_ ? holder_->productGetter() : 0;
218  }
virtual EDProductGetter const * productGetter() const =0
holder_type * holder_
template<typename T>
void RefToBaseVector::push_back ( const RefToBase< T > &  r)
template<class T >
RefToBaseVector< T >::size_type RefToBaseVector::size ( void  ) const
inline
template<class T >
void RefToBaseVector::swap ( RefToBaseVector< T > &  other)
inline

Definition at line 147 of file RefToBaseVector.h.

References edm::RefToBaseVector< T >::holder_, and std::swap().

Referenced by edm::swap().

147  {
148  std::swap(holder_, other.holder_);
149  }
holder_type * holder_
void swap(edm::DataFrameContainer &lhs, edm::DataFrameContainer &rhs)
template<typename T >
std::auto_ptr< reftobase::RefVectorHolderBase > RefToBaseVector::vectorHolder ( ) const

Definition at line 270 of file RefToBaseVector.h.

References edm::reftobase::BaseVectorHolder< T >::vectorHolder().

Referenced by edm::helpers::ViewFiller< RefToBaseVector< T > >::fill().

270  {
271  return holder_ ? holder_->vectorHolder() : std::auto_ptr<reftobase::RefVectorHolderBase>();
272  }
holder_type * holder_
virtual std::auto_ptr< RefVectorHolderBase > vectorHolder() const =0

Member Data Documentation

template<class T>
holder_type* edm::RefToBaseVector< T >::holder_
private