summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL/be/be_visitor_component/component_ch.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/TAO_IDL/be/be_visitor_component/component_ch.cpp')
-rw-r--r--TAO/TAO_IDL/be/be_visitor_component/component_ch.cpp279
1 files changed, 0 insertions, 279 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_component/component_ch.cpp b/TAO/TAO_IDL/be/be_visitor_component/component_ch.cpp
deleted file mode 100644
index 2c7bcb664d0..00000000000
--- a/TAO/TAO_IDL/be/be_visitor_component/component_ch.cpp
+++ /dev/null
@@ -1,279 +0,0 @@
-//
-// $Id$
-//
-
-// ============================================================================
-//
-// = LIBRARY
-// TAO IDL
-//
-// = FILENAME
-// component_ch.cpp
-//
-// = DESCRIPTION
-// Visitor generating code for Components in the client header.
-//
-// = AUTHOR
-// Jeff Parsons
-//
-// ============================================================================
-
-ACE_RCSID (be_visitor_component,
- component_ch,
- "$Id$")
-
-// ******************************************************
-// Component visitor for client header
-// ******************************************************
-
-be_visitor_component_ch::be_visitor_component_ch (be_visitor_context *ctx)
- : be_visitor_component (ctx)
-{
-}
-
-be_visitor_component_ch::~be_visitor_component_ch (void)
-{
-}
-
-int
-be_visitor_component_ch::visit_component (be_component *node)
-{
- if (node->cli_hdr_gen () || node->imported ())
- {
- return 0;
- }
-
- // This will be a no-op if it has already been done by a forward
- // declaration.
- node->gen_var_out_seq_decls ();
-
- TAO_OutStream *os = this->ctx_->stream ();
-
- *os << be_nl << be_nl << "// TAO_IDL - Generated from" << be_nl
- << "// " << __FILE__ << ":" << __LINE__;
-
- // Now the interface definition itself.
- os->gen_ifdef_macro (node->flat_name ());
-
- if (!node->is_local () && !node->is_abstract ())
- {
- // Forward class declarations.
- *os << be_nl << be_nl
- << "class " << node->base_proxy_impl_name () << ";" << be_nl
- << "class " << node->remote_proxy_impl_name () << ";" << be_nl
- << "class " << node->base_proxy_broker_name () << ";" << be_nl
- << "class " << node->remote_proxy_broker_name () << ";"
- << be_nl << be_nl;
- }
-
- // Now generate the class definition.
- *os << "class " << be_global->stub_export_macro ()
- << " " << node->local_name () << be_idt_nl
- << ": public virtual ::" ;
-
- AST_Component *parent = node->base_component ();
-
- if (parent != 0)
- {
- *os << parent->name ();
- }
- else
- {
- *os << "Components::CCMObject";
- }
-
- long nsupports = node->n_inherits ();
-
- if (nsupports > 0)
- {
- *os << be_idt;
-
- for (long i = 0; i < nsupports; ++i)
- {
- *os << ", " << be_nl
- << "public virtual ::" << node->supports()[i]->name ();
- }
-
- *os << be_uidt;
- }
-
- *os << be_uidt_nl
- << "{" << be_nl
- << "public:" << be_idt_nl
-
- << "friend class TAO::Narrow_Utils<"
- << node->local_name () << ">;" << be_nl
-
- // Generate the _ptr_type and _var_type typedefs.
- << "typedef " << node->local_name () << "_ptr _ptr_type;"
- << be_nl
- << "typedef " << node->local_name () << "_var _var_type;"
- << be_nl
- << "typedef " << node->local_name () << "_out _out_type;"
- << be_nl;
-
- // Generate the static _duplicate, _narrow, and _nil operations.
- *os << "// The static operations." << be_nl
- << "static " << node->local_name () << "_ptr " << "_duplicate ("
- << node->local_name () << "_ptr obj);" << be_nl << be_nl
- << "static " << node->local_name () << "_ptr "
- << "_narrow (" << be_idt << be_idt_nl
- << "::CORBA::Object_ptr obj" << env_dflts << be_uidt_nl
- << ");" << be_uidt_nl << be_nl;
-
- // This method is defined in the header file to workaround old
- // g++ problems.
- *os << "static " << node->local_name () << "_ptr _nil (void)"
- << be_idt_nl << "{" << be_idt_nl
- << "return static_cast<" << node->local_name ()
- << "_ptr> (0);" << be_uidt_nl
- << "}" << be_uidt_nl << be_nl;
-
- if (be_global->any_support ())
- {
- *os << "static void _tao_any_destructor (void *);";
- }
-
- // Generate code for the interface definition by traversing thru the
- // elements of its scope. We depend on the front-end to have made sure
- // that only legal syntactic elements appear in our scope.
-
- if (this->visit_scope (node) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_component_ch::"
- "visit_component - "
- "codegen for scope failed\n"),
- -1);
- }
-
- *os << be_nl << be_nl << "// TAO_IDL - Generated from" << be_nl
- << "// " << __FILE__ << ":" << __LINE__;
-
- if (! node->is_abstract ())
- {
- node->analyze_parentage ();
- }
-
- // If we inherit from both CORBA::Object and CORBA::AbstractBase,
- // we have to override _add_ref() to avoid ambiguity. A comopnent
- // can have mixed parentage if it supports an abstract or mixed-
- // parentage interface.
- if (node->has_mixed_parentage ())
- {
- *os << be_nl << be_nl
- << "virtual void _add_ref (void);";
- }
-
- *os << be_nl << be_nl
- << "virtual ::CORBA::Boolean _is_a (" << be_idt << be_idt_nl
- << "const char *type_id" << env_dflts << be_uidt_nl
- << ");" << be_uidt;
-
- // The _interface_repository_id method.
- *os << be_nl << be_nl
- << "virtual const char* _interface_repository_id (void) const;";
-
- // The virtual marshal method, to prevent marshal of local iterfaces.
- *os << be_nl << "virtual ::CORBA::Boolean marshal (TAO_OutputCDR &cdr);";
-
- // Add the Proxy Broker member variable.
- *os << be_uidt_nl << be_nl
- << "private:" << be_idt_nl
- << "TAO::Collocation_Proxy_Broker *"
- << "the" << node->base_proxy_broker_name ()
- << "_;";
-
- *os << be_uidt_nl << be_nl
- << "protected:" << be_idt;
-
- // Generate the "protected" constructor so that users cannot
- // instantiate us.
-
- *os << be_nl
- << node->local_name () << " (void);";
-
- *os << be_nl << be_nl
- << "// These methods travese the inheritance tree and set the"
- << be_nl
- << "// parents piece of the given class in the right mode."
- << be_nl
- << "virtual void " << node->flat_name ()
- << "_setup_collocation (void);";
-
- *os << be_nl << be_nl
- << node->local_name () << " (" << be_idt << be_idt_nl
- << "IOP::IOR *ior," << be_nl
- << "TAO_ORB_Core *orb_core = 0" << be_uidt_nl
- << ");" << be_uidt;
-
- *os << be_nl << be_nl
- << node->local_name ()
- << " (" << be_idt << be_idt_nl << "TAO_Stub *objref, " << be_nl
- << "::CORBA::Boolean _tao_collocated = 0," << be_nl
- << "TAO_Abstract_ServantBase *servant = 0," << be_nl
- << "TAO_ORB_Core *oc = 0" << be_uidt_nl
- << ");" << be_uidt;
-
- // Friends declarations.
- *os << be_nl << be_nl
- << "friend class " << node->remote_proxy_impl_name () << ";"
- << be_nl
- << "friend class " << node->direct_proxy_impl_name () << ";";
-
- // Protected destructor.
- *os << be_nl << be_nl
- << "virtual ~" << node->local_name () << " (void);";
-
- // Private copy constructor and assignment operator. These are not
- // allowed, hence they are private.
- *os << be_uidt_nl << be_nl
- << "private:" << be_idt_nl;
- *os << node->local_name () << " (const "
- << node->local_name () << " &);"
- << be_nl
- << "void operator= (const " << node->local_name () << " &);";
-
- *os << be_uidt_nl
- << "};" << be_nl << be_nl;
-
- // List that generates proxy broker factory function pointer.
- be_global->non_local_interfaces.enqueue_tail (node);
-
- be_visitor_context ctx (*this->ctx_);
- if (be_global->gen_smart_proxies ())
- {
- *os << be_nl << be_nl;
- // Smart Proxy related classes.
- ctx.state (TAO_CodeGen::TAO_INTERFACE_SMART_PROXY_CH);
- be_visitor_interface_smart_proxy_ch sp_visitor (&ctx);
-
- if (node->accept (&sp_visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "be_visitor_component_ch::"
- "visit_component - "
- "codegen for smart proxy classes failed\n"),
- -1);
- }
- }
-
- os->gen_endif ();
-
- if (be_global->tc_support ())
- {
- be_visitor_typecode_decl td_visitor (&ctx);
-
- if (node->accept (&td_visitor) == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_component_ch::"
- "visit_component - "
- "TypeCode declaration failed\n"),
- -1);
- }
- }
-
- node->cli_hdr_gen (true);
- return 0;
-}