16#ifndef SIMICS_SYSTEMC_IFACE_EXTENSION_H
17#define SIMICS_SYSTEMC_IFACE_EXTENSION_H
39template<
typename TExtension,
typename TInterface>
40class Extension :
public tlm::tlm_extension<TExtension>,
public TInterface {
46 tlm::tlm_generic_payload *payload) {
82 t->clear_extension(e);
99 virtual tlm::tlm_extension_base *
clone()
const {
100 return new TExtension(*
static_cast<const TExtension *
>(
this));
102 virtual void copy_from(tlm::tlm_extension_base
const &extension) {
103 *
this =
static_cast<const TExtension &
>(extension);
114 virtual void call(TInterface *device) = 0;
Definition: extension_ignore_receiver.h:29
Receiver of protocol specific extensions.
Definition: extension_receiver.h:37
Interface used by Extension class to send the extension.
Definition: extension_sender_interface.h:26
virtual void send_failed(Transaction *transaction)=0
Called by extension if method_call invocation was missing.
virtual Transaction transaction()=0
Called by extension to get a new Transaction.
virtual void send_extension(Transaction *transaction)=0
Called by extension after the extension is set on the payload.
Base class for TLM2 extension, responsible for marshal/unmarshal of a Simics interface.
Definition: extension.h:40
bool valid_
Definition: extension.h:123
types::AnyType method_type()
Definition: extension.h:93
void method_call_ignore()
Definition: extension.h:90
int method_call_count_
Definition: extension.h:121
void method_call(TInterface *device)
Definition: extension.h:85
virtual void copy_from(tlm::tlm_extension_base const &extension)
Definition: extension.h:102
static ReceiverInterface * createIgnoreReceiver()
Definition: extension.h:108
ExtensionSenderInterface * sender_
Definition: extension.h:116
types::AnyType method_return_error_
Definition: extension.h:120
static ReceiverInterface * createReceiver(TInterface *device)
Definition: extension.h:105
void init(ExtensionSenderInterface *sender, tlm::tlm_generic_payload *payload)
Deprecated, use the init(ExtensionSenderInterface *sender) instead.
Definition: extension.h:45
virtual ~Extension()
Definition: extension.h:111
types::AnyType method_return_
Definition: extension.h:119
bool suppress_error_
Definition: extension.h:122
virtual void call(TInterface *device)=0
bool valid()
Definition: extension.h:96
virtual tlm::tlm_extension_base * clone() const
Definition: extension.h:99
void send()
Definition: extension.h:52
std::vector< types::AnyType > method_input_
Definition: extension.h:118
types::AnyType method_
Definition: extension.h:117
void init(ExtensionSenderInterface *sender)
Definition: extension.h:49
Extension()
Definition: extension.h:42
Interface implemented by the ExtensionReceiver class, used by the ExtensionDispatcher.
Definition: receiver_interface.h:29
Class that encapsulates a generic_payload and returns it to the TransactionPool when the Transaction ...
Definition: transaction.h:31
Generic type class.
Definition: any_type.h:25
bool isSet()
Definition: any_type.h:87
Definition: pci_bus_interface.h:24