ATLAS Offline Software
DataObjectSharedPtr.h
Go to the documentation of this file.
1 // This file's extension implies that it's C, but it's really -*- C++ -*-.
2 /*
3  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
4 */
13 #ifndef ATHENAKERNEL_DATAOBJECTSHAREDPTR_H
14 #define ATHENAKERNEL_DATAOBJECTSHAREDPTR_H
15 
16 
18 #include "GaudiKernel/DataObject.h"
19 #include "CxxUtils/RefCountedPtr.h"
20 #include <memory>
21 
22 
23 namespace SG {
24 
25 
26 template <CxxUtils::detail::RefCounted T>
28 
29 
30 template <typename T>
31 DataObject* asStorable(SG::DataObjectSharedPtr<T> pObject) {
32  typedef typename DataBucketTrait<T>::type bucket_t;
33  return new bucket_t (pObject.get());
34 }
35 
36 
37 } // namespace SG
38 
39 
40 #endif // not ATHENAKERNEL_DATAOBJECTSHAREDPTR_H
SG
Forward declaration.
Definition: CaloCellPacker_400_500.h:32
StorableConversions.h
convert to and from a SG storable
RefCountedPtr.h
Simple smart pointer for Gaudi-style refcounted objects.
CxxUtils::RefCountedPtr
Simple smart pointer for Gaudi-style refcounted objects.
Definition: RefCountedPtr.h:39
SG::asStorable
DataObject * asStorable(SG::DataObjectSharedPtr< T > pObject)
Definition: DataObjectSharedPtr.h:31
CxxUtils::RefCountedPtr::get
T * get()
Get the pointer.
SG::DataBucketTrait::type
typename std::conditional_t< has_base, deflt, recurse >::type type
Definition: StorableConversions.h:144