summaryrefslogtreecommitdiff
path: root/TAO_IDL/be/be_visitor_component/executor_private_exh.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO_IDL/be/be_visitor_component/executor_private_exh.cpp')
-rw-r--r--TAO_IDL/be/be_visitor_component/executor_private_exh.cpp74
1 files changed, 74 insertions, 0 deletions
diff --git a/TAO_IDL/be/be_visitor_component/executor_private_exh.cpp b/TAO_IDL/be/be_visitor_component/executor_private_exh.cpp
new file mode 100644
index 00000000000..de540aff8a4
--- /dev/null
+++ b/TAO_IDL/be/be_visitor_component/executor_private_exh.cpp
@@ -0,0 +1,74 @@
+
+//=============================================================================
+/**
+ * @file executor_private_exh.cpp
+ *
+ * $Id$
+ *
+ * Visitor generating code for private facet members
+ * in the exec impl header.
+ *
+ *
+ * @author Jeff Parsons
+ */
+//=============================================================================
+
+be_visitor_executor_private_exh::be_visitor_executor_private_exh (
+ be_visitor_context *ctx)
+ : be_visitor_component_scope (ctx)
+{
+}
+
+be_visitor_executor_private_exh::~be_visitor_executor_private_exh (void)
+{
+}
+
+int
+be_visitor_executor_private_exh::visit_provides (be_provides *node)
+{
+ be_type *impl = node->provides_type ();
+ AST_Decl *i_scope = ScopeAsDecl (impl->defined_in ());
+ bool is_global = (i_scope->node_type () == AST_Decl::NT_root);
+ const char *smart_scope = (is_global ? "" : "::");
+ ACE_CString scope_name =
+ IdentifierHelper::orig_sn (i_scope->name (), false);
+
+ os_ << be_nl
+ << smart_scope << scope_name.c_str () << "::CCM_"
+ << impl->original_local_name () << "_var ciao_"
+ << this->ctx_->port_prefix ().c_str ()
+ << node->original_local_name () << "_;";
+
+ return 0;
+}
+
+int
+be_visitor_executor_private_exh::visit_attribute (be_attribute *node)
+{
+ AST_Decl::NodeType nt = this->node_->node_type ();
+
+ // Executor attribute code generated for porttype attributes
+ // always in connectors and only for mirrorports in components.
+ if (this->in_ext_port_ && nt == AST_Decl::NT_component)
+ {
+ return 0;
+ }
+
+ os_ << be_nl_2;
+
+ be_visitor_member_type_decl v (this->ctx_);
+
+ if (node->field_type ()->accept (&v) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("be_visitor_executor_private_exh::")
+ ACE_TEXT ("visit_attribute - ")
+ ACE_TEXT ("accept on field type failed\n")),
+ -1);
+ }
+
+ os_ << this->ctx_->port_prefix ().c_str ()
+ << node->local_name () << "_;";
+
+ return 0;
+}