14#ifndef SIMICS_SYSTEMC_IFACE_EXTENSION_H
15#define SIMICS_SYSTEMC_IFACE_EXTENSION_H
37template<
typename TExtension,
typename TInterface>
38class Extension :
public tlm::tlm_extension<TExtension>,
public TInterface {
44 tlm::tlm_generic_payload *payload) {
80 t->clear_extension(e);
97 tlm::tlm_extension_base *
clone()
const override {
98 return new TExtension(*
static_cast<const TExtension *
>(
this));
100 void copy_from(tlm::tlm_extension_base
const &extension)
override {
101 *
this =
static_cast<const TExtension &
>(extension);
112 virtual void call(TInterface *device) = 0;
Definition: extension_ignore_receiver.h:27
Receiver of protocol specific extensions.
Definition: extension_receiver.h:35
Interface used by Extension class to send the extension.
Definition: extension_sender_interface.h:24
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:38
tlm::tlm_extension_base * clone() const override
Definition: extension.h:97
bool valid_
Definition: extension.h:121
types::AnyType method_type()
Definition: extension.h:91
void method_call_ignore()
Definition: extension.h:88
int method_call_count_
Definition: extension.h:119
void method_call(TInterface *device)
Definition: extension.h:83
static ReceiverInterface * createIgnoreReceiver()
Definition: extension.h:106
ExtensionSenderInterface * sender_
Definition: extension.h:114
types::AnyType method_return_error_
Definition: extension.h:118
static ReceiverInterface * createReceiver(TInterface *device)
Definition: extension.h:103
void init(ExtensionSenderInterface *sender, tlm::tlm_generic_payload *payload)
Deprecated, use the init(ExtensionSenderInterface *sender) instead.
Definition: extension.h:43
virtual ~Extension()
Definition: extension.h:109
types::AnyType method_return_
Definition: extension.h:117
void copy_from(tlm::tlm_extension_base const &extension) override
Definition: extension.h:100
bool suppress_error_
Definition: extension.h:120
virtual void call(TInterface *device)=0
bool valid()
Definition: extension.h:94
void send()
Definition: extension.h:50
std::vector< types::AnyType > method_input_
Definition: extension.h:116
types::AnyType method_
Definition: extension.h:115
void init(ExtensionSenderInterface *sender)
Definition: extension.h:47
Extension()
Definition: extension.h:40
Interface implemented by the ExtensionReceiver class, used by the ExtensionDispatcher.
Definition: receiver_interface.h:27
Class that encapsulates a generic_payload and returns it to the TransactionPool when the Transaction ...
Definition: transaction.h:29
Generic type class.
Definition: any_type.h:24
bool isSet()
Definition: any_type.h:93