SystemC Library API Reference Manual
Reference documentation for the Simics SystemC Library.
 
Loading...
Searching...
No Matches
proxy_factory_interface.h
Go to the documentation of this file.
1/*
2 © 2014 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_INTERFACE_H
15#define SIMICS_SYSTEMC_AWARENESS_PROXY_FACTORY_INTERFACE_H
16
17#include <simics/base/conf-object.h>
21
22#include <systemc>
23#include <string>
24
25namespace simics {
26namespace systemc {
27namespace awareness {
28
30 public:
32
33 // Returns bool, used to decide if object should be used in the process
34 // when creating proxy instances for SC objects. One reason for skipping
35 // the mapping from sc_object to proxy object is that the sc_object should
36 // be exposed as an attribute of the proxy
37 virtual bool mapToProxy(sc_core::sc_object *object) const = 0;
38 // Returns bool, used to indicate that the factory has a specialized
39 // conf_class implementation for this object.
40 virtual bool canManufacture(sc_core::sc_object *object) const = 0;
41 // Returns bool, used to decided if a unique conf class needs to be
42 // created. When returning false, the first conf class created for this
43 // type of sc_object will be reused.
44 virtual bool needUniqueConfClassName(sc_core::sc_object *object) const = 0;
45 // Provides name, description and documentation for object.
47 sc_core::sc_object *object) const = 0;
48 // Provides name for proxy instance.
50 sc_core::sc_object *object) const = 0;
51 // Creates conf_class_t for object based on name, description and
52 // documentation.
53 virtual conf_class_t *createConfClass(sc_core::sc_object *object,
54 std::string name,
55 std::string description,
56 std::string documentation) const = 0;
57 // Registers all attributes for the proxy object
58 virtual void registerAttributes(sc_core::sc_object *object,
59 conf_class_t *cls) const = 0;
60 // Register additional interfaces for the proxy object based on sc_object
61 virtual void registerInterfaces(sc_core::sc_object *object,
62 conf_class_t *cls) const = 0;
63 // Registers the log groups for the proxy object
64 virtual void registerLogGroups(sc_core::sc_object *object,
65 conf_class_t *cls) const = 0;
66 // Register additional proxy internal functionality
67 virtual void registerFeatures(sc_core::sc_object *object,
68 ProxyInterface *proxy) const = 0;
69 // Returns bool, used to register a configuration class for a SystemC type
70 // sc_kind named class_name. Returns false if the class could not be
71 // created. Returns true if the class already existed or if it was
72 // successfully created.
73 virtual bool registerClass(
74 std::string sc_kind, const char *class_name) const = 0;
75 // Returns bool, used to decide if sc_kind is a configuration class.
76 virtual bool isClassRegistered(std::string sc_kind) const = 0;
77};
78
79} // namespace awareness
80} // namespace systemc
81} // namespace simics
82
83#endif
Definition: class_attributes_interface.h:24
Definition: instance_attributes_interface.h:24
Definition: proxy_factory_interface.h:29
virtual void registerLogGroups(sc_core::sc_object *object, conf_class_t *cls) const =0
virtual conf_class_t * createConfClass(sc_core::sc_object *object, std::string name, std::string description, std::string documentation) const =0
virtual bool needUniqueConfClassName(sc_core::sc_object *object) const =0
virtual void registerAttributes(sc_core::sc_object *object, conf_class_t *cls) const =0
virtual const ClassAttributesInterface * classAttributes(sc_core::sc_object *object) const =0
virtual const InstanceAttributesInterface * instanceAttributes(sc_core::sc_object *object) const =0
virtual void registerFeatures(sc_core::sc_object *object, ProxyInterface *proxy) const =0
virtual bool mapToProxy(sc_core::sc_object *object) const =0
virtual bool registerClass(std::string sc_kind, const char *class_name) const =0
virtual bool canManufacture(sc_core::sc_object *object) const =0
virtual bool isClassRegistered(std::string sc_kind) const =0
virtual ~ProxyFactoryInterface()
Definition: proxy_factory_interface.h:31
virtual void registerInterfaces(sc_core::sc_object *object, conf_class_t *cls) const =0
Definition: proxy_interface.h:27
Definition: adapter.h:79