4#ifndef _ExpressionEvaluation_GenAccessor_h_
5#define _ExpressionEvaluation_GenAccessor_h_
21 template <
class T_Dest,
class T_Cont,
class T_Helper>
24 result.push_back(
static_cast<T_Dest
>( helper.get( *handle ) ));
27 template <
class T_Dest,
class T_Cont,
class T_Helper>
30 return static_cast<T_Dest
>( helper.get( *handle ) );
38 template <
class T_Dest,
class T_Cont,
class T_Helper>
40 std::size_t n_elements=helper.size(*handle);
42 result.reserve(n_elements);
43 for(std::size_t idx =0; idx <n_elements; ++idx) {
44 result.push_back(
static_cast<T_Dest
>( helper.get(*handle, idx)) );
47 template <
class T_Dest,
class T_Cont,
class T_Helper>
54 return static_cast<T_Dest
>( helper.get(*handle, 0));
62 template <
class T_Cont,
class T_HelperKit,
class T_ScalarVectorHelper>
71 virtual int loadInt(
const EventContext& ctx)
const override {
74 virtual double loadDouble(
const EventContext& ctx)
const override {
77 virtual std::vector<int>
loadVecInt(
const EventContext& ctx)
const override {
80 virtual std::vector<double>
loadVec(
const EventContext& ctx)
const override {
84 template <
class T_Dest>
85 std::vector<T_Dest>
loadVector(
const EventContext& ctx)
const {
90 std::vector<T_Dest>
result;
93 T_ScalarVectorHelper::fillVector(helper, handle,
result);
98 template <
class T_Dest>
106 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.
BaseAccessor(IProxyLoader::VariableType variable_type)
static void throwVectorContainsNotOneElement(const std::string &key, std::size_t n_elements)
static void throwInvalidHandle(const std::string &key)
virtual std::vector< double > loadVec(const EventContext &ctx) const override
virtual double loadDouble(const EventContext &ctx) const override
virtual std::vector< int > loadVecInt(const EventContext &ctx) const override
GenAccessor(const SG::ReadHandleKey< T_Cont > &key, T_HelperKit &&helper_kit, IProxyLoader::VariableType variable_type)
const SG::ReadHandleKey< T_Cont > * m_key
virtual int loadInt(const EventContext &ctx) const override
std::vector< T_Dest > loadVector(const EventContext &ctx) const
T_Dest loadScalar(const EventContext &ctx) const
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)