16#ifndef SIMICS_SYSTEMC_IFACE_SC_OBJECT_SIMICS_ADAPTER_H
17#define SIMICS_SYSTEMC_IFACE_SC_OBJECT_SIMICS_ADAPTER_H
22#include <systemc-interfaces.h>
32template<
typename TBase,
typename TInterface = ScObjectInterface>
37 SC_OBJECT_INTERFACE, init_iface()) {
41 static attr_value_t
sc_print(conf_object_t *obj) {
42 std::vector<std::string> lines =
43 adapter<TBase, TInterface>(obj)->sc_print();
45 return vectorToAttr(lines);
47 static attr_value_t
sc_dump(conf_object_t *obj) {
48 std::vector<std::string> lines
49 = adapter<TBase, TInterface>(obj)->sc_dump();
51 return vectorToAttr(lines);
53 static attr_value_t
sc_kind(conf_object_t *obj) {
54 return adapter<TBase, TInterface>(obj)->sc_kind();
56 static const char *
sc_name(conf_object_t *obj) {
57 return adapter<TBase, TInterface>(obj)->sc_name();
61 static attr_value_t vectorToAttr(
const std::vector<std::string> &lines) {
62 attr_value_t list = SIM_alloc_attr_list(lines.size());
63 for (
unsigned i = 0; i < lines.size(); ++i)
64 SIM_attr_list_set_item(&list, i,
65 SIM_make_attr_string(lines[i].c_str()));
69 std::vector<std::string> description(conf_object_t *obj,
71 return descriptionBase<TBase, TInterface>(obj, type);
73 sc_object_interface_t init_iface() {
74 sc_object_interface_t iface = {};
Definition: sc_object_simics_adapter.h:33
static const char * sc_name(conf_object_t *obj)
Definition: sc_object_simics_adapter.h:56
ScObjectSimicsAdapter()
Definition: sc_object_simics_adapter.h:35
static attr_value_t sc_print(conf_object_t *obj)
Definition: sc_object_simics_adapter.h:41
static attr_value_t sc_kind(conf_object_t *obj)
Definition: sc_object_simics_adapter.h:53
static attr_value_t sc_dump(conf_object_t *obj)
Definition: sc_object_simics_adapter.h:47
Base class for mapping Simics interface to a C++ interface.
Definition: simics_adapter.h:47
DescriptionType
Definition: description_interface.h:25
Definition: pci_bus_interface.h:24