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 Attributes
edm::FwdRef< C, T, F > Class Template Reference

#include <FwdRef.h>

Public Types

typedef boost::binary_traits
< F >::second_argument_type 
argument_type
 
typedef T const element_type
 
typedef F finder_type
 
typedef boost::remove_cv
< typename
boost::remove_reference
< argument_type >::type >
::type 
key_type
 
typedef C product_type
 for export More...
 
typedef T value_type
 

Public Member Functions

Ref< C, T, F > const & backRef () const
 
 FwdRef ()
 Default constructor needed for reading from persistent store. Not for direct use. More...
 
 FwdRef (Ref< C, T, F > const &ref, Ref< C, T, F > const &backRef)
 General purpose constructor from 2 refs (forward and backward. More...
 
T const * get () const
 Returns C++ pointer to the item. More...
 
bool hasProductCache () 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
 Checks if this ref is transient (i.e. not persistable). More...
 
key_type key () const
 Accessor for product key. More...
 
bool operator! () const
 Checks for null. More...
 
T const & operator* () const
 Dereference operator. More...
 
T const * operator-> () const
 Member dereference operator. More...
 
EDProductGetter const * productGetter () const
 Accessor for product getter. More...
 
Ref< C, T, F > const & ref () const
 
 ~FwdRef ()
 Destructor. More...
 

Static Public Member Functions

static short Class_Version ()
 

Private Attributes

Ref< C, T, FbackRef_
 
Ref< C, T, Fref_
 

Detailed Description

template<typename C, typename T = typename refhelper::ValueTrait<C>::value, typename F = typename refhelper::FindTrait<C, T>::value>
class edm::FwdRef< C, T, F >

Definition at line 123 of file FwdRef.h.

Member Typedef Documentation

template<typename C, typename T = typename refhelper::ValueTrait<C>::value, typename F = typename refhelper::FindTrait<C, T>::value>
typedef boost::binary_traits<F>::second_argument_type edm::FwdRef< C, T, F >::argument_type

Definition at line 132 of file FwdRef.h.

template<typename C, typename T = typename refhelper::ValueTrait<C>::value, typename F = typename refhelper::FindTrait<C, T>::value>
typedef T const edm::FwdRef< C, T, F >::element_type

Definition at line 130 of file FwdRef.h.

template<typename C, typename T = typename refhelper::ValueTrait<C>::value, typename F = typename refhelper::FindTrait<C, T>::value>
typedef F edm::FwdRef< C, T, F >::finder_type

Definition at line 131 of file FwdRef.h.

template<typename C, typename T = typename refhelper::ValueTrait<C>::value, typename F = typename refhelper::FindTrait<C, T>::value>
typedef boost::remove_cv<typename boost::remove_reference<argument_type>::type>::type edm::FwdRef< C, T, F >::key_type

Definition at line 133 of file FwdRef.h.

template<typename C, typename T = typename refhelper::ValueTrait<C>::value, typename F = typename refhelper::FindTrait<C, T>::value>
typedef C edm::FwdRef< C, T, F >::product_type

for export

Definition at line 128 of file FwdRef.h.

template<typename C, typename T = typename refhelper::ValueTrait<C>::value, typename F = typename refhelper::FindTrait<C, T>::value>
typedef T edm::FwdRef< C, T, F >::value_type

Definition at line 129 of file FwdRef.h.

Constructor & Destructor Documentation

template<typename C, typename T = typename refhelper::ValueTrait<C>::value, typename F = typename refhelper::FindTrait<C, T>::value>
edm::FwdRef< C, T, F >::FwdRef ( )
inline

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

C is the type of the collection T is the type of a member the collection

Definition at line 138 of file FwdRef.h.

138 : ref_(), backRef_() {}
Ref< C, T, F > backRef_
Definition: FwdRef.h:207
Ref< C, T, F > ref_
Definition: FwdRef.h:206
template<typename C, typename T = typename refhelper::ValueTrait<C>::value, typename F = typename refhelper::FindTrait<C, T>::value>
edm::FwdRef< C, T, F >::FwdRef ( Ref< C, T, F > const &  ref,
Ref< C, T, F > const &  backRef 
)
inline

General purpose constructor from 2 refs (forward and backward.

Definition at line 141 of file FwdRef.h.

142  :
143  ref_(ref), backRef_(backRef) { assert(ref.isNull() == backRef.isNull()); }
assert(m_qm.get())
Ref< C, T, F > backRef_
Definition: FwdRef.h:207
Ref< C, T, F > ref_
Definition: FwdRef.h:206
Ref< C, T, F > const & backRef() const
Definition: FwdRef.h:176
Ref< C, T, F > const & ref() const
Definition: FwdRef.h:175
template<typename C, typename T = typename refhelper::ValueTrait<C>::value, typename F = typename refhelper::FindTrait<C, T>::value>
edm::FwdRef< C, T, F >::~FwdRef ( )
inline

Destructor.

Definition at line 146 of file FwdRef.h.

146 {}

Member Function Documentation

template<typename C, typename T = typename refhelper::ValueTrait<C>::value, typename F = typename refhelper::FindTrait<C, T>::value>
Ref<C,T,F> const& edm::FwdRef< C, T, F >::backRef ( ) const
inline

Definition at line 176 of file FwdRef.h.

Referenced by edm::operator==(), and pat::Jet::updateFwdGenJetFwdRef().

176 { return backRef_; }
Ref< C, T, F > backRef_
Definition: FwdRef.h:207
template<typename C, typename T = typename refhelper::ValueTrait<C>::value, typename F = typename refhelper::FindTrait<C, T>::value>
static short edm::FwdRef< C, T, F >::Class_Version ( )
inlinestatic

Definition at line 203 of file FwdRef.h.

205 :
206  Ref<C,T,F> ref_;
Ref< C, T, F > ref_
Definition: FwdRef.h:206
template<typename C, typename T = typename refhelper::ValueTrait<C>::value, typename F = typename refhelper::FindTrait<C, T>::value>
T const* edm::FwdRef< C, T, F >::get ( ) const
inline
template<typename C, typename T = typename refhelper::ValueTrait<C>::value, typename F = typename refhelper::FindTrait<C, T>::value>
bool edm::FwdRef< C, T, F >::hasProductCache ( ) const
inline

Definition at line 193 of file FwdRef.h.

193 {return ref_.hasProductCache() || backRef_.hasProductCache();}
Ref< C, T, F > backRef_
Definition: FwdRef.h:207
Ref< C, T, F > ref_
Definition: FwdRef.h:206
template<typename C, typename T = typename refhelper::ValueTrait<C>::value, typename F = typename refhelper::FindTrait<C, T>::value>
ProductID edm::FwdRef< C, T, F >::id ( ) const
inline

Accessor for product ID.

Definition at line 187 of file FwdRef.h.

187 {return ref_.isNonnull() ? ref_.id() : backRef_.id();}
Ref< C, T, F > backRef_
Definition: FwdRef.h:207
Ref< C, T, F > ref_
Definition: FwdRef.h:206
template<typename C, typename T = typename refhelper::ValueTrait<C>::value, typename F = typename refhelper::FindTrait<C, T>::value>
bool edm::FwdRef< C, T, F >::isAvailable ( ) const
inline

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

Definition at line 197 of file FwdRef.h.

197 {return ref_.isAvailable() || backRef_.isAvailable();}
Ref< C, T, F > backRef_
Definition: FwdRef.h:207
Ref< C, T, F > ref_
Definition: FwdRef.h:206
template<typename C, typename T = typename refhelper::ValueTrait<C>::value, typename F = typename refhelper::FindTrait<C, T>::value>
bool edm::FwdRef< C, T, F >::isNonnull ( ) const
inline

Checks for non-null.

Definition at line 170 of file FwdRef.h.

Referenced by edm::FwdRef< JetEisolAssociationCollection >::isNull().

170 { return ref_.isNonnull() || backRef_.isNonnull(); }
Ref< C, T, F > backRef_
Definition: FwdRef.h:207
Ref< C, T, F > ref_
Definition: FwdRef.h:206
template<typename C, typename T = typename refhelper::ValueTrait<C>::value, typename F = typename refhelper::FindTrait<C, T>::value>
bool edm::FwdRef< C, T, F >::isNull ( ) const
inline

Checks for null.

Definition at line 166 of file FwdRef.h.

Referenced by edm::FwdRef< JetEisolAssociationCollection >::operator!().

166 {return !isNonnull(); }
bool isNonnull() const
Checks for non-null.
Definition: FwdRef.h:170
template<typename C, typename T = typename refhelper::ValueTrait<C>::value, typename F = typename refhelper::FindTrait<C, T>::value>
bool edm::FwdRef< C, T, F >::isTransient ( ) const
inline

Checks if this ref is transient (i.e. not persistable).

Definition at line 200 of file FwdRef.h.

200 {return ref_.isTransient();}
Ref< C, T, F > ref_
Definition: FwdRef.h:206
template<typename C, typename T = typename refhelper::ValueTrait<C>::value, typename F = typename refhelper::FindTrait<C, T>::value>
key_type edm::FwdRef< C, T, F >::key ( ) const
inline

Accessor for product key.

Definition at line 191 of file FwdRef.h.

191 {return ref_.isNonnull() ? ref_.key() : backRef_.key() ;}
Ref< C, T, F > backRef_
Definition: FwdRef.h:207
Ref< C, T, F > ref_
Definition: FwdRef.h:206
template<typename C, typename T = typename refhelper::ValueTrait<C>::value, typename F = typename refhelper::FindTrait<C, T>::value>
bool edm::FwdRef< C, T, F >::operator! ( ) const
inline

Checks for null.

Definition at line 173 of file FwdRef.h.

173 {return isNull();}
bool isNull() const
Checks for null.
Definition: FwdRef.h:166
template<typename C , typename T , typename F >
T const & edm::FwdRef< C, T, F >::operator* ( ) const
inline

Dereference operator.

Definition at line 219 of file FwdRef.h.

219  {
220  return ref_.isNonnull() && ref_.isAvailable() ?
221  ref_.operator*() :
222  backRef_.operator*();
223  }
Ref< C, T, F > backRef_
Definition: FwdRef.h:207
Ref< C, T, F > ref_
Definition: FwdRef.h:206
template<typename C , typename T , typename F >
T const * edm::FwdRef< C, T, F >::operator-> ( ) const
inline

Member dereference operator.

Definition at line 229 of file FwdRef.h.

229  {
230  return ref_.isNonnull() && ref_.isAvailable() ?
231  ref_.operator->() :
232  backRef_.operator->();
233  }
Ref< C, T, F > backRef_
Definition: FwdRef.h:207
Ref< C, T, F > ref_
Definition: FwdRef.h:206
template<typename C, typename T = typename refhelper::ValueTrait<C>::value, typename F = typename refhelper::FindTrait<C, T>::value>
EDProductGetter const* edm::FwdRef< C, T, F >::productGetter ( ) const
inline

Accessor for product getter.

Definition at line 179 of file FwdRef.h.

179  {
180  //another thread might cause productGetter() to change its value
181  EDProductGetter const* getter = ref_.productGetter();
182  if ( getter ) return getter;
183  else return backRef_.productGetter();
184  }
Ref< C, T, F > backRef_
Definition: FwdRef.h:207
Ref< C, T, F > ref_
Definition: FwdRef.h:206
template<typename C, typename T = typename refhelper::ValueTrait<C>::value, typename F = typename refhelper::FindTrait<C, T>::value>
Ref<C,T,F> const& edm::FwdRef< C, T, F >::ref ( ) const
inline

Definition at line 175 of file FwdRef.h.

Referenced by edm::operator==().

175 { return ref_; }
Ref< C, T, F > ref_
Definition: FwdRef.h:206

Member Data Documentation

template<typename C, typename T = typename refhelper::ValueTrait<C>::value, typename F = typename refhelper::FindTrait<C, T>::value>
Ref<C,T,F> edm::FwdRef< C, T, F >::backRef_
private
template<typename C, typename T = typename refhelper::ValueTrait<C>::value, typename F = typename refhelper::FindTrait<C, T>::value>
Ref<C,T,F> edm::FwdRef< C, T, F >::ref_
private