SystemC Library API Reference Manual
Reference documentation for the Simics SystemC Library.
 
Loading...
Searching...
No Matches
proxy_factory_event.h
Go to the documentation of this file.
1/*
2 © 2015 Intel Corporation
3
4 This software and the related documents are Intel copyrighted materials, and
5 your use of them is governed by the express license under which they were
6 provided to you ("License"). Unless the License provides otherwise, you may
7 not use, modify, copy, publish, distribute, disclose or transmit this software
8 or the related documents without Intel's prior written permission.
9
10 This software and the related documents are provided as is, with no express or
11 implied warranties, other than those that are expressly stated in the License.
12*/
13
14#ifndef SIMICS_SYSTEMC_AWARENESS_PROXY_FACTORY_EVENT_H
15#define SIMICS_SYSTEMC_AWARENESS_PROXY_FACTORY_EVENT_H
16
17
23
24#include <string>
25
26namespace simics {
27namespace systemc {
28namespace awareness {
29
31 public:
32 std::string name(sc_core::sc_object *object) const override {
33 sc_core::sc_event *event = get_event(object);
34 if (!event)
35 return InstanceAttributes::name(object);
36
37 return event->name();
38 }
39 std::string basename(sc_core::sc_object *object) const override {
40 sc_core::sc_event *event = get_event(object);
41 if (!event)
42 return InstanceAttributes::basename(object);
43
44 return event->basename();
45 }
46 protected:
47 sc_core::sc_event *get_event(sc_core::sc_object *object) const {
48 ScEventObject *eventProxy = dynamic_cast<ScEventObject *> (object);
49 if (!eventProxy)
50 return NULL;
51
52 return eventProxy->get_event();
53 }
54};
55
56class ProxyFactoryEvent : public ProxyFactory<ProxyEvent> {
57 public:
58 bool canManufacture(sc_core::sc_object *object) const override {
59 return std::string("ScEventObject") == object->kind();
60 }
62 sc_core::sc_object *object) const override {
63 return &instance_attributes_;
64 }
65 void registerInterfaces(sc_core::sc_object *object,
66 conf_class_t *cls) const override {
68 registerInterface<iface::ScEventSimicsAdapter<ProxyEvent> >(cls);
71 ProxyEvent> >(cls);
72 }
73
74 private:
75 EventInstanceAttributes instance_attributes_;
76};
77
78} // namespace awareness
79} // namespace systemc
80} // namespace simics
81
82#endif
Definition: proxy_factory_event.h:30
sc_core::sc_event * get_event(sc_core::sc_object *object) const
Definition: proxy_factory_event.h:47
std::string basename(sc_core::sc_object *object) const override
Definition: proxy_factory_event.h:39
std::string name(sc_core::sc_object *object) const override
Definition: proxy_factory_event.h:32
Definition: instance_attributes_interface.h:24
Definition: instance_attributes.h:25
std::string name(sc_core::sc_object *object) const override
Definition: instance_attributes.h:27
std::string basename(sc_core::sc_object *object) const override
Definition: instance_attributes.h:30
Definition: proxy_event.h:30
Definition: proxy_factory_event.h:56
void registerInterfaces(sc_core::sc_object *object, conf_class_t *cls) const override
Definition: proxy_factory_event.h:65
bool canManufacture(sc_core::sc_object *object) const override
Definition: proxy_factory_event.h:58
const InstanceAttributesInterface * instanceAttributes(sc_core::sc_object *object) const override
Definition: proxy_factory_event.h:61
Definition: proxy_factory.h:42
void registerInterface(conf_class_t *cls) const
Definition: proxy_factory.h:174
void registerInterfaces(sc_core::sc_object *object, conf_class_t *cls) const override
Definition: proxy_factory.h:112
Definition: sc_event_object.h:25
sc_core::sc_event * get_event()
Definition: sc_event_object.h:33
Definition: provider_controller_simics_adapter.h:34
Definition: adapter.h:79