4#ifndef _ExpressionEvaluation_GenAccessor_h_
5#define _ExpressionEvaluation_GenAccessor_h_
21 template <
class T_Dest,
class T_Cont,
class T_Helper>
24 auto val = helper.get( *handle );
26 assert( val ==
static_cast<decltype(val)
>(
static_cast<T_Dest
>(val)));
27 result.push_back(
static_cast<T_Dest
>(val));
30 template <
class T_Dest,
class T_Cont,
class T_Helper>
33 auto val = helper.get( *handle );
35 assert( val ==
static_cast<decltype(val)
>(
static_cast<T_Dest
>(val)));
36 return static_cast<T_Dest
>( val );
44 template <
class T_Dest,
class T_Cont,
class T_Helper>
46 std::size_t n_elements=helper.size(*handle);
48 result.reserve(n_elements);
49 for(std::size_t idx =0; idx <n_elements; ++idx) {
50 auto val = helper.get(*handle, idx);
52 assert( val ==
static_cast<decltype(val)
>(
static_cast<T_Dest
>(val)));
53 result.push_back(
static_cast<T_Dest
>( val ) );
56 template <
class T_Dest,
class T_Cont,
class T_Helper>
62 auto val = helper.get(*handle, 0);
64 assert( val ==
static_cast<decltype(val)
>(
static_cast<T_Dest
>(val)));
65 return static_cast<T_Dest
>(val);
73 template <
class T_Cont,
class T_HelperKit,
class T_ScalarVectorHelper>
82 virtual int loadInt(
const EventContext& ctx, [[maybe_unused]]
const std::string &var_name)
const override {
85 virtual double loadDouble(
const EventContext& ctx, [[maybe_unused]]
const std::string &var_name)
const override {
88 virtual std::vector<int>
loadVecInt(
const EventContext& ctx, [[maybe_unused]]
const std::string &var_name)
const override {
91 virtual std::vector<double>
loadVec(
const EventContext& ctx, [[maybe_unused]]
const std::string &var_name)
const override {
95 template <
class T_Dest>
96 std::vector<T_Dest>
loadVector(
const EventContext& ctx)
const {
101 std::vector<T_Dest>
result;
104 T_ScalarVectorHelper::fillVector(helper, handle,
result);
109 template <
class T_Dest>
117 return T_ScalarVectorHelper::getScalar(helper, handle, dummy);
Property holding a SG store/key/clid from which a ReadHandle is made.
Handle class for reading from StoreGate.
static void throwVectorContainsNotOneElement(const std::string &key, std::size_t n_elements)
BaseAccessor(IAccessor::VariableType variable_type)
static void throwInvalidHandle(const std::string &key)
GenAccessor(const SG::ReadHandleKey< T_Cont > &key, T_HelperKit &&helper_kit, IAccessor::VariableType variable_type)
virtual std::vector< double > loadVec(const EventContext &ctx, const std::string &var_name) const override
const SG::ReadHandleKey< T_Cont > * m_key
virtual int loadInt(const EventContext &ctx, const std::string &var_name) const override
virtual std::vector< int > loadVecInt(const EventContext &ctx, const std::string &var_name) const override
std::vector< T_Dest > loadVector(const EventContext &ctx) const
T_Dest loadScalar(const EventContext &ctx) const
virtual double loadDouble(const EventContext &ctx, const std::string &var_name) const override
Auxiliary class to handle scalar like containers (AuxElement).
static void fillVector(T_Helper &helper, SG::ReadHandle< T_Cont > &handle, std::vector< T_Dest > &result)
static T_Dest getScalar(T_Helper &helper, SG::ReadHandle< T_Cont > &handle, const T_Dest &dummy)
Auxiliary class to handle vector like containers (AuxVectorBase).
static void fillVector(T_Helper &helper, SG::ReadHandle< T_Cont > &handle, std::vector< T_Dest > &result)
static T_Dest getScalar(T_Helper &helper, SG::ReadHandle< T_Cont > &handle, const T_Dest &dummy)
Property holding a SG store/key/clid from which a ReadHandle is made.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
virtual const std::string & key() const override final
Return the StoreGate ID for the referenced object.
Namespace holding all the expression evaluation code.
std::size_t getContainerSize(const T &cont)