The Gaudi Framework
master (1a7a3838)
Toggle main menu visibility
Loading...
Searching...
No Matches
LinkManager.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 <memory>
15
#include <string>
16
#include <vector>
17
18
class
DataObject
;
19
class
IOpaqueAddress
;
20
28
class
GAUDI_API
LinkManager
final {
29
30
public
:
32
enum
DirLinkType
{
INVALID
,
VALID
};
33
38
class
Link
final {
40
std::string
m_path
;
42
DataObject
*
m_pObject
=
nullptr
;
44
long
m_id
=
INVALID
;
45
46
public
:
48
Link
(
long
id
, std::string
path
,
DataObject
* pObject =
nullptr
)
49
:
m_path
(
std
::move(
path
) ),
m_pObject
( pObject ),
m_id
( id ) {}
50
51
Link
() =
default
;
53
bool
operator==
(
const
Link
&
link
)
const
{
return
link
.m_path ==
m_path
; }
55
void
setObject
(
const
DataObject
* pObject ) {
m_pObject
=
const_cast<
DataObject
*
>
( pObject ); }
57
const
DataObject
*
object
()
const
{
return
m_pObject
; }
58
DataObject
*
object
() {
return
m_pObject
; }
60
const
std::string&
path
()
const
{
return
m_path
; }
62
long
ID
()
const
{
return
m_id
; }
64
IOpaqueAddress
* address();
65
};
66
67
private
:
76
std::vector<Link*>
m_linkVector
;
77
78
public
:
80
LinkManager
() =
default
;
81
LinkManager
(
LinkManager
&& ) =
default
;
82
LinkManager
&
operator=
(
LinkManager
&& ) =
default
;
83
LinkManager
(
LinkManager
const
& ) =
delete
;
84
LinkManager
&
operator=
(
LinkManager
const
& ) =
delete
;
86
~LinkManager
();
88
long
size
()
const
{
return
m_linkVector
.size(); }
89
bool
empty
()
const
{
return
m_linkVector
.empty(); }
91
const
Link* link(
long
id
)
const
;
92
Link* link(
long
id
);
94
const
Link* link(
const
DataObject
* pObject )
const
;
95
Link* link(
const
DataObject
* pObject );
97
const
Link* link( std::string_view path )
const
;
98
Link* link( std::string_view path );
100
long
addLink(
const
std::string& path,
const
DataObject
* pObject );
101
102
auto
end
()
const
{
return
std::default_sentinel; }
103
auto
begin
()
const
{
104
class
Iterator
{
105
int
i;
106
LinkManager
const
* parent;
107
108
public
:
109
Iterator
(
LinkManager
const
* p,
int
i ) : i{ i }, parent{ p } {}
110
bool
operator==
( std::default_sentinel_t )
const
{
return
i == parent->
size
(); }
111
Iterator
& operator++() {
112
++i;
113
return
*
this
;
114
}
115
const
Link
& operator*()
const
{
return
*parent->
link
( i ); }
116
};
117
return
Iterator
{
this
, 0 };
118
}
119
};
operator==
bool operator==(const GaudiUtils::Allocator< T1 > &, const GaudiUtils::Allocator< T2 > &)
Definition
Allocator.h:224
Iterator
boost::spirit::classic::position_iterator2< ForwardIterator > Iterator
Definition
Iterator.h:18
Kernel.h
GAUDI_API
#define GAUDI_API
Definition
Kernel.h:49
DataObject
A DataObject is the base class of any identifiable object on any data store.
Definition
DataObject.h:37
IOpaqueAddress
Opaque address interface definition.
Definition
IOpaqueAddress.h:28
LinkManager::Link
Embedded class defining a symbolic link Note: No explicit copy constructor; implicit compiler generat...
Definition
LinkManager.h:38
LinkManager::Link::path
const std::string & path() const
Access to path of object.
Definition
LinkManager.h:60
LinkManager::Link::setObject
void setObject(const DataObject *pObject)
Update object pointer.
Definition
LinkManager.h:55
LinkManager::Link::object
const DataObject * object() const
Const access to data object.
Definition
LinkManager.h:57
LinkManager::Link::m_pObject
DataObject * m_pObject
Pointer to object behind the link.
Definition
LinkManager.h:42
LinkManager::Link::m_id
long m_id
Link ID.
Definition
LinkManager.h:44
LinkManager::Link::operator==
bool operator==(const Link &link) const
Equality operator: check paths only.
Definition
LinkManager.h:53
LinkManager::Link::ID
long ID() const
Link identifier.
Definition
LinkManager.h:62
LinkManager::Link::Link
Link()=default
Standard constructor for Root I/O.
LinkManager::Link::m_path
std::string m_path
String containing path of symbolic link.
Definition
LinkManager.h:40
LinkManager::Link::Link
Link(long id, std::string path, DataObject *pObject=nullptr)
Standard constructor.
Definition
LinkManager.h:48
LinkManager::Link::object
DataObject * object()
Definition
LinkManager.h:58
LinkManager::begin
auto begin() const
Definition
LinkManager.h:103
LinkManager::operator=
LinkManager & operator=(LinkManager const &)=delete
LinkManager::operator=
LinkManager & operator=(LinkManager &&)=default
LinkManager::m_linkVector
std::vector< Link * > m_linkVector
@ TODO: replace by std::vector<std::unique_ptr<Link>> once ROOT does 'automatic' schema conversion fr...
Definition
LinkManager.h:76
LinkManager::size
long size() const
Retrieve number of link present.
Definition
LinkManager.h:88
LinkManager::link
const Link * link(long id) const
Retrieve symbolic link identified by ID.
Definition
LinkManager.cpp:40
LinkManager::LinkManager
LinkManager(LinkManager const &)=delete
LinkManager::empty
bool empty() const
Definition
LinkManager.h:89
LinkManager::end
auto end() const
Definition
LinkManager.h:102
LinkManager::LinkManager
LinkManager(LinkManager &&)=default
LinkManager::DirLinkType
DirLinkType
Directory link types.
Definition
LinkManager.h:32
LinkManager::VALID
@ VALID
Definition
LinkManager.h:32
LinkManager::INVALID
@ INVALID
Definition
LinkManager.h:32
LinkManager::LinkManager
LinkManager()=default
Standard Constructor.
std
STL namespace.
GaudiKernel
include
GaudiKernel
LinkManager.h
Generated on
for The Gaudi Framework by
1.17.0