All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
module_instance.h
Go to the documentation of this file.
1 #ifndef MODULE_INSTANCE_H_INCLUDED_
2 #define MODULE_INSTANCE_H_INCLUDED_
3 
4 #include <string>
5 #include <vector>
6 #include <map>
7 
8 #include "rose.h"
9 
10 #include "instance.h"
11 #include "port.h"
12 #include "object.h"
13 
14 #include "class.h" // included for get_definition
15 #include "module.h" // included for get_definition
16 
17 /*TLM 2.0*/
18 #include "socket.h"
19 
20 namespace risc {
21 
27 class ModuleInstance: public Instance {
28 
29 public:
30 
34  explicit ModuleInstance(SgVariableDefinition *ast_node, Module *ir_def);
35 
40  explicit ModuleInstance(SgVariableDefinition *ast_node, Type type);
41 
46  virtual Module* get_definition();
47 
52  void add_mapping(Port *port, Object *object);
53 
58  void add_socket_mapping(Socket *socket_from, Socket *socket_to);
59 
64  void add_backward_socket_mapping(Socket *socket_from, Socket *socket_to);
65 
71  std::string get_instance_qualified_name();
72 
73  std::map<Port*, Object*> mapping_;
74 
75  /* TLM 2.0 */
76  std::map<Socket*, Socket*> socket_mapping_;
77  std::map<Socket*, Socket*> backward_socket_mapping_;
78 private:
79 
85 
89  ModuleInstance(const ModuleInstance &md);
90 };
91 
92 typedef std::vector<ModuleInstance*>
94 typedef std::vector<ModuleInstance*>::iterator
96 typedef std::vector<ModuleInstance*>::const_iterator
98 
99 }; // end namespace risc
100 
101 #endif /* MODULE_INSTANCE_H_INCLUDED_ */
102 
103 /* ex: set softtabstop=2 tabstop=2 shiftwidth=2 expandtab: */
virtual Module * get_definition()
returns this associated definition of the module instance
Definition: module_instance.cpp:20
Definition: object.h:10
void add_backward_socket_mapping(Socket *socket_from, Socket *socket_to)
This is a helper functio to add a mapping.
Definition: module_instance.cpp:35
std::map< Socket *, Socket * > socket_mapping_
Definition: module_instance.h:76
Definition: port.h:11
void add_mapping(Port *port, Object *object)
This is a helper functio to add a mapping.
Definition: module_instance.cpp:25
Module * module_definition_
This pointer points to the corresponding definition in the internal representation.
Definition: module_instance.h:84
std::vector< ModuleInstance * > ModuleInstanceVector
Definition: class.h:42
Definition: socket.h:13
std::map< Socket *, Socket * > backward_socket_mapping_
Definition: module_instance.h:77
std::vector< ModuleInstance * >::const_iterator ModuleInstanceVectorConstIter
Definition: module_instance.h:97
std::map< Port *, Object * > mapping_
Definition: module_instance.h:73
std::string get_instance_qualified_name()
return the qualified name of the module instance for example: ::top::prod_inst
Definition: module_instance.cpp:40
void add_socket_mapping(Socket *socket_from, Socket *socket_to)
This is a helper functio to add a mapping.
Definition: module_instance.cpp:30
Definition: instance.h:17
std::vector< ModuleInstance * >::iterator ModuleInstanceVectorIter
Definition: module_instance.h:95
This class represents instances.
Definition: module.h:49
This class represents a instance of a module.
Definition: module_instance.h:27
Type
We are using these enums to identify type type of and instance or definition during traversal...
Definition: definition.h:20
ModuleInstance(SgVariableDefinition *ast_node, Module *ir_def)
default constructor
Definition: module_instance.cpp:3