14#ifndef SIMICS_SYSTEMC_IFACE_SC_VERSION_SIMICS_ADAPTER_H
15#define SIMICS_SYSTEMC_IFACE_SC_VERSION_SIMICS_ADAPTER_H
17#include <simics/base/attr-value.h>
21#include <systemc-interfaces.h>
32template<
typename TBase,
typename TInterface = ScVersionInterface>
36 SC_VERSION_INTERFACE, init_iface()) {
41 return adapter<TBase, TInterface>(obj)->kernel_version();
44 return adapter<TBase, TInterface>(obj)->library_version();
47 return adapter<TBase, TInterface>(obj)->library_kernel_version();
49 static attr_value_t
versions(conf_object_t *obj) {
50 const std::map<std::string, std::string> *v =
51 adapter<TBase, TInterface>(obj)->versions();
53 attr_value_t dict = SIM_alloc_attr_dict(v->size());
54 for (
const auto &entry : *v) {
55 SIM_attr_dict_set_item(&dict, idx,
56 SIM_make_attr_string(entry.first.c_str()),
57 SIM_make_attr_string(entry.second.c_str()));
64 std::vector<std::string> description(conf_object_t *obj,
66 return descriptionBase<TBase, TInterface>(obj, type);
68 sc_version_interface_t init_iface() {
69 sc_version_interface_t iface = {};
Definition: sc_version_simics_adapter.h:33
static attr_value_t versions(conf_object_t *obj)
Definition: sc_version_simics_adapter.h:49
static const char * kernel_version(conf_object_t *obj)
Definition: sc_version_simics_adapter.h:40
ScVersionSimicsAdapter()
Definition: sc_version_simics_adapter.h:35
static const char * library_version(conf_object_t *obj)
Definition: sc_version_simics_adapter.h:43
static const char * library_kernel_version(conf_object_t *obj)
Definition: sc_version_simics_adapter.h:46
Base class for mapping Simics interface to a C++ interface.
Definition: simics_adapter.h:45
DescriptionType
Definition: description_interface.h:23