CMS 3D CMS Logo

Public Types | Public Member Functions | Private Attributes

edm::FwdRef< C, T, F > Class Template Reference

#include <FwdRef.h>

List of all members.

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
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.
 FwdRef (Ref< C, T, F > const &ref, Ref< C, T, F > const &backRef)
 General purpose constructor from 2 refs (forward and backward.
T const * get () const
 Returns C++ pointer to the item.
bool hasCache () const
bool hasProductCache () const
ProductID id () const
 Accessor for product ID.
bool isAvailable () const
bool isNonnull () const
 Checks for non-null.
bool isNull () const
 Checks for null.
bool isTransient () const
 Checks if this ref is transient (i.e. not persistable).
key_type key () const
 Accessor for product key.
bool operator! () const
 Checks for null.
T const & operator* () const
 Dereference operator.
T const * operator-> () const
 Member dereference operator.
C const * product () const
 Accessor for product collection.
EDProductGetter const * productGetter () const
 Accessor for product getter.
Ref< C, T, F > const & ref () const
 ~FwdRef ()
 Destructor.

Private Attributes

Ref< C, T, F > backRef_
Ref< C, T, F > ref_

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.

: ref_(), backRef_() {}
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.

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.

{}

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 178 of file FwdRef.h.

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

{ return backRef_; }
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 ( void  ) const [inline]

Returns C++ pointer to the item.

Definition at line 157 of file FwdRef.h.

Referenced by pat::Jet::genJet().

                         {
      if ( ref_.isNonnull() ) {
        return ref_.get();
      } else if ( backRef_.isNonnull() ) {
        return backRef_.get();
      } else {
        return 0;
      }
    }
template<typename C, typename T = typename refhelper::ValueTrait<C>::value, typename F = typename refhelper::FindTrait<C, T>::value>
bool edm::FwdRef< C, T, F >::hasCache ( ) const [inline]

Definition at line 199 of file FwdRef.h.

{return ref_.hasCache() || backRef_.hasCache();}
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 197 of file FwdRef.h.

{return ref_.hasProductCache() || backRef_.hasProductCache();}
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 ( void  ) const [inline]

Accessor for product ID.

Definition at line 191 of file FwdRef.h.

{return ref_.isNonnull() ? ref_.id() : backRef_.id();}
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 203 of file FwdRef.h.

{return ref_.isAvailable() || backRef_.isAvailable();}
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 172 of file FwdRef.h.

Referenced by edm::FwdRef< reco::GenJetCollection >::isNull().

{ return ref_.isNonnull() || backRef_.isNonnull(); }
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 168 of file FwdRef.h.

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

{return !isNonnull(); }
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 206 of file FwdRef.h.

{return ref_.isTransient();}
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 195 of file FwdRef.h.

{return ref_.isNonnull() ? ref_.key() : backRef_.key() ;}
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 175 of file FwdRef.h.

{return isNull();}
template<typename C , typename T , typename F >
T const & edm::FwdRef< C, T, F >::operator* ( ) const [inline]

Dereference operator.

Definition at line 236 of file FwdRef.h.

                                   {
    return ref_.isNonnull() && ref_.isAvailable() ?
      ref_.operator*() :
      backRef_.operator*();
  }
template<typename C , typename T , typename F >
T const * edm::FwdRef< C, T, F >::operator-> ( ) const [inline]

Member dereference operator.

Definition at line 246 of file FwdRef.h.

                                    {
    return ref_.isNonnull() && ref_.isAvailable() ?
      ref_.operator->() :
      backRef_.operator->();
  }
template<typename C , typename T , typename F >
C const * edm::FwdRef< C, T, F >::product ( ) const [inline]

Accessor for product collection.

Definition at line 226 of file FwdRef.h.

                                 {
    return ref_.isNonnull() && ref_.isAvailable() ? 
      ref_.product() :
      backRef_.product();
  }
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 181 of file FwdRef.h.

                                                 {
      if ( ref_.productGetter() ) return ref_.productGetter();
      else return backRef_.productGetter();
    }
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 177 of file FwdRef.h.

Referenced by edm::operator==().

{ return ref_; }

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]