14#ifndef SIMICS_SYSTEMC_INJECTION_EXTENSION_EXTENSION_SETTER_H
15#define SIMICS_SYSTEMC_INJECTION_EXTENSION_EXTENSION_SETTER_H
31template <
typename TPAYLOAD,
typename TExtension>
35 : gp_at_call_(gp), extension_at_call_(NULL) {
36 extension_.init(
this);
39 if (extension_at_call_) {
40 gp_at_call_->resize_extensions();
41 delete gp_at_call_->set_extension(extension_at_call_);
54 TExtension *e = (*transaction)->get_extension<TExtension>();
56 if (extension_at_call_)
57 delete extension_at_call_;
59 extension_at_call_ =
static_cast<TExtension *
>(e->clone());
65 TPAYLOAD *gp_at_call_;
66 TExtension extension_;
67 TExtension *extension_at_call_;
Interface used by Extension class to send the extension.
Definition: extension_sender_interface.h:24
Class that encapsulates a generic_payload and returns it to the TransactionPool when the Transaction ...
Definition: transaction.h:29
Definition: extension_setter.h:32
iface::Transaction transaction() override
Called by extension to get a new Transaction.
Definition: extension_setter.h:50
virtual ~ExtensionSetter()
Definition: extension_setter.h:38
ExtensionSetter & operator=(const ExtensionSetter &other)=delete
ExtensionSetter(const ExtensionSetter &other)=delete
ExtensionSetter(TPAYLOAD *gp)
Definition: extension_setter.h:34
void send_failed(iface::Transaction *transaction) override
Called by extension if method_call invocation was missing.
Definition: extension_setter.h:61
TExtension * operator->()
Definition: extension_setter.h:47
void send_extension(iface::Transaction *transaction) override
Called by extension after the extension is set on the payload.
Definition: extension_setter.h:53