2 //=============================================================================
6 * Visitor generating code for a facet servant class in the
11 //=============================================================================
13 #include "interface.h"
15 be_visitor_facet_svth::be_visitor_facet_svth (be_visitor_context
*ctx
)
16 : be_visitor_interface (ctx
)
20 be_visitor_facet_svth::~be_visitor_facet_svth ()
25 be_visitor_facet_svth::visit_interface (be_interface
*node
)
28 if (node
->imported () ||
29 node
->svnt_src_facet_gen () ||
30 idl_global
->ami_connector_seen_
||
31 node
->original_interface () ||
37 const char *lname
= node
->local_name ();
40 dynamic_cast<be_scope
*> (node
->defined_in ())->decl ();
41 ACE_CString
suffix (scope
->flat_name ());
45 suffix
= ACE_CString ("_") + suffix
;
49 << "namespace CIAO_FACET" << suffix
.c_str () << be_nl
52 bool is_intf
= node
->node_type () == AST_Decl::NT_interface
;
54 os_
<< "template <typename BASE, typename EXEC, typename CONTEXT>" << be_nl
55 << "class " << lname
<< "_Servant_T" << be_idt_nl
56 << ": public ::CIAO::Facet_Servant_Base_T<BASE, EXEC, "
57 << "CONTEXT>" << be_uidt_nl
<< "{" << be_nl
58 << "public:" << be_idt_nl
;
60 AST_Decl
*s
= ScopeAsDecl (node
->defined_in ());
61 ACE_CString
sname_str (s
->full_name ());
63 os_
<< lname
<< "_Servant_T (" << be_idt_nl
64 << "typename EXEC::_ptr_type executor," << be_nl
65 << "::Components::CCMContext_ptr ctx);" << be_uidt_nl
<< be_nl
;
67 os_
<< "virtual ~" << lname
<< "_Servant_T (void);";
72 dynamic_cast<be_interface
*> (node
);
74 be_global
->in_facet_servant (true);
77 intf
->traverse_inheritance_graph (
78 be_interface::op_attr_decl_helper
,
81 be_global
->in_facet_servant (false);
85 ACE_ERROR_RETURN ((LM_ERROR
,
86 ACE_TEXT ("be_provides::gen_facet - ")
87 ACE_TEXT ("traverse_inheritance_graph()")
88 ACE_TEXT (" failed\n")),
93 os_
<< be_uidt_nl
<< "};" << be_nl
<< be_uidt_nl
;
97 node
->svnt_hdr_facet_gen (true);