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// -*- mode: C++; c-file-style: "virtutech-c++" -*-
2
3/*
4 © 2014 Intel Corporation
5
6 This software and the related documents are Intel copyrighted materials, and
7 your use of them is governed by the express license under which they were
8 provided to you ("License"). Unless the License provides otherwise, you may
9 not use, modify, copy, publish, distribute, disclose or transmit this software
10 or the related documents without Intel's prior written permission.
11
12 This software and the related documents are provided as is, with no express or
13 implied warranties, other than those that are expressly stated in the License.
14*/
15
16#ifndef SIMICS_SYSTEMC_AWARENESS_PROXY_FACTORY_INTERFACE_H
17#define SIMICS_SYSTEMC_AWARENESS_PROXY_FACTORY_INTERFACE_H
18
19#include <simics/base/conf-object.h>
23
24#include <systemc>
25#include <string>
26
27namespace simics {
28namespace systemc {
29namespace awareness {
30
32 public:
34
35 // Returns bool, used to decide if object should be used in the process
36 // when creating proxy instances for SC objects. One reason for skipping
37 // the mapping from sc_object to proxy object is that the sc_object should
38 // be exposed as an attribute of the proxy
39 virtual bool mapToProxy(sc_core::sc_object *object) const = 0;
40 // Returns bool, used to indicate that the factory has a specialized
41 // conf_class implementation for this object.
42 virtual bool canManufacture(sc_core::sc_object *object) const = 0;
43 // Returns bool, used to decided if a unique conf class needs to be
44 // created. When returning false, the first conf class created for this
45 // type of sc_object will be reused.
46 virtual bool needUniqueConfClassName(sc_core::sc_object *object) const = 0;
47 // Provides name, description and documentation for object.
49 sc_core::sc_object *object) const = 0;
50 // Provides name for proxy instance.
52 sc_core::sc_object *object) const = 0;
53 // Creates conf_class_t for object based on name, description and
54 // documentation.
55 virtual conf_class_t *createConfClass(sc_core::sc_object *object,
56 std::string name,
57 std::string description,
58 std::string documentation) const = 0;
59 // Registers all attributes for the proxy object
60 virtual void registerAttributes(sc_core::sc_object *object,
61 conf_class_t *cls) const = 0;
62 // Register additional interfaces for the proxy object based on sc_object
63 virtual void registerInterfaces(sc_core::sc_object *object,
64 conf_class_t *cls) const = 0;
65 // Registers the log groups for the proxy object
66 virtual void registerLogGroups(sc_core::sc_object *object,
67 conf_class_t *cls) const = 0;
68 // Register additional proxy internal functionality
69 virtual void registerFeatures(sc_core::sc_object *object,
70 ProxyInterface *proxy) const = 0;
71 // Returns bool, used to register a configuration class for a SystemC type
72 // sc_kind named class_name. Returns false if the class could not be
73 // created. Returns true if the class already existed or if it was
74 // successfully created.
75 virtual bool registerClass(
76 std::string sc_kind, const char *class_name) const = 0;
77 // Returns bool, used to decide if sc_kind is a configuration class.
78 virtual bool isClassRegistered(std::string sc_kind) const = 0;
79};
80
81} // namespace awareness
82} // namespace systemc
83} // namespace simics
84
85#endif
Definition: class_attributes_interface.h:26
Definition: instance_attributes_interface.h:26
Definition: proxy_factory_interface.h:31
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:33
virtual void registerInterfaces(sc_core::sc_object *object, conf_class_t *cls) const =0
Definition: proxy_interface.h:29
Definition: pci_bus_interface.h:24