The Gaudi Framework
master (42b00024)
Main Page
Related Pages
Modules
Namespaces
Namespace List
Namespace Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
x
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
Typedefs
a
b
c
d
e
f
h
i
l
m
o
p
r
s
t
u
v
w
x
Enumerations
Enumerator
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
y
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
:
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
Enumerations
a
c
d
e
f
i
l
m
n
o
p
q
r
s
t
v
Enumerator
a
b
c
d
e
f
i
j
k
l
m
n
o
p
r
s
t
u
v
w
Properties
Related Functions
:
a
b
c
d
e
g
h
i
m
o
p
r
s
t
v
Files
File List
File Members
All
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Functions
_
b
c
e
f
g
h
i
l
m
o
p
r
s
t
u
z
Variables
a
b
c
d
e
g
h
i
m
o
p
q
r
s
t
v
x
Typedefs
_
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
w
Enumerations
Enumerator
Macros
_
a
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Modules
Pages
IBinder.h
Go to the documentation of this file.
1
/*****************************************************************************\
2
* (c) Copyright 2021-2025 CERN for the benefit of the LHCb Collaboration *
3
* *
4
* This software is distributed under the terms of the GNU General Public *
5
* Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". *
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
#include <
GaudiKernel/IAlgTool.h
>
13
#include <
GaudiKernel/IInterface.h
>
14
#include <type_traits>
15
#include <utility>
16
17
class
EventContext
;
18
19
namespace
Gaudi::Interface::Bind
{
20
21
template
<
typename
IFace>
22
class
Box
final {
23
const
IFace*
m_ptr
=
nullptr
;
24
bool
m_owned
=
false
;
25
26
public
:
27
// identity binding: no actual binding is required...
28
Box
( IFace
const
* ptr ) :
m_ptr
{ ptr } { assert(
m_ptr
!=
nullptr
); }
29
// bind the arguments...
30
template
<std::derived_from<IFace> Ret,
typename
... Args>
31
Box
( std::in_place_type_t<Ret>, Args&&...
args
)
32
:
m_ptr
{
new
Ret{ std::forward<Args>(
args
)... } },
m_owned
{
true
} {}
33
34
~Box
() {
35
if
(
m_owned
)
delete
m_ptr
;
36
}
37
Box
(
const
Box
& ) =
delete
;
38
Box
&
operator=
(
const
Box
& ) =
delete
;
39
Box
(
Box
&& rhs ) =
delete
;
40
Box
&
operator=
(
Box
&& ) =
delete
;
41
42
operator
IFace
const
&()
const
{
return
*
m_ptr
; }
43
// operator IFace&() && = delete;
44
};
45
46
template
<
typename
IFace>
47
struct
IBinder
:
extend_interfaces
<IAlgTool> {
48
DeclareInterfaceID
(
IBinder
, 1, 0 );
49
virtual
Box<IFace>
bind
(
const
EventContext
&
ctx
)
const
= 0;
50
};
51
52
template
<
typename
IFace>
53
struct
AlgToolStub
: IFace {
54
55
using
IFace::IFace;
56
AlgToolStub
(
const
AlgToolStub
& ) =
delete
;
57
AlgToolStub
&
operator=
(
const
AlgToolStub
& ) =
delete
;
58
AlgToolStub
(
AlgToolStub
&& ) =
delete
;
59
AlgToolStub
&
operator=
(
AlgToolStub
&& ) =
delete
;
60
61
const
std::string&
name
()
const override
{
62
static
std::string
s
{
"<STUB>"
};
63
return
s
;
64
}
65
const
std::string&
type
()
const override
{
return
name
(); }
66
const
IInterface
*
parent
()
const override
{
return
nullptr
; }
67
68
StatusCode
configure
()
override
{
return
StatusCode::FAILURE
; }
69
StatusCode
initialize
()
override
{
return
StatusCode::FAILURE
; }
70
StatusCode
start
()
override
{
return
StatusCode::FAILURE
; }
71
StatusCode
stop
()
override
{
return
StatusCode::FAILURE
; }
72
StatusCode
finalize
()
override
{
return
StatusCode::FAILURE
; }
73
StatusCode
terminate
()
override
{
return
StatusCode::FAILURE
; }
74
StatusCode
reinitialize
()
override
{
return
StatusCode::FAILURE
; }
75
StatusCode
restart
()
override
{
return
StatusCode::FAILURE
; }
76
Gaudi::StateMachine::State
FSMState
()
const override
{
return
Gaudi::StateMachine::RUNNING
; }
77
StatusCode
sysInitialize
()
override
{
return
StatusCode::FAILURE
; }
78
StatusCode
sysStart
()
override
{
return
StatusCode::FAILURE
; }
79
StatusCode
sysStop
()
override
{
return
StatusCode::FAILURE
; }
80
StatusCode
sysFinalize
()
override
{
return
StatusCode::FAILURE
; }
81
StatusCode
sysReinitialize
()
override
{
return
StatusCode::FAILURE
; }
82
StatusCode
sysRestart
()
override
{
return
StatusCode::FAILURE
; }
83
};
84
85
template
<
typename
IFace>
86
struct
Stub
:
implements
<AlgToolStub<IFace>> {};
87
88
}
// namespace Gaudi::Interface::Bind
Gaudi::Interface::Bind::Box::operator=
Box & operator=(const Box &)=delete
Gaudi::Interface::Bind::AlgToolStub::operator=
AlgToolStub & operator=(const AlgToolStub &)=delete
Gaudi::Interface::Bind::Box::Box
Box(Box &&rhs)=delete
Gaudi::Interface::Bind::AlgToolStub::sysStart
StatusCode sysStart() override
Definition:
IBinder.h:78
Gaudi::Interface::Bind::Box::m_ptr
const IFace * m_ptr
Definition:
IBinder.h:23
gaudirun.s
string s
Definition:
gaudirun.py:346
Gaudi::Interface::Bind::Box
Definition:
IBinder.h:22
extend_interfaces
Base class to be used to extend an interface.
Definition:
extend_interfaces.h:15
Gaudi::Interface::Bind::AlgToolStub::stop
StatusCode stop() override
Definition:
IBinder.h:71
Gaudi::Interface::Bind::AlgToolStub::type
const std::string & type() const override
Definition:
IBinder.h:65
Gaudi::Interface::Bind::AlgToolStub::finalize
StatusCode finalize() override
Definition:
IBinder.h:72
Gaudi::Interface::Bind::Box::Box
Box(std::in_place_type_t< Ret >, Args &&... args)
Definition:
IBinder.h:31
Gaudi::Interface::Bind::Box::operator=
Box & operator=(Box &&)=delete
Gaudi::StateMachine::State
State
Allowed states for classes implementing the state machine (ApplicationMgr, Algorithm,...
Definition:
StateMachine.h:22
Gaudi::Interface::Bind::AlgToolStub::AlgToolStub
AlgToolStub(AlgToolStub &&)=delete
GaudiPython.Pythonizations.ctx
ctx
Definition:
Pythonizations.py:578
StatusCode
Definition:
StatusCode.h:65
IInterface.h
Gaudi::Interface::Bind
Definition:
IBinder.h:19
Gaudi::Interface::Bind::AlgToolStub::sysReinitialize
StatusCode sysReinitialize() override
Definition:
IBinder.h:81
IAlgTool.h
Gaudi::Interface::Bind::AlgToolStub::reinitialize
StatusCode reinitialize() override
Definition:
IBinder.h:74
Gaudi::Interface::Bind::AlgToolStub::FSMState
Gaudi::StateMachine::State FSMState() const override
Definition:
IBinder.h:76
Gaudi::Interface::Bind::AlgToolStub::configure
StatusCode configure() override
Definition:
IBinder.h:68
Gaudi::Interface::Bind::AlgToolStub::terminate
StatusCode terminate() override
Definition:
IBinder.h:73
Gaudi::Interface::Bind::AlgToolStub::parent
const IInterface * parent() const override
Definition:
IBinder.h:66
Gaudi::Interface::Bind::AlgToolStub::start
StatusCode start() override
Definition:
IBinder.h:70
Gaudi::Interface::Bind::IBinder::DeclareInterfaceID
DeclareInterfaceID(IBinder, 1, 0)
Gaudi::StateMachine::RUNNING
@ RUNNING
Definition:
StateMachine.h:26
Gaudi::Interface::Bind::Stub
Definition:
IBinder.h:86
Gaudi::Interface::Bind::Box::Box
Box(const Box &)=delete
Gaudi::Interface::Bind::Box::m_owned
bool m_owned
Definition:
IBinder.h:24
Gaudi::Interface::Bind::AlgToolStub::initialize
StatusCode initialize() override
Definition:
IBinder.h:69
implements
Base class used to implement the interfaces.
Definition:
implements.h:19
Gaudi::Interface::Bind::Box::Box
Box(IFace const *ptr)
Definition:
IBinder.h:28
Gaudi::Interface::Bind::AlgToolStub
Definition:
IBinder.h:53
Gaudi::Interface::Bind::IBinder::bind
virtual Box< IFace > bind(const EventContext &ctx) const =0
Gaudi::Interface::Bind::AlgToolStub::operator=
AlgToolStub & operator=(AlgToolStub &&)=delete
gaudirun.args
args
Definition:
gaudirun.py:336
IInterface
Definition:
IInterface.h:226
EventContext
Definition:
EventContext.h:34
Gaudi::Interface::Bind::AlgToolStub::sysStop
StatusCode sysStop() override
Definition:
IBinder.h:79
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition:
StatusCode.h:101
Gaudi::Interface::Bind::AlgToolStub::sysFinalize
StatusCode sysFinalize() override
Definition:
IBinder.h:80
Gaudi::Interface::Bind::AlgToolStub::name
const std::string & name() const override
Definition:
IBinder.h:61
Gaudi::Interface::Bind::AlgToolStub::sysRestart
StatusCode sysRestart() override
Definition:
IBinder.h:82
Gaudi::Interface::Bind::AlgToolStub::sysInitialize
StatusCode sysInitialize() override
Definition:
IBinder.h:77
Gaudi::Interface::Bind::AlgToolStub::restart
StatusCode restart() override
Definition:
IBinder.h:75
Gaudi::Interface::Bind::IBinder
Definition:
IBinder.h:47
Gaudi::Interface::Bind::AlgToolStub::AlgToolStub
AlgToolStub(const AlgToolStub &)=delete
Gaudi::Interface::Bind::Box::~Box
~Box()
Definition:
IBinder.h:34
GaudiKernel
include
GaudiKernel
IBinder.h
Generated on Sat Jun 7 2025 08:04:00 for The Gaudi Framework by
1.8.18