CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RefToPtr.h
Go to the documentation of this file.
1 #ifndef DataFormats_Common_RefToPtr_h
2 #define DataFormats_Common_RefToPtr_h
3 
4 /*----------------------------------------------------------------------
5 
6 Ref: A function template for conversion from Ref to Ptr
7 
8 ----------------------------------------------------------------------*/
9 /*
10  ----------------------------------------------------------------------*/
11 
15 
16 namespace edm {
17  template <typename C>
20  typedef typename C::value_type T;
21  if (ref.isNull()) {
22  return Ptr<T>();
23  }
24  if (ref.isTransient()) {
25  return Ptr<T>(ref.get(), ref.key());
26  } else {
27  //Another thread could change this value so get only once
28  EDProductGetter const* getter = ref.productGetter();
29  if (getter) {
30  return Ptr<T>(ref.id(), ref.key(), getter);
31  }
32  }
33  return Ptr<T>(ref.id(), ref.get(), ref.key());
34  }
35 } // namespace edm
36 #endif
Ptr< typename C::value_type > refToPtr(Ref< C, typename C::value_type, refhelper::FindUsingAdvance< C, typename C::value_type > > const &ref)
Definition: RefToPtr.h:18
long double T