ATLAS Offline Software
Loading...
Searching...
No Matches
MultipleProxyLoader.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
6// MultipleProxyLoader.h, (c) ATLAS Detector software
8// Author: Thomas Gillam (thomas.gillam@cern.ch)
9// ExpressionParsing library
11
12#ifndef MULTIPLE_PROXY_LOADER_H
13#define MULTIPLE_PROXY_LOADER_H
14
19
20#include <vector>
21#include <map>
22#include <utility>
23
24namespace ExpressionParsing {
26 public:
28 virtual ~MultipleProxyLoader();
29
30 IProxyLoader* push_back(std::unique_ptr<IProxyLoader> proxyLoader);
31
32 virtual void reset() override;
33 virtual IAccessor::VariableType variableType(const std::string &var_name) const override;
34
35 virtual std::pair< IAccessor::VariableType, const IAccessor &>
36 getAccessorFromString(const EventContext &ctx, const std::string &varname) const override;
37
38 virtual int loadInt(const EventContext& ctx,const std::string &varname) const override;
39 virtual double loadDouble(const EventContext& ctx,const std::string &varname) const override;
40 virtual std::vector<int> loadVecInt(const EventContext& ctx,const std::string &varname) const override;
41 virtual std::vector<double> loadVec(const EventContext& ctx,const std::string &varname) const override;
42
43 private:
44 std::vector<std::unique_ptr<IProxyLoader> > m_proxyLoaders;
45
47 mutable proxyCache_t m_varnameToProxyLoader ATLAS_THREAD_SAFE;
48 };
49}
50
51#endif // MULTIPLE_PROXY_LOADER_H
Hash map from strings allowing concurrent, lockless reads.
Simple (non-deleting) Updater implementation.
Define macros for attributes used to control the static checker.
Hash map from strings allowing concurrent, lockless reads.
virtual double loadDouble(const EventContext &ctx, const std::string &varname) const override
proxyCache_t m_varnameToProxyLoader ATLAS_THREAD_SAFE
IProxyLoader * push_back(std::unique_ptr< IProxyLoader > proxyLoader)
virtual std::pair< IAccessor::VariableType, const IAccessor & > getAccessorFromString(const EventContext &ctx, const std::string &varname) const override
std::vector< std::unique_ptr< IProxyLoader > > m_proxyLoaders
virtual std::vector< double > loadVec(const EventContext &ctx, const std::string &varname) const override
virtual IAccessor::VariableType variableType(const std::string &var_name) const override
virtual std::vector< int > loadVecInt(const EventContext &ctx, const std::string &varname) const override
virtual int loadInt(const EventContext &ctx, const std::string &varname) const override
CxxUtils::ConcurrentStrMap< const IAccessor *, CxxUtils::SimpleUpdater > proxyCache_t
Namespace holding all the expression evaluation code.