summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL/be/be_visitor_interface/interface_ss.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/TAO_IDL/be/be_visitor_interface/interface_ss.cpp')
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/interface_ss.cpp46
1 files changed, 32 insertions, 14 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/interface_ss.cpp b/TAO/TAO_IDL/be/be_visitor_interface/interface_ss.cpp
index 7b52627a051..ad0c7b07ad7 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/interface_ss.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/interface_ss.cpp
@@ -285,7 +285,7 @@ be_visitor_interface_ss::visit_interface (be_interface *node)
*os << be_uidt_nl
<< "}";
-
+
is_a.destroy ();
rt.destroy ();
s.get ()->destroy ();
@@ -393,7 +393,7 @@ be_visitor_interface_ss::visit_interface (be_interface *node)
*os << be_uidt_nl
<< "}";
-
+
non_existent.destroy ();
rt.destroy ();
}
@@ -504,7 +504,7 @@ be_visitor_interface_ss::visit_interface (be_interface *node)
*os << be_uidt_nl
<< "}";
-
+
repository_id.destroy ();
s.get ()->destroy ();
}
@@ -666,7 +666,7 @@ be_visitor_interface_ss::visit_interface (be_interface *node)
<< (be_global->use_raw_throw () ? "" : "ACE_ENV_ARG_PARAMETER")
<< ");" << TAO_ACE_CHECK () << be_uidt_nl
<< "}";
-
+
get_component.destroy ();
rt.destroy ();
}
@@ -734,6 +734,24 @@ be_visitor_interface_ss::visit_interface (be_interface *node)
this->this_method (node);
+ if (be_global->gen_tie_classes ())
+ {
+ // Generate the TIE class.
+ be_visitor_context ctx (*this->ctx_);
+ ctx.state (TAO_CodeGen::TAO_ROOT_TIE_SS);
+ ctx.stream (tao_cg->server_template_skeletons ());
+ be_visitor_interface_tie_ss visitor (&ctx);
+
+ if (node->accept (&visitor) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "be_visitor_interface_ss::"
+ "visit_interface - "
+ "codegen for TIE class failed\n"),
+ -1);
+ }
+ }
+
return 0;
}
@@ -766,12 +784,12 @@ be_visitor_interface_ss::gen_abstract_ops_helper (be_interface *node,
"bad node in this scope\n"),
-1);
}
-
+
AST_Decl::NodeType nt = d->node_type ();
-
+
UTL_ScopedName *item_new_name = 0;
UTL_ScopedName *new_name = 0;
-
+
if (AST_Decl::NT_op == nt || AST_Decl::NT_attr == nt)
{
ACE_NEW_RETURN (item_new_name,
@@ -799,10 +817,10 @@ be_visitor_interface_ss::gen_abstract_ops_helper (be_interface *node,
op->set_name (new_name);
op->set_defined_in (node);
op->is_abstract (node->is_abstract ());
-
+
be_visitor_operation_ss op_visitor (&ctx);
op_visitor.visit_operation (op);
-
+
op->set_name (old_name);
op->set_defined_in (base);
op->is_abstract (base->is_abstract ());
@@ -817,21 +835,21 @@ be_visitor_interface_ss::gen_abstract_ops_helper (be_interface *node,
attr->is_abstract ());
new_attr.set_defined_in (node);
new_attr.set_name (new_name);
-
+
UTL_ExceptList *get_exceptions = attr->get_get_exceptions ();
-
+
if (0 != get_exceptions)
{
new_attr.be_add_get_exceptions (get_exceptions->copy ());
}
-
+
UTL_ExceptList *set_exceptions = attr->get_set_exceptions ();
-
+
if (0 != set_exceptions)
{
new_attr.be_add_set_exceptions (set_exceptions->copy ());
}
-
+
be_visitor_attribute attr_visitor (&ctx);
attr_visitor.visit_attribute (&new_attr);
ctx.attribute (0);