The Gaudi Framework
master (6507eef1)
Toggle main menu visibility
Loading...
Searching...
No Matches
SmartDataObjectPtr.h
Go to the documentation of this file.
1
/***********************************************************************************\
2
* (c) Copyright 1998-2025 CERN for the benefit of the LHCb and ATLAS collaborations *
3
* *
4
* This software is distributed under the terms of the Apache version 2 licence, *
5
* copied verbatim in the file "LICENSE". *
6
* *
7
* In applying this licence, CERN does not waive the privileges and immunities *
8
* granted to it by virtue of its status as an Intergovernmental Organization *
9
* or submit itself to any jurisdiction. *
10
\***********************************************************************************/
11
#pragma once
12
13
#include <
GaudiKernel/Kernel.h
>
14
#include <
GaudiKernel/StatusCode.h
>
15
#include <string>
16
17
class
SmartDataObjectPtr
;
18
class
IDataProviderSvc
;
19
class
IRegistry
;
20
class
DataObject
;
21
37
class
GAUDI_API
SmartDataObjectPtr
{
38
public
:
39
using
AccessFunction
=
DataObject
* (*)(
SmartDataObjectPtr
* ptr );
41
class
ObjectLoader
{
42
public
:
43
static
AccessFunction
access
();
44
};
45
47
class
ObjectFinder
{
48
public
:
49
static
AccessFunction
access
();
50
};
51
52
public
:
59
SmartDataObjectPtr
(
AccessFunction
access,
IDataProviderSvc
* pService,
IRegistry
* pDir, std::string
path
)
60
:
m_dataProvider
( pService ),
m_pRegistry
( pDir ),
m_path
(
std
::move(
path
) ),
m_accessFunc
( access ) {}
61
64
SmartDataObjectPtr
(
const
SmartDataObjectPtr
& ) =
default
;
65
67
virtual
~SmartDataObjectPtr
() =
default
;
68
70
virtual
SmartDataObjectPtr
&
operator=
(
const
SmartDataObjectPtr
& ) =
default
;
71
73
operator
IRegistry
*() {
return
m_pRegistry
; }
74
76
const
std::string&
path
()
const
{
return
m_path
; }
77
79
IRegistry
*
directory
() {
return
m_pRegistry
; }
80
82
void
setService
(
IDataProviderSvc
* svc ) {
m_dataProvider
= svc; }
83
85
IDataProviderSvc
*
service
() {
return
m_dataProvider
; }
86
88
const
StatusCode
&
getLastError
()
const
{
return
m_status
; }
89
91
DataObject
*
accessData
() {
return
m_accessFunc
(
this
); }
92
94
static
DataObject
*
retrieve
(
SmartDataObjectPtr
* ptr ) {
return
ptr->
retrieveObject
(); }
95
97
static
DataObject
*
find
(
SmartDataObjectPtr
* ptr ) {
return
ptr->
findObject
(); }
98
100
static
DataObject
*
update
(
SmartDataObjectPtr
* ptr ) {
return
ptr->
updateObject
(); }
101
107
DataObject
* retrieveObject();
108
114
DataObject
* findObject();
115
122
DataObject
* updateObject();
123
124
protected
:
130
StatusCode
find(
IRegistry
* pDirectory, std::string_view path,
DataObject
*& refpObject );
131
137
StatusCode
find( std::string_view fullPath,
DataObject
*& refpObject );
138
144
StatusCode
retrieve(
IRegistry
* pDirectory, std::string_view path,
DataObject
*& refpObject );
150
StatusCode
retrieve( std::string_view fullPath,
DataObject
*& refpObject );
151
156
StatusCode
update(
IRegistry
* pDirectory );
161
StatusCode
update( std::string_view fullPath );
162
163
protected
:
165
mutable
IDataProviderSvc
*
m_dataProvider
=
nullptr
;
167
mutable
IRegistry
*
m_pRegistry
=
nullptr
;
169
mutable
StatusCode
m_status
=
StatusCode::SUCCESS
;
171
std::string
m_path
;
173
AccessFunction
m_accessFunc
=
nullptr
;
174
};
Kernel.h
GAUDI_API
#define GAUDI_API
Definition
Kernel.h:49
StatusCode.h
DataObject
A DataObject is the base class of any identifiable object on any data store.
Definition
DataObject.h:37
IDataProviderSvc
Data provider interface definition.
Definition
IDataProviderSvc.h:48
IRegistry
The IRegistry represents the entry door to the environment any data object residing in a transient da...
Definition
IRegistry.h:29
SmartDataObjectPtr::ObjectFinder
Helper class to configure smart pointer functionality.
Definition
SmartDataObjectPtr.h:47
SmartDataObjectPtr::ObjectFinder::access
static AccessFunction access()
Definition
SmartDataObjectPtr.cpp:17
SmartDataObjectPtr::ObjectLoader
Helper class to configure smart pointer functionality.
Definition
SmartDataObjectPtr.h:41
SmartDataObjectPtr::ObjectLoader::access
static AccessFunction access()
Definition
SmartDataObjectPtr.cpp:15
SmartDataObjectPtr
A small class used to access easily (and efficiently) data items residing in data stores.
Definition
SmartDataObjectPtr.h:37
SmartDataObjectPtr::path
const std::string & path() const
Path name.
Definition
SmartDataObjectPtr.h:76
SmartDataObjectPtr::SmartDataObjectPtr
SmartDataObjectPtr(const SmartDataObjectPtr &)=default
Copy constructor: Construct an copy of a SmartDataStorePtr instance.
SmartDataObjectPtr::operator=
virtual SmartDataObjectPtr & operator=(const SmartDataObjectPtr &)=default
Assignment operator.
SmartDataObjectPtr::findObject
DataObject * findObject()
Object find method.
Definition
SmartDataObjectPtr.cpp:72
SmartDataObjectPtr::retrieveObject
DataObject * retrieveObject()
Object retrieve method.
Definition
SmartDataObjectPtr.cpp:57
SmartDataObjectPtr::service
IDataProviderSvc * service()
Retrieve data service.
Definition
SmartDataObjectPtr.h:85
SmartDataObjectPtr::SmartDataObjectPtr
SmartDataObjectPtr(AccessFunction access, IDataProviderSvc *pService, IRegistry *pDir, std::string path)
Standard constructor: Construct an SmartDataObjectPtr instance.
Definition
SmartDataObjectPtr.h:59
SmartDataObjectPtr::updateObject
DataObject * updateObject()
Object update method.
Definition
SmartDataObjectPtr.cpp:87
SmartDataObjectPtr::find
static DataObject * find(SmartDataObjectPtr *ptr)
Static Object find method.
Definition
SmartDataObjectPtr.h:97
SmartDataObjectPtr::accessData
DataObject * accessData()
Static Object retrieval method: must call specific function.
Definition
SmartDataObjectPtr.h:91
SmartDataObjectPtr::m_accessFunc
AccessFunction m_accessFunc
Data access function.
Definition
SmartDataObjectPtr.h:173
SmartDataObjectPtr::getLastError
const StatusCode & getLastError() const
Access to potential errors during data accesses.
Definition
SmartDataObjectPtr.h:88
SmartDataObjectPtr::AccessFunction
DataObject *(*)(SmartDataObjectPtr *ptr) AccessFunction
Definition
SmartDataObjectPtr.h:39
SmartDataObjectPtr::directory
IRegistry * directory()
Access to data directory.
Definition
SmartDataObjectPtr.h:79
SmartDataObjectPtr::m_path
std::string m_path
Path to object.
Definition
SmartDataObjectPtr.h:171
SmartDataObjectPtr::~SmartDataObjectPtr
virtual ~SmartDataObjectPtr()=default
Standard Destructor.
SmartDataObjectPtr::retrieve
static DataObject * retrieve(SmartDataObjectPtr *ptr)
Static Object retrieval method.
Definition
SmartDataObjectPtr.h:94
SmartDataObjectPtr::update
static DataObject * update(SmartDataObjectPtr *ptr)
Static Object update method.
Definition
SmartDataObjectPtr.h:100
SmartDataObjectPtr::setService
void setService(IDataProviderSvc *svc)
Assign data service.
Definition
SmartDataObjectPtr.h:82
SmartDataObjectPtr::m_dataProvider
IDataProviderSvc * m_dataProvider
Pointer to contained object.
Definition
SmartDataObjectPtr.h:165
SmartDataObjectPtr::m_pRegistry
IRegistry * m_pRegistry
Pointer to the data registry containing the object.
Definition
SmartDataObjectPtr.h:167
SmartDataObjectPtr::m_status
StatusCode m_status
Keep track of the last error.
Definition
SmartDataObjectPtr.h:169
StatusCode
This class is used for returning status codes from appropriate routines.
Definition
StatusCode.h:64
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition
StatusCode.h:99
std
STL namespace.
GaudiKernel
include
GaudiKernel
SmartDataObjectPtr.h
Generated on
for The Gaudi Framework by
1.17.0