16#ifndef SIMICS_SYSTEMC_INJECTION_EXTENSION_EXTENSION_SETTER_H
17#define SIMICS_SYSTEMC_INJECTION_EXTENSION_EXTENSION_SETTER_H
33template <
typename TPAYLOAD,
typename TExtension>
37 : gp_at_call_(gp), extension_at_call_(NULL) {
38 extension_.init(
this);
41 if (extension_at_call_) {
42 gp_at_call_->resize_extensions();
43 delete gp_at_call_->set_extension(extension_at_call_);
56 TExtension *e = (*transaction)->get_extension<TExtension>();
58 if (extension_at_call_)
59 delete extension_at_call_;
61 extension_at_call_ =
static_cast<TExtension *
>(e->clone());
67 TPAYLOAD *gp_at_call_;
68 TExtension extension_;
69 TExtension *extension_at_call_;
Interface used by Extension class to send the extension.
Definition: extension_sender_interface.h:26
Class that encapsulates a generic_payload and returns it to the TransactionPool when the Transaction ...
Definition: transaction.h:31
Definition: extension_setter.h:34
virtual ~ExtensionSetter()
Definition: extension_setter.h:40
ExtensionSetter & operator=(const ExtensionSetter &other)=delete
ExtensionSetter(const ExtensionSetter &other)=delete
virtual void send_failed(iface::Transaction *transaction)
Called by extension if method_call invocation was missing.
Definition: extension_setter.h:63
ExtensionSetter(TPAYLOAD *gp)
Definition: extension_setter.h:36
virtual void send_extension(iface::Transaction *transaction)
Called by extension after the extension is set on the payload.
Definition: extension_setter.h:55
TExtension * operator->()
Definition: extension_setter.h:49
virtual iface::Transaction transaction()
Called by extension to get a new Transaction.
Definition: extension_setter.h:52