The Gaudi Framework
v41r0 (bdbe7744)
Toggle main menu visibility
Loading...
Searching...
No Matches
RenounceToolInputsVisitor.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
#include <
GaudiKernel/DataObjID.h
>
13
#include <
GaudiKernel/ToolVisitor.h
>
14
#include <functional>
15
#include <string>
16
#include <type_traits>
17
#include <vector>
18
19
#ifndef USAGE_IS_THREAD_SAFE
20
# define USAGE_IS_THREAD_SAFE
21
#endif
22
23
class
IAlgTool
;
24
27
class
RenounceToolInputsVisitor
{
28
public
:
31
struct
ILogger
{
32
virtual
~ILogger
() =
default
;
33
virtual
void
renounce
( std::string_view tool_name, std::string_view key ) = 0;
34
};
35
38
struct
NoLogger
:
ILogger
{
39
void
renounce
( std::string_view, std::string_view )
override
{}
40
};
41
42
class
Logger
final :
public
ILogger
{
43
std::function<void( std::string_view, std::string_view )>
m_func
;
44
45
public
:
46
template
<std::invocable<std::
string
_view, std::
string
_view> F>
47
Logger
( F func ) :
m_func
(
std
::move( func ) ) {}
48
void
renounce
( std::string_view tool_name, std::string_view key )
override
{
m_func
( tool_name, key ); }
49
};
50
58
static
Logger
createLogger
( std::function<
void
( std::string_view, std::string_view )> func ) {
59
return
Logger
{ std::move( func ) };
60
}
61
68
RenounceToolInputsVisitor
( std::vector<DataObjID> input_keys,
ILogger
& logger = s_noLogger )
69
:
m_renounceKeys
(
std
::move( input_keys ) )
70
,
m_logger
( &logger )
// @TODO possible source of use after delete
71
{}
72
73
void
operator()
(
IAlgTool
* );
74
75
private
:
76
std::vector<DataObjID>
m_renounceKeys
;
77
ILogger
*
m_logger
;
78
79
static
NoLogger
s_noLogger
USAGE_IS_THREAD_SAFE
;
80
};
DataObjID.h
ToolVisitor.h
IAlgTool
The interface implemented by the AlgTool base class.
Definition
IAlgTool.h:29
RenounceToolInputsVisitor::Logger
Definition
RenounceToolInputsVisitor.h:42
RenounceToolInputsVisitor::Logger::Logger
Logger(F func)
Definition
RenounceToolInputsVisitor.h:47
RenounceToolInputsVisitor::Logger::m_func
std::function< void(std::string_view, std::string_view)> m_func
Definition
RenounceToolInputsVisitor.h:43
RenounceToolInputsVisitor::Logger::renounce
void renounce(std::string_view tool_name, std::string_view key) override
Definition
RenounceToolInputsVisitor.h:48
RenounceToolInputsVisitor::USAGE_IS_THREAD_SAFE
static NoLogger s_noLogger USAGE_IS_THREAD_SAFE
Definition
RenounceToolInputsVisitor.h:79
RenounceToolInputsVisitor::m_renounceKeys
std::vector< DataObjID > m_renounceKeys
Definition
RenounceToolInputsVisitor.h:76
RenounceToolInputsVisitor::RenounceToolInputsVisitor
RenounceToolInputsVisitor(std::vector< DataObjID > input_keys, ILogger &logger=s_noLogger)
construct the renounce visitor helper object
Definition
RenounceToolInputsVisitor.h:68
RenounceToolInputsVisitor::createLogger
static Logger createLogger(std::function< void(std::string_view, std::string_view)> func)
Create a logger from a function.
Definition
RenounceToolInputsVisitor.h:58
RenounceToolInputsVisitor::operator()
void operator()(IAlgTool *)
Definition
RenounceToolInputsVisitor.cpp:15
RenounceToolInputsVisitor::m_logger
ILogger * m_logger
Definition
RenounceToolInputsVisitor.h:77
std
STL namespace.
RenounceToolInputsVisitor::ILogger
Helper class interface to optionally log renounce operations.
Definition
RenounceToolInputsVisitor.h:31
RenounceToolInputsVisitor::ILogger::~ILogger
virtual ~ILogger()=default
RenounceToolInputsVisitor::ILogger::renounce
virtual void renounce(std::string_view tool_name, std::string_view key)=0
RenounceToolInputsVisitor::NoLogger
A do-nothing helper class which implements the logger interface.
Definition
RenounceToolInputsVisitor.h:38
RenounceToolInputsVisitor::NoLogger::renounce
void renounce(std::string_view, std::string_view) override
Definition
RenounceToolInputsVisitor.h:39
GaudiKernel
include
GaudiKernel
RenounceToolInputsVisitor.h
Generated on
for The Gaudi Framework by
1.17.0