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 | Static Public Member Functions | Private Member Functions | Private Attributes
edm::RefVectorBase< T > Class Template Reference

#include <EDProductfwd.h>

Public Types

typedef KEY key_type
 
typedef std::vector< KEY > keys_type
 
typedef keys_type::size_type size_type
 

Public Member Functions

void const * cachedMemberPointer (size_type idx) const
 
size_type capacity () const
 Capacity of vector. More...
 
void clear ()
 clear the vector More...
 
bool empty () const
 Is vector empty? More...
 
keys_type::iterator eraseAtIndex (size_type index)
 erase an element from the vector More...
 
keys_type const & keys () const
 Accessor for vector of keys and pointers. More...
 
RefVectorBaseoperator= (RefVectorBase const &rhs)
 
RefVectorBaseoperator= (RefVectorBase &&rhs) noexcept
 
void pushBack (RefCore const &product, KEY const &key)
 
RefCore const & refCore () const
 Accessor for product ID and product getter. More...
 
 RefVectorBase ()
 Default constructor needed for reading from persistent store. Not for direct use. More...
 
 RefVectorBase (RefVectorBase const &rhs)
 
 RefVectorBase (RefVectorBase &&rhs) noexcept
 
 RefVectorBase (ProductID const &productID, void const *prodPtr=0, EDProductGetter const *prodGetter=0)
 
void reserve (size_type n)
 Reserve space for vector. More...
 
size_type size () const
 Size of vector. More...
 
void swap (RefVectorBase< KEY > &other) noexcept
 swap two vectors More...
 
 ~RefVectorBase () noexcept
 Destructor. More...
 

Static Public Member Functions

static short Class_Version ()
 

Private Member Functions

std::vector< void const * > const & memberPointers () const
 

Private Attributes

keys_type keys_
 
RefVectorMemberPointersHolder memberPointersHolder_
 
RefCore product_
 

Detailed Description

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

Definition at line 26 of file EDProductfwd.h.

Member Typedef Documentation

template<typename T>
typedef KEY edm::RefVectorBase< T >::key_type

Definition at line 33 of file RefVectorBase.h.

template<typename T>
typedef std::vector<KEY > edm::RefVectorBase< T >::keys_type

Definition at line 32 of file RefVectorBase.h.

template<typename T>
typedef keys_type::size_type edm::RefVectorBase< T >::size_type

Definition at line 34 of file RefVectorBase.h.

Constructor & Destructor Documentation

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

Default constructor needed for reading from persistent store. Not for direct use.

Definition at line 36 of file RefVectorBase.h.

36 : product_(), keys_() {}
template<typename T>
edm::RefVectorBase< T >::RefVectorBase ( RefVectorBase< T > const &  rhs)
inline

Definition at line 37 of file RefVectorBase.h.

37  : product_(rhs.product_), keys_(rhs.keys_),
38  memberPointersHolder_(rhs.memberPointersHolder_) {}
RefVectorMemberPointersHolder memberPointersHolder_
template<typename T>
edm::RefVectorBase< T >::RefVectorBase ( RefVectorBase< T > &&  rhs)
inlinenoexcept

Definition at line 39 of file RefVectorBase.h.

39  : product_(std::move(rhs.product_)), keys_(std::move(rhs.keys_)),
40  memberPointersHolder_(std::move(rhs.memberPointersHolder_)) {}
RefVectorMemberPointersHolder memberPointersHolder_
def move
Definition: eostools.py:510
template<typename T>
edm::RefVectorBase< T >::RefVectorBase ( ProductID const &  productID,
void const *  prodPtr = 0,
EDProductGetter const *  prodGetter = 0 
)
inlineexplicit

Definition at line 56 of file RefVectorBase.h.

57  :
58  product_(productID, prodPtr, prodGetter, false), keys_() {}
template<typename T>
edm::RefVectorBase< T >::~RefVectorBase ( )
inlinenoexcept

Destructor.

Definition at line 62 of file RefVectorBase.h.

62 {}

Member Function Documentation

template<typename T>
void const* edm::RefVectorBase< T >::cachedMemberPointer ( size_type  idx) const
inline

Definition at line 67 of file RefVectorBase.h.

Referenced by edm::RefVector< JetEisolAssociationCollection >::at(), and edm::RefVector< JetEisolAssociationCollection >::operator[]().

67  {
68  return memberPointers().empty() ? nullptr : memberPointers()[idx];
69  }
std::vector< void const * > const & memberPointers() const
tuple idx
DEBUGGING if hasattr(process,&quot;trackMonIterativeTracking2012&quot;): print &quot;trackMonIterativeTracking2012 D...
template<typename T>
size_type edm::RefVectorBase< T >::capacity ( ) const
inline

Capacity of vector.

Definition at line 98 of file RefVectorBase.h.

Referenced by edm::RefVector< JetEisolAssociationCollection >::capacity().

98 {return keys_.capacity();}
template<typename T>
static short edm::RefVectorBase< T >::Class_Version ( )
inlinestatic

Definition at line 125 of file RefVectorBase.h.

