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 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 >::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 201 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 204 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 235 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 245 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 225 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]