16#ifndef SIMICS_SYSTEMC_AWARENESS_PROXY_FACTORY_REGISTRY_H
17#define SIMICS_SYSTEMC_AWARENESS_PROXY_FACTORY_REGISTRY_H
33 factories_.push_front(factory);
34 factory_ = factories_.end();
36 virtual bool mapToProxy(sc_core::sc_object *
object)
const {
37 for (std::deque<ProxyFactoryInterface*>::const_iterator i = factories_
38 .begin(); i != factories_.end(); ++i) {
39 if (!(*i)->mapToProxy(
object))
45 for (factory_ = factories_.begin(); factory_ != factories_.end();
47 if ((*factory_)->canManufacture(
object)) {
54 if (factory_ != factories_.end()) {
55 if ((*factory_)->needUniqueConfClassName(
object))
61 sc_core::sc_object *
object)
const {
62 if (factory_ != factories_.end()) {
63 return (*factory_)->classAttributes(
object);
68 sc_core::sc_object *
object)
const {
69 if (factory_ != factories_.end()) {
70 return (*factory_)->instanceAttributes(
object);
76 std::string description,
77 std::string documentation)
const {
78 if (factory_ != factories_.end()) {
79 return (*factory_)->createConfClass(
object, std::move(name),
80 std::move(description),
81 std::move(documentation));
86 conf_class_t *cls)
const {
87 if (factory_ != factories_.end())
88 (*factory_)->registerAttributes(
object, cls);
91 conf_class_t *cls)
const {
92 if (factory_ != factories_.end())
93 (*factory_)->registerInterfaces(
object, cls);
96 conf_class_t *cls)
const {
97 if (factory_ != factories_.end())
98 (*factory_)->registerLogGroups(
object, cls);
102 if (factory_ != factories_.end())
103 (*factory_)->registerFeatures(
object, proxy);
106 std::string sc_kind,
const char *class_name)
const {
107 if (factory_ != factories_.end())
108 return (*factory_)->registerClass(std::move(sc_kind), class_name);
112 if (factory_ != factories_.end())
113 return (*factory_)->isClassRegistered(std::move(sc_kind));
118 std::deque<ProxyFactoryInterface*> factories_;
119 mutable std::deque<ProxyFactoryInterface*>::const_iterator factory_;
Definition: class_attributes_interface.h:26
Definition: instance_attributes_interface.h:26
Definition: proxy_factory_interface.h:31
Definition: proxy_factory_registry.h:29
virtual void registerAttributes(sc_core::sc_object *object, conf_class_t *cls) const
Definition: proxy_factory_registry.h:85
virtual bool canManufacture(sc_core::sc_object *object) const
Definition: proxy_factory_registry.h:44
virtual const InstanceAttributesInterface * instanceAttributes(sc_core::sc_object *object) const
Definition: proxy_factory_registry.h:67
ProxyFactoryRegistry()
Definition: proxy_factory_registry.h:31
void addFactory(ProxyFactoryInterface *factory)
Definition: proxy_factory_registry.h:32
virtual bool isClassRegistered(std::string sc_kind) const
Definition: proxy_factory_registry.h:111
virtual void registerInterfaces(sc_core::sc_object *object, conf_class_t *cls) const
Definition: proxy_factory_registry.h:90
virtual bool needUniqueConfClassName(sc_core::sc_object *object) const
Definition: proxy_factory_registry.h:53
virtual bool registerClass(std::string sc_kind, const char *class_name) const
Definition: proxy_factory_registry.h:105
virtual const ClassAttributesInterface * classAttributes(sc_core::sc_object *object) const
Definition: proxy_factory_registry.h:60
virtual void registerFeatures(sc_core::sc_object *object, ProxyInterface *proxy) const
Definition: proxy_factory_registry.h:100
virtual conf_class_t * createConfClass(sc_core::sc_object *object, std::string name, std::string description, std::string documentation) const
Definition: proxy_factory_registry.h:74
virtual void registerLogGroups(sc_core::sc_object *object, conf_class_t *cls) const
Definition: proxy_factory_registry.h:95
virtual bool mapToProxy(sc_core::sc_object *object) const
Definition: proxy_factory_registry.h:36
Definition: proxy_interface.h:29
Definition: pci_bus_interface.h:24