16#ifndef SIMICS_DETAIL_EVENT_HELPER_H
17#define SIMICS_DETAIL_EVENT_HELPER_H
19#include <simics/base/event.h>
21#include "../conf-object.h"
28#define EVENT_HELPER(cls, m, f) \
29 simics::detail::event_helper<decltype(&cls::m), cls>::template f<&cls::m>
31#define EVENT_CALLBACK(cls, m) \
32 simics::detail::event_helper<decltype(&cls::m), cls>::event_class_ptr(), \
33 EVENT_HELPER(cls, m, callback)
35#define EVENT_CLS_VAR(cls, m) \
36 EVENT_CALLBACK(cls, m), EVENT_HELPER(cls, m, destroy), \
37 EVENT_HELPER(cls, m, get_value), EVENT_HELPER(cls, m, set_value), \
38 EVENT_HELPER(cls, m, describe)
40template <
typename T,
typename O,
typename C>
44 (simics::from_obj<C>(obj)->*R).callback(data);
49 (simics::from_obj<C>(obj)->*R).destroy(data);
54 return (simics::from_obj<C>(obj)->*R).get_value(data);
59 return (simics::from_obj<C>(obj)->*R).set_value(value);
64 return (simics::from_obj<C>(obj)->*R).describe(data);
struct conf_object conf_object_t
Definition: bank-issue-callbacks-interface.h:23
Definition: attr-value.h:23
static attr_value_t get_value(conf_object_t *obj, void *data)
Definition: event-helper.h:53
static void * set_value(conf_object_t *obj, attr_value_t value)
Definition: event-helper.h:58
static event_class_t ** event_class_ptr()
Definition: event-helper.h:67
static char * describe(conf_object_t *obj, void *data)
Definition: event-helper.h:63
static void callback(conf_object_t *obj, void *data)
Definition: event-helper.h:43
static void destroy(conf_object_t *obj, void *data)
Definition: event-helper.h:48
Definition: event-helper.h:26