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< T > value_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 (boost::shared_ptr< reftobase::RefVectorHolderBase > p)
 
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 26 of file EDProductfwd.h.

Member Typedef Documentation

Definition at line 30 of file RefToBaseVector.h.

template<class T>
typedef reftobase::BaseVectorHolder<T> edm::RefToBaseVector< T >::holder_type

Definition at line 28 of file RefToBaseVector.h.

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

Definition at line 27 of file RefToBaseVector.h.

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

Definition at line 29 of file RefToBaseVector.h.

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

Definition at line 26 of file RefToBaseVector.h.

Constructor & Destructor Documentation

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

Definition at line 107 of file RefToBaseVector.h.

107  :
108  holder_(0)
109  { }
holder_type * holder_
template<class T >
RefToBaseVector::RefToBaseVector ( RefToBaseVector< T > const &  iOther)
inline

Definition at line 120 of file RefToBaseVector.h.

120  :
121  holder_(iOther.holder_ ? iOther.holder_->clone() : 0)
122  { }
holder_type * holder_
template<class T >
template<class REFV >
RefToBaseVector::RefToBaseVector ( REFV const &  iRef)
inlineexplicit

Definition at line 114 of file RefToBaseVector.h.

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

Definition at line 284 of file RefToBaseVector.h.

284  :
285  holder_(new reftobase::VectorHolder<T, RefVector<C, typename refhelper::ValueTrait<C>::value,
286  typename refhelper::FindTrait<C, T>::value> >(h.id())) {
287  }
holder_type * holder_
edm::RefVector< Container > RefVector
template<typename T >
template<typename T1 >
RefToBaseVector::RefToBaseVector ( Handle< View< T1 > > const &  h)
explicit

Definition at line 291 of file RefToBaseVector.h.

291  :
292  holder_(h->refVector().holder_->cloneEmpty()) {
293  }
holder_type * holder_
template<class T >
RefToBaseVector::RefToBaseVector ( boost::shared_ptr< reftobase::RefVectorHolderBase p)
inline

Definition at line 126 of file RefToBaseVector.h.

126  :
127  holder_(new reftobase::IndirectVectorHolder<T>(p)) {
128  }
holder_type * holder_
template<class T >
RefToBaseVector::~RefToBaseVector ( )
inline

Definition at line 148 of file RefToBaseVector.h.

149  {
150  delete holder_;
151  }
holder_type * holder_

Member Function Documentation

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

Definition at line 156 of file RefToBaseVector.h.

References edm::errors::InvalidReference, and edm::Exception::throwThis().

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

157  {
158  if ( holder_ == 0 )
160  "Trying to dereference null RefToBaseVector<T> in method: at(",
161  idx,
162  ")\n");
163  return holder_->at( idx );
164  }
static void throwThis(Code category, char const *message0="", char const *message1="", char const *message2="", char const *message3="", char const *message4="")
Definition: EDMException.cc:81
holder_type * holder_
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

Definition at line 177 of file RefToBaseVector.h.

Referenced by python.Vispa.Gui.VispaWidget.TextField::setAutosizeFont(), and python.Vispa.Gui.VispaWidget.TextField::setAutotruncate().

178  {
179  return holder_ ? holder_->empty() : true;
180  }
holder_type * holder_
virtual bool empty() const =0
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 233 of file RefToBaseVector.h.

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

Referenced by edm::fillView().

234  {
235  pointers.reserve(this->size());
236  for (const_iterator i=begin(), e=end(); i!=e; ++i) {
237  RefToBase<T> ref = * i;
238  member_type const * address = ref.isNull() ? 0 : & * ref;
239  pointers.push_back(address);
240  }
241  }
int i
Definition: DBlmapReader.cc:9
holder_type::const_iterator const_iterator
char * address
Definition: mlp_lapack.h:14
const_iterator end() const
size_type size() const
const_iterator begin() const
template<class T >
ProductID RefToBaseVector::id ( void  ) const
inline

Definition at line 202 of file RefToBaseVector.h.

References edm::ProductID::id().

Referenced by MatchJet::operator()().

203  {
204  return holder_ ? holder_->id() : ProductID();
205  }
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 69 of file RefToBaseVector.h.

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

Definition at line 52 of file RefToBaseVector.h.

Referenced by edm::operator==().

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

Definition at line 51 of file RefToBaseVector.h.

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

Definition at line 133 of file RefToBaseVector.h.

References edm::swap(), and cond::rpcobtemp::temp.

133  {
134  RefToBaseVector temp(iRHS);
135  this->swap(temp);
136  return *this;
137  }
void swap(RefToBaseVector &other)
template<class T >
RefToBaseVector< T >::value_type RefToBaseVector::operator[] ( size_type  idx) const
inline

Definition at line 169 of file RefToBaseVector.h.

References asciidump::at.

170  {
171  return at( idx );
172  }
value_type at(size_type idx) const
template<typename T >
const void * RefToBaseVector::product ( ) const

Definition at line 270 of file RefToBaseVector.h.

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

Definition at line 210 of file RefToBaseVector.h.

211  {
212  return holder_ ? holder_->productGetter() : 0;
213  }
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 142 of file RefToBaseVector.h.

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

Referenced by edm::swap().

142  {
143  std::swap(holder_, other.holder_);
144  }
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 265 of file RefToBaseVector.h.

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

265  {
266  return holder_ ? holder_->vectorHolder() : std::auto_ptr<reftobase::RefVectorHolderBase>();
267  }
holder_type * holder_
virtual std::auto_ptr< RefVectorHolderBase > vectorHolder() const =0

Member Data Documentation

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