127 :
128 
template<typename T>
void edm::RefVectorBase< T >::clear ( void  )
inline
template<typename T>
bool edm::RefVectorBase< T >::empty ( ) const
inline
template<typename T>
keys_type::iterator edm::RefVectorBase< T >::eraseAtIndex ( size_type  index)
inline

erase an element from the vector

Definition at line 104 of file RefVectorBase.h.

Referenced by edm::RefVector< C, T, F >::erase().

104  {
106  return keys_.erase(keys_.begin() + index);
107  }
std::vector< void const * > const & memberPointers() const
Definition: RefVectorBase.h:23
RefVectorMemberPointersHolder memberPointersHolder_
template<typename T>
keys_type const& edm::RefVectorBase< T >::keys ( ) const
inline
template<typename T>
std::vector<void const*> const& edm::RefVectorBase< T >::memberPointers ( ) const
inlineprivate

Definition at line 129 of file RefVectorBase.h.

Referenced by edm::RefVectorBase< key_type >::cachedMemberPointer(), and edm::RefVectorBase< key_type >::pushBack().

std::vector< void const * > const & memberPointers() const
Definition: RefVectorBase.h:23
RefVectorMemberPointersHolder memberPointersHolder_
template<typename T>
RefVectorBase& edm::RefVectorBase< T >::operator= ( RefVectorBase< T > const &  rhs)
inline

Definition at line 42 of file RefVectorBase.h.

42  {
43  RefVectorBase temp(rhs);
44  this->swap(temp);
45  return *this;
46  }
RefVectorBase()
Default constructor needed for reading from persistent store. Not for direct use. ...
Definition: RefVectorBase.h:36
void swap(RefVectorBase< KEY > &other) noexcept
swap two vectors
template<typename T>
RefVectorBase& edm::RefVectorBase< T >::operator= ( RefVectorBase< T > &&  rhs)
inlinenoexcept

Definition at line 47 of file RefVectorBase.h.

47  {
48  product_ = std::move(rhs.product_);
49  keys_ =std::move(rhs.keys_);
50  memberPointersHolder_ = std::move(rhs.memberPointersHolder_);
51  return *this;
52  }
RefVectorMemberPointersHolder memberPointersHolder_
def move
Definition: eostools.py:510
template<typename T>
void edm::RefVectorBase< T >::pushBack ( RefCore const &  product,
KEY const &  key 
)
inline

Definition at line 80 of file RefVectorBase.h.

Referenced by edm::RefVector< JetEisolAssociationCollection >::push_back().

80  {
81  product_.pushBackRefItem(product);
82  if(product.productPtr() != nullptr) {
83  if(memberPointers().empty()) {
84  memberPointersHolder_.memberPointers().resize(keys_.size(), nullptr);
85  }
86  memberPointersHolder_.memberPointers().push_back(product.productPtr());
87  keys_.push_back(key);
88  return;
89  } else {
90  if(!memberPointers().empty()) {
91  memberPointersHolder_.memberPointers().push_back(nullptr);
92  }
93  keys_.push_back(key);
94  }
95  }
bool empty() const
Is vector empty?
Definition: RefVectorBase.h:75
std::vector< void const * > const & memberPointers() const
Definition: RefVectorBase.h:23
RefVectorMemberPointersHolder memberPointersHolder_
std::vector< void const * > const & memberPointers() const
string key
FastSim: produces sample of signal events, overlayed with premixed minbias events.
void pushBackRefItem(RefCore const &productToBeInserted)
Definition: RefCore.cc:243
template<typename T>
RefCore const& edm::RefVectorBase< T >::refCore ( ) const
inline
template<typename T>
void edm::RefVectorBase< T >::reserve ( size_type  n)
inline

Reserve space for vector.

Definition at line 101 of file RefVectorBase.h.

Referenced by edm::RefVector< JetEisolAssociationCollection >::reserve().

101 {keys_.reserve(n);}
template<typename T>
size_type edm::RefVectorBase< T >::size ( void  ) const
inline

Size of vector.

Definition at line 78 of file RefVectorBase.h.

Referenced by edm::RefVector< JetEisolAssociationCollection >::size().

78 {return keys_.size();}
template<typename T>
void edm::RefVectorBase< T >::swap ( RefVectorBase< KEY > &  other)
inlinenoexcept

swap two vectors

Definition at line 117 of file RefVectorBase.h.

Referenced by edm::RefVectorBase< key_type >::operator=(), edm::RefVector< C, T, F >::swap(), and edm::swap().

117  {
118  product_.swap(other.product_);
119  keys_.swap(other.keys_);
120  memberPointersHolder_.memberPointers().swap(other.memberPointersHolder_.memberPointers());
121  }
void swap(RefCore &) noexcept
Definition: RefCore.h:157
std::vector< void const * > const & memberPointers() const
Definition: RefVectorBase.h:23
RefVectorMemberPointersHolder memberPointersHolder_

Member Data Documentation

template<typename T>
keys_type edm::RefVectorBase< T >::keys_
private
template<typename T>
RefVectorMemberPointersHolder edm::RefVectorBase< T >::memberPointersHolder_
private
template<typename T>
RefCore edm::RefVectorBase< T >::product_
private