14#ifndef SIMICS_SYSTEMC_AWARENESS_PROXY_FACTORY_REGISTRY_H
15#define SIMICS_SYSTEMC_AWARENESS_PROXY_FACTORY_REGISTRY_H
31 factories_.push_front(factory);
32 factory_ = factories_.end();
34 bool mapToProxy(sc_core::sc_object *
object)
const override {
35 for (
auto *factory : factories_) {
36 if (!factory->mapToProxy(
object))
42 factory_ = factories_.end();
43 for (
auto it = factories_.begin(); it != factories_.end(); ++it) {
44 if ((*it)->canManufacture(
object)) {
52 if (factory_ != factories_.end()) {
53 if ((*factory_)->needUniqueConfClassName(
object))
59 sc_core::sc_object *
object)
const override {
60 if (factory_ != factories_.end()) {
61 return (*factory_)->classAttributes(
object);
66 sc_core::sc_object *
object)
const override {
67 if (factory_ != factories_.end()) {
68 return (*factory_)->instanceAttributes(
object);
74 std::string description,
75 std::string documentation)
const override {
76 if (factory_ != factories_.end()) {
77 return (*factory_)->createConfClass(
object, std::move(name),
78 std::move(description),
79 std::move(documentation));
84 conf_class_t *cls)
const override {
85 if (factory_ != factories_.end())
86 (*factory_)->registerAttributes(
object, cls);
89 conf_class_t *cls)
const override {
90 if (factory_ != factories_.end())
91 (*factory_)->registerInterfaces(
object, cls);
94 conf_class_t *cls)
const override {
95 if (factory_ != factories_.end())
96 (*factory_)->registerLogGroups(
object, cls);
100 if (factory_ != factories_.end())
101 (*factory_)->registerFeatures(
object, proxy);
104 std::string sc_kind,
const char *class_name)
const override {
105 if (factory_ != factories_.end())
106 return (*factory_)->registerClass(std::move(sc_kind), class_name);
110 if (factory_ != factories_.end())
111 return (*factory_)->isClassRegistered(std::move(sc_kind));
116 std::deque<ProxyFactoryInterface*> factories_;
117 mutable std::deque<ProxyFactoryInterface*>::const_iterator factory_;
Definition: class_attributes_interface.h:24
Definition: instance_attributes_interface.h:24
Definition: proxy_factory_interface.h:29
Definition: proxy_factory_registry.h:27
bool needUniqueConfClassName(sc_core::sc_object *object) const override
Definition: proxy_factory_registry.h:51
void registerInterfaces(sc_core::sc_object *object, conf_class_t *cls) const override
Definition: proxy_factory_registry.h:88
conf_class_t * createConfClass(sc_core::sc_object *object, std::string name, std::string description, std::string documentation) const override
Definition: proxy_factory_registry.h:72
void registerAttributes(sc_core::sc_object *object, conf_class_t *cls) const override
Definition: proxy_factory_registry.h:83
ProxyFactoryRegistry()
Definition: proxy_factory_registry.h:29
void addFactory(ProxyFactoryInterface *factory)
Definition: proxy_factory_registry.h:30
void registerLogGroups(sc_core::sc_object *object, conf_class_t *cls) const override
Definition: proxy_factory_registry.h:93
const ClassAttributesInterface * classAttributes(sc_core::sc_object *object) const override
Definition: proxy_factory_registry.h:58
bool canManufacture(sc_core::sc_object *object) const override
Definition: proxy_factory_registry.h:41
void registerFeatures(sc_core::sc_object *object, ProxyInterface *proxy) const override
Definition: proxy_factory_registry.h:98
bool registerClass(std::string sc_kind, const char *class_name) const override
Definition: proxy_factory_registry.h:103
bool mapToProxy(sc_core::sc_object *object) const override
Definition: proxy_factory_registry.h:34
bool isClassRegistered(std::string sc_kind) const override
Definition: proxy_factory_registry.h:109
const InstanceAttributesInterface * instanceAttributes(sc_core::sc_object *object) const override
Definition: proxy_factory_registry.h:65
Definition: proxy_interface.h:27