The Gaudi Framework  master (b9786168)
Loading...
Searching...
No Matches
IDataStoreAgent.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 <functional>
15
16class IRegistry;
17
25public:
27 virtual ~IDataStoreAgent() = default;
28
32 virtual bool analyse( IRegistry* pObject, int level ) = 0;
33};
34
35namespace details {
36 template <typename F>
38 F f;
39
40 public:
41 template <typename G>
42 GenericDataStoreAgent( G&& g ) : f{ std::forward<G>( g ) } {}
43
44 bool analyse( IRegistry* pObj, int level ) override { return std::invoke( f, pObj, level ); }
45 };
46} // namespace details
47
48template <typename F>
50 return { std::forward<F>( f ) };
51}
::details::GenericDataStoreAgent< F > makeDataStoreAgent(F &&f)
#define GAUDI_API
Definition Kernel.h:49
Generic data agent interface.
virtual ~IDataStoreAgent()=default
destructor
virtual bool analyse(IRegistry *pObject, int level)=0
Analyse the data object.
The IRegistry represents the entry door to the environment any data object residing in a transient da...
Definition IRegistry.h:29
bool analyse(IRegistry *pObj, int level) override
Analyse the data object.
STL namespace.