3 //=============================================================================
7 * Concrete visitor for components
8 * This one provides the generic visitor for the be_component node.
10 * @author Jeff Parsons
12 //=============================================================================
14 #ifndef _BE_VISITOR_COMPONENT_COMPONENT_H_
15 #define _BE_VISITOR_COMPONENT_COMPONENT_H_
18 * @class be_visitor_component
20 * @brief be_visitor_component
22 * This is a concrete visitor for component
23 * that abstracts all common tasks.
25 class be_visitor_component
: public be_visitor_interface
28 be_visitor_component (be_visitor_context
*ctx
);
30 ~be_visitor_component ();
32 /// This is the only type of declaration a component may contain.
33 virtual int visit_attribute (be_attribute
*node
);
35 /// Operations are created by the back end for 'provides', 'uses', 'emits',
36 /// 'publishes' and 'consumes' declarations.
37 virtual int visit_operation (be_operation
*node
);
39 /// Structs and sequences are created by the back end for 'uses multiple'
41 virtual int visit_structure (be_structure
*node
);
42 virtual int visit_typedef (be_typedef
*node
);
44 /// Overridden to pick up attribute declarations from a porrttype.
45 virtual int visit_extended_port (be_extended_port
*node
);
46 virtual int visit_mirror_port (be_mirror_port
*node
);
49 #endif /* _BE_VISITOR_MODULE_MODULE_H_ */