CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
RefItemGet.h
Go to the documentation of this file.
1 #ifndef DataFormats_Common_RefItemGet_h
2 #define DataFormats_Common_RefItemGet_h
3 
4 /*----------------------------------------------------------------------
5 
6 RefItemGet: Free function to get pointer to a referenced item.
7 
8 $Id: RefItemGet.h,v 1.2 2007/07/09 07:28:49 llista Exp $
9 
10 ----------------------------------------------------------------------*/
14 
15 namespace edm {
16 
17  namespace refitem {
18  template< typename C, typename T, typename F, typename KEY>
19  struct GetPtrImpl {
20  static T const* getPtr_(RefCore const& product, RefItem<KEY> const& item) {
21  C const* prod = edm::template getProduct<C>(product);
22  /*
23  typename C::const_iterator it = prod->begin();
24  std::advance(it, item.key());
25  T const* p = it.operator->();
26  */
27  F func;
28  T const* p = func(*prod, item.key());
29  return p;
30  }
31  };
32  }
33 
34  template <typename C, typename T, typename F, typename KEY>
35  inline
36  T const* getPtr_(RefCore const& product, RefItem<KEY> const& item) {
37  return refitem::GetPtrImpl<C, T, F, KEY>::getPtr_(product, item);
38  }
39 
40  template <typename C, typename T, typename F, typename KEY>
41  inline
42  T const* getPtr(RefCore const& product, RefItem<KEY> const& item) {
43  T const* p = static_cast<T const *>(item.ptr());
44  if(0==p){
45  p=getPtr_<C, T, F>(product,item);
46  item.setPtr(p);
47  }
48  return p;
49  }
50 }
51 
52 #endif
T const * getPtr_(RefCore const &product, RefItem< KEY > const &item)
Definition: RefItemGet.h:36
T const * getPtr(RefCore const &product, RefItem< KEY > const &item)
Definition: RefItemGet.h:42
static T const * getPtr_(RefCore const &product, RefItem< KEY > const &item)
Definition: RefItemGet.h:20
tuple prod
Definition: CrabTask.py:87
void const * setPtr(void const *p) const
Definition: RefItem.h:29
key_type key() const
Definition: RefItem.h:27
void const * ptr() const
Definition: RefItem.h:28
def template
Definition: svgfig.py:520