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);
47 TExtension *e = (*transaction)->get_extension<TExtension>();
49 if (extension_at_call_)
50 delete extension_at_call_;
52 extension_at_call_ =
static_cast<TExtension *
>(e->clone());
56 if (extension_at_call_) {
57 gp_at_call_->resize_extensions();
58 delete gp_at_call_->set_extension(extension_at_call_);
64 TPAYLOAD *gp_at_call_;
65 TExtension extension_;
66 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:55
virtual void send_failed(iface::Transaction *transaction)
Called by extension if method_call invocation was missing.
Definition: extension_setter.h:54
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:46
TExtension * operator->()
Definition: extension_setter.h:40
virtual iface::Transaction transaction()
Called by extension to get a new Transaction.
Definition: extension_setter.h:43
Definition: pci_bus_interface.h:24