14#ifndef SIMICS_SYSTEMC_IFACE_CONCURRENCY_GROUP_SIMICS_ADAPTER_H
15#define SIMICS_SYSTEMC_IFACE_CONCURRENCY_GROUP_SIMICS_ADAPTER_H
17#include <simics/model-iface/concurrency.h>
20#include <simics/attribute-traits.h>
30template<
typename TBase,
typename TInterface = ConcurrencyGroupInterface>
36 CONCURRENCY_GROUP_INTERFACE, init_iface()) {}
40 unsigned group_index) {
41 std::vector<conf_object_t *> v = adapter<TBase, TInterface>(
42 obj)->serialized_memory_group(group_index);
43 return vectorToList(v);
46 unsigned group_index) {
47 std::vector<conf_object_t *> v = adapter<TBase, TInterface>(
48 obj)->execution_group(group_index);
49 return vectorToList(v);
53 static attr_value_t vectorToList(
const std::vector<conf_object_t *> &v) {
55 return SIM_make_attr_nil();
56 return simics::std_to_attr(
57 std::vector<simics::ConfObjectRef>(v.begin(), v.end()));
59 std::vector<std::string> description(conf_object_t *obj,
61 return descriptionBase<TBase, TInterface>(obj, type);
63 concurrency_group_interface_t init_iface() {
64 concurrency_group_interface_t iface = {};
Adapter for concurrency mode interface.
Definition: concurrency_group_simics_adapter.h:32
static attr_value_t execution_group(conf_object_t *NOTNULL obj, unsigned group_index)
Definition: concurrency_group_simics_adapter.h:45
ConcurrencyGroupSimicsAdapter()
Definition: concurrency_group_simics_adapter.h:34
static attr_value_t serialized_memory_group(conf_object_t *NOTNULL obj, unsigned group_index)
Definition: concurrency_group_simics_adapter.h:39
Base class for mapping Simics interface to a C++ interface.
Definition: simics_adapter.h:45
DescriptionType
Definition: description_interface.h:23