14#ifndef SIMICS_SYSTEMC_SC_SIGNAL_ACCESS_BASE_H
15#define SIMICS_SYSTEMC_SC_SIGNAL_ACCESS_BASE_H
23#define __SIMICS_SYSTEMC_SIGNAL_DECLARE_TRANSFORM(type) \
24bool attrToValue(const attr_value_t *attr, type *value) const; \
25attr_value_t valueToAttr(type value) const;
27#define __SIMICS_SYSTEMC_SIGNAL_COMMA ,
29#define __SIMICS_SYSTEMC_SIGNAL_WRITE_BASE(signal, type, obj, \
32 signal *s = dynamic_cast<signal *>(obj); \
35 if (set_func(value, &v)) { \
42#define SIMICS_SYSTEMC_SIGNAL_WRITE(type, obj, value, set_func) \
43__SIMICS_SYSTEMC_SIGNAL_WRITE_BASE(sc_core::sc_signal<type>, \
44 type, obj, value, set_func); \
45__SIMICS_SYSTEMC_SIGNAL_WRITE_BASE(sc_core::sc_signal<type \
46 __SIMICS_SYSTEMC_SIGNAL_COMMA \
47 sc_core::SC_MANY_WRITERS>, \
48 type, obj, value, set_func); \
49__SIMICS_SYSTEMC_SIGNAL_WRITE_BASE(sc_core::sc_out<type>, \
50 type, obj, value, set_func); \
51__SIMICS_SYSTEMC_SIGNAL_WRITE_BASE(sc_core::sc_inout<type>, \
52 type, obj, value, set_func);
54#define __SIMICS_SYSTEMC_SIGNAL_READ_BASE(signal, type, obj, \
57 const signal *s = dynamic_cast<const signal *>(obj); \
59 *value = get_func(s->read()); \
64#define SIMICS_SYSTEMC_SIGNAL_READ(type, obj, value, get_func) \
65__SIMICS_SYSTEMC_SIGNAL_READ_BASE(sc_core::sc_signal<type>, \
66 type, obj, value, get_func); \
67__SIMICS_SYSTEMC_SIGNAL_READ_BASE(sc_core::sc_signal<type \
68 __SIMICS_SYSTEMC_SIGNAL_COMMA \
69 sc_core::SC_MANY_WRITERS>, \
70 type, obj, value, get_func); \
71__SIMICS_SYSTEMC_SIGNAL_READ_BASE(sc_core::sc_in<type>, \
72 type, obj, value, get_func); \
73__SIMICS_SYSTEMC_SIGNAL_READ_BASE(sc_core::sc_inout<type>, \
74 type, obj, value, get_func);
Definition: registry.h:86
Definition: sc_signal_access_base.h:76
#define __SIMICS_SYSTEMC_SIGNAL_DECLARE_TRANSFORM(type)
Definition: sc_signal_access_base.h:23