ATLAS Offline Software
Loading...
Searching...
No Matches
AthenaAttributeListCnv.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
10
12
13#include "GaudiKernel/ClassID.h"
14#include "GaudiKernel/DataObject.h"
15#include "GaudiKernel/MsgStream.h"
16#include "GaudiKernel/StatusCode.h"
17
18// AthenaAttributeList and address
21
23#include "StorageSvc/DbType.h"
24
25//--------------------------------------------------------------------
26
27long int
31
32//__________________________________________________________________________
35//__________________________________________________________________________
37 MsgStream log(msgSvc(), "AthenaAttributeListCnv");
38
39 log << MSG::DEBUG << "initialize() in AthenaAttributeListCnv" << endmsg;
40 StatusCode status = Converter::initialize();
41 if (!status.isSuccess()) {
42 log << MSG::ERROR << "Can not initialize Converter base class." << endmsg;
43 return(status);
44 }
45 return(status);
46}
47//__________________________________________________________________________
48StatusCode AthenaAttributeListCnv::createObj(IOpaqueAddress* pAddr, DataObject*& pObj) {
49
50 // This is the "read" method for an AttributeList. Here we only
51 // extract an AthenaAttributeList pointer from an
52 // AthenaAttrListAddress and return it
53
54 MsgStream log(msgSvc(), "AthenaAttributeListCnv");
55 log << MSG::DEBUG << "Creating AthenaAttrListAddress Object" << endmsg;
56
57 AthenaAttrListAddress* addr = dynamic_cast<AthenaAttrListAddress*>(pAddr);
58
59 if (addr) {
60 // Successful cast
61 pObj = SG::asStorable(addr->attrList());
62 if (!pObj) {
63 log << MSG::ERROR << "AttributeList ptr is 0 from AthenaAttrListAddress " << endmsg;
64 return(StatusCode::FAILURE);
65 }
66 } else {
67 log << MSG::ERROR << "Could not extract ptr for AthenaAttrListAddress " << endmsg;
68 return(StatusCode::FAILURE);
69 }
70
71 return(StatusCode::SUCCESS);
72}
73//__________________________________________________________________________
74StatusCode AthenaAttributeListCnv::createRep(DataObject* pObj, IOpaqueAddress*& pAddr) {
75
76 // This is the "write" method for an AttributeList. Here we only
77 // create an AthenaAttrListAddress and fill it with a pointer to
78 // the AthenaAttributeList
79
80 MsgStream log(msgSvc(), "AthenaAttributeListCnv");
81 log << MSG::DEBUG << "Copy AthenaAttributeList ptr into AthenaAttrListAddress" << endmsg;
82
83 AthenaAttributeList* list = 0; //dynamic_cast<AthenaAttributeList*>(pObj);
84 SG::fromStorable(pObj, list);
85 if ( pAddr != nullptr ) pAddr->release();
87 classID(),
88 "POOLContainer_AthenaAttributeList][CLID=x");
89 addr->setAttrList(list);
90 pAddr = addr;
91 pAddr->addRef();
92 log << MSG::DEBUG << "Created AthenaAttrListAddress with list ptr: " << list << endmsg;
93 return(StatusCode::SUCCESS);
94}
95//__________________________________________________________________________
99//__________________________________________________________________________
103//__________________________________________________________________________
105 Converter(storageType(), classID(), svcloc) {
106}
107//__________________________________________________________________________
#define endmsg
This file contains the class definition for the AthenaAttrListAddress class.
This file contains the class definition for the AthenaAttributeListCnv class.
uint32_t CLID
The Class ID type.
This class provides an IOpaqueAddress/GenericAddress which can hold a pointer to an AthenaAttributeLi...
AthenaAttributeList * attrList()
Access to AttributeList.
void setAttrList(AthenaAttributeList *attrList)
Add AttributeList.
virtual StatusCode initialize()
Gaudi Service Interface method implementations:
virtual long int repSvcType() const
virtual ~AthenaAttributeListCnv()
Destructor.
AthenaAttributeListCnv(ISvcLocator *svcloc)
Constructor.
virtual StatusCode createObj(IOpaqueAddress *pAddr, DataObject *&pObj)
Create a transient object from a POOL persistent representation.
virtual StatusCode createRep(DataObject *pObj, IOpaqueAddress *&pAddr)
Create a POOL persistent representation for a transient object.
An AttributeList represents a logical row of attributes in a metadata table.
bool fromStorable(DataObject *pDObj, T *&pTrans, bool quiet=false, IRegisterTransient *irt=0, bool isConst=true)
DataObject * asStorable(SG::DataObjectSharedPtr< T > pObject)
static const DbType POOL_StorageType
Definition DbType.h:98