14#ifndef SIMICS_SYSTEMC_INJECTION_INJECT_BASE_H
15#define SIMICS_SYSTEMC_INJECTION_INJECT_BASE_H
30#define INJECT_SET_VALUE(setter, type, extension) \
31 if (key == #setter) { \
34 if (!parser->value(&v)) { \
37 this->template get_extension<extension>(gp)->setter(v); \
42template <
typename TPAYLOAD>
48 attr_value_t *attr, TPAYLOAD *gp) = 0;
55 attr_value_t *attr)
override {
56 return setValue(parser, key, attr, gp_);
60 T *t = gp->template get_extension<T>();
66 gp->set_extension(
new T);
67 return gp->template get_extension<T>();
Definition: registry.h:86
Definition: attr_dict_parser.h:38
bool parse(ParserInterface *parser)
Definition: inject_base.h:43
virtual bool setValue(AttrDictParser *parser, const std::string &key, attr_value_t *attr, TPAYLOAD *gp)=0
InjectBase()
Definition: inject_base.h:45
void released(TPAYLOAD *gp) override
Definition: inject_base.h:53
void attrToValue(AttrDictParser *parser, TPAYLOAD *gp) override
Definition: inject_base.h:49
virtual ~InjectBase()
Definition: inject_base.h:46
T * get_extension(TPAYLOAD *gp)
Definition: inject_base.h:59
bool parse(AttrDictParser *parser, const std::string &key, attr_value_t *attr) override
Definition: inject_base.h:54