CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_1/src/DataFormats/Common/interface/getRef.h

Go to the documentation of this file.
00001 #ifndef DataFormats_Common_getRef_h
00002 #define DataFormats_Common_getRef_h
00003 /* \function edm::getRef(...)
00004  *
00005  * \author Luca Lista, INFN
00006  *
00007  */
00008 #include "DataFormats/Common/interface/Ref.h"
00009 #include "DataFormats/Common/interface/View.h"
00010 #include "DataFormats/Common/interface/Handle.h"
00011 
00012 namespace edm {
00013   namespace helper {
00014     template<typename C>
00015     struct MatcherGetRef {
00016       typedef Ref<C> ref_type;
00017       static ref_type getRef( const Handle<C> & c, size_t k ) { return ref_type(c, k); }
00018     };
00019     
00020     template<typename T>
00021     struct MatcherGetRef<View<T> > {
00022       typedef RefToBase<T> ref_type;
00023       static ref_type getRef( const Handle<View<T> > & v, size_t k ) { return v->refAt(k); }
00024     };
00025   }
00026   
00027   template<typename C> 
00028   typename helper::MatcherGetRef<C>::ref_type getRef( const Handle<C> & c, size_t k ) { 
00029     return helper::MatcherGetRef<C>::getRef( c, k ); 
00030   }
00031 }
00032 
00033 #endif