16#ifndef SIMICS_SYSTEMC_IFACE_SC_VERSION_SIMICS_ADAPTER_H
17#define SIMICS_SYSTEMC_IFACE_SC_VERSION_SIMICS_ADAPTER_H
19#include <simics/base/attr-value.h>
23#include <systemc-interfaces.h>
34template<
typename TBase,
typename TInterface = ScVersionInterface>
38 SC_VERSION_INTERFACE, init_iface()) {
43 return adapter<TBase, TInterface>(obj)->kernel_version();
46 return adapter<TBase, TInterface>(obj)->library_version();
49 return adapter<TBase, TInterface>(obj)->library_kernel_version();
51 static attr_value_t
versions(conf_object_t *obj) {
52 const std::map<std::string, std::string> *v =
53 adapter<TBase, TInterface>(obj)->versions();
55 std::map<std::string, std::string>::const_iterator i;
56 attr_value_t dict = SIM_alloc_attr_dict(v->size());
57 for (i = v->begin(); i != v->end(); ++i, ++idx) {
58 SIM_attr_dict_set_item(&dict, idx,
59 SIM_make_attr_string(i->first.c_str()),
60 SIM_make_attr_string(i->second.c_str()));
66 std::vector<std::string> description(conf_object_t *obj,
68 return descriptionBase<TBase, TInterface>(obj, type);
70 sc_version_interface_t init_iface() {
71 sc_version_interface_t iface = {};
Definition: sc_version_simics_adapter.h:35
static attr_value_t versions(conf_object_t *obj)
Definition: sc_version_simics_adapter.h:51
static const char * kernel_version(conf_object_t *obj)
Definition: sc_version_simics_adapter.h:42
ScVersionSimicsAdapter()
Definition: sc_version_simics_adapter.h:37
static const char * library_version(conf_object_t *obj)
Definition: sc_version_simics_adapter.h:45
static const char * library_kernel_version(conf_object_t *obj)
Definition: sc_version_simics_adapter.h:48
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