diff options
author | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2009-10-21 20:41:25 +0000 |
---|---|---|
committer | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2009-10-21 20:41:25 +0000 |
commit | f4ba83ba457583ef3a469c9e2a7daeffed9f8b22 (patch) | |
tree | 30a366e898e83a7b4f49c1e3db6d7893cbf35390 | |
parent | a36fd76bcaf2622cad0450467f31153ea5c5934c (diff) | |
download | ATCD-f4ba83ba457583ef3a469c9e2a7daeffed9f8b22.tar.gz |
ChangeLogTag: Wed Oct 21 20:40:45 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu>
25 files changed, 840 insertions, 678 deletions
diff --git a/modules/TAO/ChangeLog b/modules/TAO/ChangeLog index db3ef05eec3..7c0b9c8aab2 100644 --- a/modules/TAO/ChangeLog +++ b/modules/TAO/ChangeLog @@ -1,3 +1,57 @@ +Wed Oct 21 20:40:45 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu> + + * TAO_IDL/be/be_visitor_extended_port.cpp: + * TAO_IDL/be_include/be_visitor_extended_port.h: + + Removed these files, should have been removed in + + Wed Oct 21 14:10:35 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu> + + + * TAO_IDL/be/be_visitor_component/facet_ex_idl.cpp: + * TAO_IDL/be/be_visitor_component/context_ex_idl.cpp: + * TAO_IDL/be/be_visitor_component/executor_ex_idl.cpp: + * TAO_IDL/be_include/be_visitor_component/facet_ex_idl.h: + * TAO_IDL/be_include/be_visitor_component/context_ex_idl.h: + * TAO_IDL/be_include/be_visitor_component/executor_ex_idl.h: + + New files, split executor IDL code generation into separate + visitors for the facet, context and executor classes. Also + added support for simple extended ports and porttypes. + + * TAO_IDL/be/be_visitor_component.cpp: + * TAO_IDL/be_include/be_visitor_component.h: + + Added new files to the include lists. + + * TAO_IDL/be/be_util.cpp: + * TAO_IDL/be_include/be_util.h: + + Moved utility methods to generate nested namespaces + to this class, so they can be visible to all visitors. + + * TAO_IDL/be/be_visitor_component/servant_svh.cpp: + * TAO_IDL/be/be_visitor_component/context_svh.cpp: + * TAO_IDL/be/be_visitor_component/servant_svs.cpp: + * TAO_IDL/be/be_visitor_component/context_svs.cpp: + * TAO_IDL/be/be_visitor_component/component_ex_idl.cpp: + * TAO_IDL/be/be_visitor_component/component_scope.cpp: + * TAO_IDL/be_include/be_visitor_component/component_scope.h: + * TAO_IDL/be_include/be_visitor_component/servant_svh.h: + * TAO_IDL/be_include/be_visitor_component/context_svh.h: + * TAO_IDL/be_include/be_visitor_component/servant_svs.h: + * TAO_IDL/be_include/be_visitor_component/context_svs.h: + * TAO_IDL/be_include/be_visitor_component/component_ex_idl.h: + + Moved visit method overrides for extended port, mirror port + and porttype to the base class be_visitor_component_scope. + In every case so far, the extended port (and eventually the + mirror port) traversal just fetches the porttype reference + and visits its scope, calling back the port kind traversal + methods that happen to be overridden in the original + visitor, so there's no need to reimplement these methods + over and over. + Wed Oct 21 14:10:35 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu> * TAO_IDL/be/be_visitor_extended_port/extended_port_svs.cpp: diff --git a/modules/TAO/TAO_IDL/be/be_util.cpp b/modules/TAO/TAO_IDL/be/be_util.cpp index fb257e3353e..9943bdc4c80 100644 --- a/modules/TAO/TAO_IDL/be/be_util.cpp +++ b/modules/TAO/TAO_IDL/be/be_util.cpp @@ -12,17 +12,18 @@ // Static helper methods used by multiple visitors. // // = AUTHOR -// Gary Maxey +// Gary Maxey, Jeff Parsons // // ============================================================================ #include "be_util.h" +#include "be_helper.h" +#include "be_module.h" +#include "be_identifier_helper.h" + #include "utl_identifier.h" -#include "ace/OS_NS_string.h" -ACE_RCSID (be, - be_util, - "$Id$") +#include "ace/OS_NS_string.h" void be_util::gen_nested_namespace_begin (TAO_OutStream *os, be_module *node) @@ -56,3 +57,68 @@ be_util::gen_nested_namespace_end (TAO_OutStream *os, be_module *node) *os << be_nl << be_nl; } + +void +be_util::gen_nesting_open (TAO_OutStream &os, AST_Decl *node) +{ + os << be_nl; + + for (UTL_IdListActiveIterator i (node->name ()); ! i.is_done () ;) + { + UTL_ScopedName tmp (i.item (), 0); + AST_Decl *scope = + node->defined_in ()->lookup_by_name (&tmp, true); + + if (scope == 0) + { + i.next (); + continue; + } + + ACE_CString module_name = + IdentifierHelper::try_escape (scope->original_local_name ()); + + if (module_name == "") + { + i.next (); + continue; + } + + i.next (); + + if (i.is_done ()) + { + break; + } + + os << be_nl + << "module " << module_name.c_str () << be_nl + << "{" << be_idt; + } +} + +void +be_util::gen_nesting_close (TAO_OutStream &os, AST_Decl *node) +{ + for (UTL_IdListActiveIterator i (node->name ()); ! i.is_done () ;) + { + ACE_CString module_name (i.item ()->get_string ()); + + if (module_name == "") + { + i.next (); + continue; + } + + i.next (); + + if (i.is_done ()) + { + break; + } + + os << be_uidt_nl + << "};"; + } +} + diff --git a/modules/TAO/TAO_IDL/be/be_visitor_component.cpp b/modules/TAO/TAO_IDL/be/be_visitor_component.cpp index 6ead4189b8c..9bb059e4d6e 100644 --- a/modules/TAO/TAO_IDL/be/be_visitor_component.cpp +++ b/modules/TAO/TAO_IDL/be/be_visitor_component.cpp @@ -47,7 +47,6 @@ #include "be_valuetype.h" #include "be_visitor_component.h" -#include "be_visitor_extended_port.h" #include "be_visitor_attribute.h" #include "be_visitor_operation.h" #include "be_visitor_interface.h" @@ -55,8 +54,9 @@ #include "be_visitor_typedef.h" #include "be_visitor_typecode.h" #include "be_visitor_context.h" -#include "be_identifier_helper.h" +#include "be_util.h" #include "be_helper.h" +#include "be_identifier_helper.h" #include "be_extern.h" #include "be_visitor_component/component.cpp" @@ -78,6 +78,9 @@ #include "be_visitor_component/context_svs.cpp" #include "be_visitor_component/servant_svs.cpp" #include "be_visitor_component/component_ex_idl.cpp" +#include "be_visitor_component/facet_ex_idl.cpp" +#include "be_visitor_component/executor_ex_idl.cpp" +#include "be_visitor_component/context_ex_idl.cpp" #include "be_visitor_component/component_exh.cpp" #include "be_visitor_component/component_exs.cpp" #include "be_visitor_component/any_op_ch.cpp" diff --git a/modules/TAO/TAO_IDL/be/be_visitor_component/component_ex_idl.cpp b/modules/TAO/TAO_IDL/be/be_visitor_component/component_ex_idl.cpp index a97227f3a6f..969292182d8 100644 --- a/modules/TAO/TAO_IDL/be/be_visitor_component/component_ex_idl.cpp +++ b/modules/TAO/TAO_IDL/be/be_visitor_component/component_ex_idl.cpp @@ -18,18 +18,9 @@ // // ============================================================================ -ACE_RCSID (be_visitor_component, - component_ex_idl, - "$Id$") - -// ****************************************************** -// Component visitor for CIAO executor IDL -// ****************************************************** - be_visitor_component_ex_idl::be_visitor_component_ex_idl ( be_visitor_context *ctx) - : be_visitor_scope (ctx), - node_ (0), + : be_visitor_decl (ctx), os_ (*ctx->stream ()) { } @@ -39,537 +30,67 @@ be_visitor_component_ex_idl::~be_visitor_component_ex_idl (void) } int -be_visitor_component_ex_idl::visit_component (be_component *node) +be_visitor_component_ex_idl::visit_component ( + be_component *node) { if (node->imported ()) { return 0; } - node_ = node; - if (be_global->gen_lem_force_all ()) { - this->gen_facets (); - } - - this->gen_component (); - - this->gen_executor_derived (); - - return 0; -} - -int -be_visitor_component_ex_idl::visit_attribute (be_attribute *node) -{ - bool rd_only = node->readonly (); - - // Keep output statements separate because of side effects. - // No need to check for anonymous array - anonymous types not - // accepted by parser for attributes. - os_ << be_nl - << (rd_only ? "readonly " : "") << "attribute "; - - be_type *ft = be_type::narrow_from_decl (node->field_type ()); - - os_ << IdentifierHelper::type_name (ft, this); - os_ << " " - << IdentifierHelper::try_escape (node->original_local_name ()).c_str (); - - this->gen_exception_list (node->get_get_exceptions (), - rd_only ? "" : "get"); - - this->gen_exception_list (node->get_set_exceptions (), - "set"); - - os_ << ";"; - - return 0; -} - -int -be_visitor_component_ex_idl::visit_sequence (be_sequence *node) -{ - // Keep output statements separate because of side effects. - os_ << "sequence<"; - - be_type *bt = be_type::narrow_from_decl (node->base_type ()); - - os_ << IdentifierHelper::type_name (bt, this); - - if (!node->unbounded ()) - { - os_ << ", " << node->max_size ()->ev ()->u.ulval; - } - - os_ << "> "; - - return 0; -} - -int -be_visitor_component_ex_idl::visit_string (be_string *node) -{ - bool wide = static_cast<size_t> (node->width ()) > sizeof (char); - - os_ << (wide ? "w" : "") << "string"; - - ACE_CDR::ULong const bound = node->max_size ()->ev ()->u.ulval; - - if (bound > 0UL) - { - os_ << "<" << bound << ">"; - } - - return 0; -} - -void -be_visitor_component_ex_idl::gen_nesting_open (AST_Decl *node) -{ - os_ << be_nl; - - for (UTL_IdListActiveIterator i (node->name ()); ! i.is_done () ;) - { - UTL_ScopedName tmp (i.item (), 0); - AST_Decl *scope = - node->defined_in ()->lookup_by_name (&tmp, true); - - if (scope == 0) - { - i.next (); - continue; - } - - ACE_CString module_name = - IdentifierHelper::try_escape (scope->original_local_name ()); - - if (module_name == "") - { - i.next (); - continue; - } - - i.next (); - - if (i.is_done ()) - { - break; - } - - os_ << be_nl - << "module " << module_name.c_str () << be_nl - << "{" << be_idt; - } -} - -void -be_visitor_component_ex_idl::gen_nesting_close (AST_Decl *node) -{ - for (UTL_IdListActiveIterator i (node->name ()); ! i.is_done () ;) - { - ACE_CString module_name (i.item ()->get_string ()); - - if (module_name == "") - { - i.next (); - continue; - } - - i.next (); - - if (i.is_done ()) - { - break; - } - - os_ << be_uidt_nl - << "};"; - } -} - -void -be_visitor_component_ex_idl::gen_facets (void) -{ - for (UTL_ScopeActiveIterator si (node_, UTL_Scope::IK_decls); - !si.is_done (); - si.next ()) - { - AST_Decl *d = si.item (); - - if (d->node_type () != AST_Decl::NT_provides) - { - continue; - } - - AST_Provides *p = - AST_Provides::narrow_from_decl (d); - - be_type *impl = - be_type::narrow_from_decl (p->provides_type ()); - - if (impl->ex_idl_facet_gen ()) - { - continue; - } - - this->gen_nesting_open (impl); - - os_ << be_nl - << "local interface CCM_" - << impl->original_local_name ()->get_string () - << " : ::" - << IdentifierHelper::orig_sn (impl->name ()).c_str () - << be_nl - << "{" << be_idt; - - os_ << be_uidt_nl - << "};"; - - this->gen_nesting_close (impl); - - impl->ex_idl_facet_gen (true); - } -} - -void -be_visitor_component_ex_idl::gen_component (void) -{ - this->gen_nesting_open (node_); - - this->gen_executor_base (); - - this->gen_context (); - - this->gen_nesting_close (node_); -} - -void -be_visitor_component_ex_idl::gen_executor_base (void) -{ - AST_Component *base = node_->base_component (); - - os_ << be_nl - << "local interface CCM_" - << node_->original_local_name ()->get_string () - << be_idt_nl - << ": "; - - if (base == 0) - { - os_ << "::Components::EnterpriseComponent"; - - this->gen_supported (); - } - else - { - ACE_CString sname_str = - IdentifierHelper::orig_sn ( - ScopeAsDecl (base->defined_in ())->name ()); - - const char *sname = sname_str.c_str (); - const char *global = (sname_str == "" ? "" : "::"); - - os_ << global << sname << "::CCM_" - << base->original_local_name ()->get_string (); - } - - os_ << be_uidt_nl - << "{" << be_idt; - - this->gen_executor_contents (); - - os_ << be_uidt_nl - << "};"; -} - -void -be_visitor_component_ex_idl::gen_supported (void) -{ - os_ << be_idt; - - AST_Interface **supported = node_->supports (); - - for (long i = 0; i < node_->n_supports (); ++i) - { - os_ << "," << be_nl - << "::" - << IdentifierHelper::orig_sn (supported[i]->name ()).c_str (); - } - - os_ << be_uidt; -} - -void -be_visitor_component_ex_idl::gen_executor_contents (void) -{ - this->gen_facet_ops (); - this->gen_consumer_ops (); - - /// This picks up the attributes. - if (this->visit_scope (node_) == -1) - { - ACE_ERROR ((LM_ERROR, - ACE_TEXT ("be_visitor_component_ex_idl::") - ACE_TEXT ("gen_executor_contents - ") - ACE_TEXT ("visit_scope() failed\n"))); - } -} - -void -be_visitor_component_ex_idl::gen_facet_ops (void) -{ - for (UTL_ScopeActiveIterator si (node_, UTL_Scope::IK_decls); - !si.is_done (); - si.next ()) - { - AST_Decl *d = si.item (); - - if (d->node_type () != AST_Decl::NT_provides) - { - continue; - } - - AST_Provides *p = - AST_Provides::narrow_from_decl (d); - - be_type *impl = - be_type::narrow_from_decl (p->provides_type ()); - - AST_Decl *scope = ScopeAsDecl (impl->defined_in ()); - - ACE_CString sname_str = - IdentifierHelper::orig_sn (scope->name ()); - const char *sname = sname_str.c_str (); - - const char *lname = - impl->original_local_name ()->get_string (); - - const char *global = (sname_str == "" ? "" : "::"); - - os_ << be_nl - << global << sname << "::CCM_" << lname << " get_" - << p->local_name ()->get_string () << " ();"; - } -} - -void -be_visitor_component_ex_idl::gen_consumer_ops (void) -{ - for (UTL_ScopeActiveIterator si (node_, UTL_Scope::IK_decls); - !si.is_done (); - si.next ()) - { - AST_Decl *d = si.item (); - - if (d->node_type () != AST_Decl::NT_consumes) - { - continue; - } - - AST_Consumes *c = - AST_Consumes::narrow_from_decl (d); - - be_type *impl = - be_type::narrow_from_decl (c->consumes_type ()); - - os_ << be_nl - << "void push_" << c->local_name ()->get_string () - << " (in ::" - << IdentifierHelper::orig_sn (impl->name ()).c_str () - << " e);"; - } -} - -void -be_visitor_component_ex_idl::gen_exception_list ( - UTL_ExceptList *exceptions, - const char *prefix, - bool closed) -{ - if (exceptions != 0 && exceptions->length () > 0) - { - os_ << be_idt_nl - << prefix << "raises ( "; - - for (UTL_ExceptlistActiveIterator ei (exceptions); - !ei.is_done ();) - { - os_ << "::" - << IdentifierHelper::orig_sn (ei.item ()->name ()).c_str (); - - ei.next (); - - if (!ei.is_done () || !closed) - { - os_ << ", "; - } - } - - if (closed) + be_visitor_facet_ex_idl facet_visitor (this->ctx_); + + if (facet_visitor.visit_scope (node) == -1) { - os_ << ")" << be_uidt; + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("be_visitor_component_ex_idl::") + ACE_TEXT ("visit_component - ") + ACE_TEXT ("facet visitor failed\n")), + -1); } } -} -void -be_visitor_component_ex_idl::gen_context (void) -{ - os_ << be_nl << be_nl - << "local interface CCM_" - << node_->original_local_name ()->get_string () - << "_Context" << be_idt_nl - << ": "; + be_util::gen_nesting_open (os_, node); - AST_Component *base = node_->base_component (); - - if (base == 0) - { - os_ << "::Components::SessionContext"; - } - else + be_visitor_executor_ex_idl exec_visitor (this->ctx_); + + if (exec_visitor.visit_component (node) == -1) { - AST_Decl *scope = ScopeAsDecl (base->defined_in ()); - - ACE_CString sname_str = - IdentifierHelper::orig_sn (scope->name ()); - const char *sname = sname_str.c_str (); - - const char *lname = - base->original_local_name ()->get_string (); - - const char *global = (sname_str == "" ? "" : "::"); - - os_ << global << sname << "::CCM_" << lname << "_Context"; + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("be_visitor_component_ex_idl::") + ACE_TEXT ("visit_component - ") + ACE_TEXT ("executor visitor failed\n")), + -1); } - os_ << be_uidt_nl - << "{" << be_idt; - - this->gen_publisher_ops (); - this->gen_emitter_ops (); - this->gen_receptacle_ops (); - - os_ << be_uidt_nl - << "};"; -} - -void -be_visitor_component_ex_idl::gen_publisher_ops (void) -{ - for (UTL_ScopeActiveIterator si (node_, UTL_Scope::IK_decls); - !si.is_done (); - si.next ()) + be_visitor_context_ex_idl context_visitor (this->ctx_); + + if (context_visitor.visit_component (node) == -1) { - AST_Decl *d = si.item (); - - if (d->node_type () != AST_Decl::NT_publishes) - { - continue; - } - - AST_Publishes *p = - AST_Publishes::narrow_from_decl (d); - - be_type *impl = - be_type::narrow_from_decl (p->publishes_type ()); - - os_ << be_nl - << "void push_" << p->local_name ()->get_string () << " (in ::" - << IdentifierHelper::orig_sn (impl->name ()).c_str () - << " e);"; + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("be_visitor_component_ex_idl::") + ACE_TEXT ("visit_component - ") + ACE_TEXT ("context visitor failed\n")), + -1); } -} -void -be_visitor_component_ex_idl::gen_emitter_ops (void) -{ - for (UTL_ScopeActiveIterator si (node_, UTL_Scope::IK_decls); - !si.is_done (); - si.next ()) - { - AST_Decl *d = si.item (); + be_util::gen_nesting_close (os_, node); - if (d->node_type () != AST_Decl::NT_emits) - { - continue; - } - - AST_Emits *e = - AST_Emits::narrow_from_decl (d); - - be_type *impl = - be_type::narrow_from_decl (e->emits_type ()); - - os_ << be_nl - << "void push_" << e->local_name ()->get_string () << " (in ::" - << IdentifierHelper::orig_sn (impl->name ()).c_str () - << " e);"; - } -} - -void -be_visitor_component_ex_idl::gen_receptacle_ops (void) -{ - for (UTL_ScopeActiveIterator si (node_, UTL_Scope::IK_decls); - !si.is_done (); - si.next ()) - { - AST_Decl *d = si.item (); - - if (d->node_type () != AST_Decl::NT_uses) - { - continue; - } - - AST_Uses *u = - AST_Uses::narrow_from_decl (d); - - be_type *impl = - be_type::narrow_from_decl (u->uses_type ()); - - os_ << be_nl - << "::"; - - // Note that we don't strip off the possible '_cxx_' when - // adding the 'Connections' suffix. The front end will - // create this implied IDL node with the '_cxx_' so lookup - // will fail (when processing the *E.idl file) if we - // strip it off here. - if (u->is_multiple ()) - { - os_ << IdentifierHelper::orig_sn (node_->name ()).c_str () - << "::" << u->local_name ()->get_string () - << "Connections get_connections_" - << u->local_name ()->get_string () << " ();"; - } - else - { - os_ << IdentifierHelper::orig_sn (impl->name ()).c_str () - << " get_connection_" - << u->local_name ()->get_string () << " ();"; - } - } -} - -void -be_visitor_component_ex_idl::gen_executor_derived (void) -{ - AST_Decl *scope = ScopeAsDecl (node_->defined_in ()); + AST_Decl *scope = ScopeAsDecl (node->defined_in ()); ACE_CString sname_str = IdentifierHelper::orig_sn (scope->name ()); const char *sname = sname_str.c_str (); const char *lname = - node_->original_local_name ()->get_string (); + node->original_local_name ()->get_string (); const char *global = (sname_str == "" ? "" : "::"); os_ << be_nl << be_nl - << "module CIAO_" << node_->flat_name () << "_Impl" << be_nl + << "module CIAO_" << node->flat_name () << "_Impl" << be_nl << "{" << be_idt_nl << "typedef " << global << sname << "::CCM_" << lname << "_Context " << lname << "_Exec_Context;"; @@ -584,5 +105,7 @@ be_visitor_component_ex_idl::gen_executor_derived (void) os_ << be_uidt_nl << "};"; + + return 0; } diff --git a/modules/TAO/TAO_IDL/be/be_visitor_component/component_scope.cpp b/modules/TAO/TAO_IDL/be/be_visitor_component/component_scope.cpp index 30e7e96877a..9a95461794d 100644 --- a/modules/TAO/TAO_IDL/be/be_visitor_component/component_scope.cpp +++ b/modules/TAO/TAO_IDL/be/be_visitor_component/component_scope.cpp @@ -43,6 +43,28 @@ be_visitor_component_scope::~be_visitor_component_scope ( } int +be_visitor_component_scope::visit_extended_port ( + be_extended_port *node) +{ + return this->visit_porttype (node->port_type ()); +} + +int +be_visitor_component_scope::visit_mirror_port ( + be_mirror_port *) +{ + // TODO + return 0; +} + +int +be_visitor_component_scope::visit_porttype ( + be_porttype *node) +{ + return this->visit_scope (node); +} + +int be_visitor_component_scope::visit_component_scope ( be_component *node) { diff --git a/modules/TAO/TAO_IDL/be/be_visitor_component/context_ex_idl.cpp b/modules/TAO/TAO_IDL/be/be_visitor_component/context_ex_idl.cpp new file mode 100644 index 00000000000..9d73f8d46bc --- /dev/null +++ b/modules/TAO/TAO_IDL/be/be_visitor_component/context_ex_idl.cpp @@ -0,0 +1,149 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// context_ex_idl.cpp +// +// = DESCRIPTION +// Visitor generating code for the contect class +// in the CIAO executor IDL. +// +// = AUTHOR +// Jeff Parsons +// +// ============================================================================ + +be_visitor_context_ex_idl::be_visitor_context_ex_idl ( + be_visitor_context *ctx) + : be_visitor_component_scope (ctx) +{ +} + +be_visitor_context_ex_idl::~be_visitor_context_ex_idl ( + void) +{ +} + +int +be_visitor_context_ex_idl::visit_component ( + be_component *node) +{ + node_ = node; + + os_ << be_nl << be_nl + << "local interface CCM_" + << node->original_local_name ()->get_string () + << "_Context" << be_idt_nl + << ": "; + + AST_Component *base = node->base_component (); + + if (base == 0) + { + os_ << "::Components::SessionContext"; + } + else + { + AST_Decl *scope = + ScopeAsDecl (base->defined_in ()); + + ACE_CString sname_str = + IdentifierHelper::orig_sn (scope->name ()); + const char *sname = sname_str.c_str (); + + const char *lname = + base->original_local_name ()->get_string (); + + const char *global = (sname_str == "" ? "" : "::"); + + os_ << global << sname << "::CCM_" + << lname << "_Context"; + } + + os_ << be_uidt_nl + << "{" << be_idt; + + if (this->visit_scope (node) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("be_visitor_context_ex_idl::") + ACE_TEXT ("visit_component - ") + ACE_TEXT ("visit_scope() failed\n")), + -1); + } + + os_ << be_uidt_nl + << "};"; + + return 0; +} + +int +be_visitor_context_ex_idl::visit_uses ( + be_uses *node) +{ + be_type *impl = + be_type::narrow_from_decl (node->uses_type ()); + + os_ << be_nl + << "::"; + + const char *lname = node->local_name ()->get_string (); + + // Note that we don't strip off the possible '_cxx_' when + // adding the 'Connections' suffix. The front end will + // create this implied IDL node with the '_cxx_' so lookup + // will fail (when processing the *E.idl file) if we + // strip it off here. + if (node->is_multiple ()) + { + os_ << IdentifierHelper::orig_sn (node_->name ()).c_str () + << "::" << lname << "Connections get_connections_" + << lname << " ();"; + } + else + { + os_ << IdentifierHelper::orig_sn (impl->name ()).c_str () + << " get_connection_" << lname << " ();"; + } + + return 0; +} + +int +be_visitor_context_ex_idl::visit_publishes ( + be_publishes *node) +{ + be_type *impl = + be_type::narrow_from_decl (node->publishes_type ()); + + os_ << be_nl + << "void push_" << node->local_name ()->get_string () + << " (in ::" + << IdentifierHelper::orig_sn (impl->name ()).c_str () + << " e);"; + + return 0; +} + +int +be_visitor_context_ex_idl::visit_emits ( + be_emits *node) +{ + be_type *impl = + be_type::narrow_from_decl (node->emits_type ()); + + os_ << be_nl + << "void push_" << node->local_name ()->get_string () + << " (in ::" + << IdentifierHelper::orig_sn (impl->name ()).c_str () + << " e);"; + + return 0; +} diff --git a/modules/TAO/TAO_IDL/be/be_visitor_component/context_svh.cpp b/modules/TAO/TAO_IDL/be/be_visitor_component/context_svh.cpp index 05a26e8d124..aac46513ee3 100644 --- a/modules/TAO/TAO_IDL/be/be_visitor_component/context_svh.cpp +++ b/modules/TAO/TAO_IDL/be/be_visitor_component/context_svh.cpp @@ -279,16 +279,4 @@ be_visitor_context_svh::visit_emits (be_emits *node) return 0; } -int -be_visitor_context_svh::visit_extended_port (be_extended_port *) -{ - return 0; -} - -int -be_visitor_context_svh::visit_mirror_port (be_mirror_port *) -{ - // TODO - return 0; -} diff --git a/modules/TAO/TAO_IDL/be/be_visitor_component/context_svs.cpp b/modules/TAO/TAO_IDL/be/be_visitor_component/context_svs.cpp index f0618fb41a5..4e9d832e296 100644 --- a/modules/TAO/TAO_IDL/be/be_visitor_component/context_svs.cpp +++ b/modules/TAO/TAO_IDL/be/be_visitor_component/context_svs.cpp @@ -472,19 +472,6 @@ be_visitor_context_svs::visit_emits (be_emits *node) return 0; } -int -be_visitor_context_svs::visit_extended_port (be_extended_port *) -{ - return 0; -} - -int -be_visitor_context_svs::visit_mirror_port (be_mirror_port *) -{ - // TODO - return 0; -} - void be_visitor_context_svs::gen_uses_simplex ( AST_Type *obj, diff --git a/modules/TAO/TAO_IDL/be/be_visitor_component/executor_ex_idl.cpp b/modules/TAO/TAO_IDL/be/be_visitor_component/executor_ex_idl.cpp new file mode 100644 index 00000000000..9b627ee2fa5 --- /dev/null +++ b/modules/TAO/TAO_IDL/be/be_visitor_component/executor_ex_idl.cpp @@ -0,0 +1,243 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// executor_ex_idl.cpp +// +// = DESCRIPTION +// Visitor generating code for components +// in the CIAO executor IDL. +// +// = AUTHOR +// Jeff Parsons +// +// ============================================================================ + +be_visitor_executor_ex_idl::be_visitor_executor_ex_idl ( + be_visitor_context *ctx) + : be_visitor_component_scope (ctx) +{ +} + +be_visitor_executor_ex_idl::~be_visitor_executor_ex_idl ( + void) +{ +} + +int +be_visitor_executor_ex_idl::visit_component ( + be_component *node) +{ + node_ = node; + + AST_Component *base = node->base_component (); + + os_ << be_nl + << "local interface CCM_" + << node->original_local_name ()->get_string () + << be_idt_nl + << ": "; + + if (base == 0) + { + os_ << "::Components::EnterpriseComponent"; + + this->gen_supported (); + } + else + { + ACE_CString sname_str = + IdentifierHelper::orig_sn ( + ScopeAsDecl (base->defined_in ())->name ()); + + const char *sname = sname_str.c_str (); + const char *global = (sname_str == "" ? "" : "::"); + + os_ << global << sname << "::CCM_" + << base->original_local_name ()->get_string (); + } + + os_ << be_uidt_nl + << "{" << be_idt; + + if (this->visit_scope (node) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("be_visitor_executor_ex_idl::") + ACE_TEXT ("visit_component - ") + ACE_TEXT ("visit_scope() failed\n")), + -1); + } + + os_ << be_uidt_nl + << "};"; + + return 0; +} + +int +be_visitor_executor_ex_idl::visit_attribute ( + be_attribute *node) +{ + bool rd_only = node->readonly (); + + // Keep output statements separate because of side effects. + // No need to check for anonymous array - anonymous types not + // accepted by parser for attributes. + os_ << be_nl + << (rd_only ? "readonly " : "") << "attribute "; + + be_type *ft = be_type::narrow_from_decl (node->field_type ()); + + os_ << IdentifierHelper::type_name (ft, this); + os_ << " " + << IdentifierHelper::try_escape (node->original_local_name ()).c_str (); + + this->gen_exception_list (node->get_get_exceptions (), + rd_only ? "" : "get"); + + this->gen_exception_list (node->get_set_exceptions (), + "set"); + + os_ << ";"; + + return 0; +} + +int +be_visitor_executor_ex_idl::visit_sequence ( + be_sequence *node) +{ + // Keep output statements separate because of side effects. + os_ << "sequence<"; + + be_type *bt = + be_type::narrow_from_decl (node->base_type ()); + + os_ << IdentifierHelper::type_name (bt, this); + + if (!node->unbounded ()) + { + os_ << ", " << node->max_size ()->ev ()->u.ulval; + } + + os_ << "> "; + + return 0; +} + +int +be_visitor_executor_ex_idl::visit_string (be_string *node) +{ + bool wide = + static_cast<size_t> (node->width ()) > sizeof (char); + + os_ << (wide ? "w" : "") << "string"; + + ACE_CDR::ULong const bound = + node->max_size ()->ev ()->u.ulval; + + if (bound > 0UL) + { + os_ << "<" << bound << ">"; + } + + return 0; +} + +int +be_visitor_executor_ex_idl::visit_provides ( + be_provides *node) +{ + be_type *impl = + be_type::narrow_from_decl (node->provides_type ()); + + AST_Decl *scope = ScopeAsDecl (impl->defined_in ()); + + ACE_CString sname_str = + IdentifierHelper::orig_sn (scope->name ()); + const char *sname = sname_str.c_str (); + + const char *lname = + impl->original_local_name ()->get_string (); + + const char *global = (sname_str == "" ? "" : "::"); + + os_ << be_nl + << global << sname << "::CCM_" << lname << " get_" + << node->local_name ()->get_string () << " ();"; + + return 0; +} + +int +be_visitor_executor_ex_idl::visit_consumes ( + be_consumes *node) +{ + be_type *impl = + be_type::narrow_from_decl (node->consumes_type ()); + + os_ << be_nl + << "void push_" << node->local_name ()->get_string () + << " (in ::" + << IdentifierHelper::orig_sn (impl->name ()).c_str () + << " e);"; + + return 0; +} + +void +be_visitor_executor_ex_idl::gen_supported (void) +{ + os_ << be_idt; + + AST_Interface **supported = node_->supports (); + + for (long i = 0; i < node_->n_supports (); ++i) + { + os_ << "," << be_nl + << "::" + << IdentifierHelper::orig_sn (supported[i]->name ()).c_str (); + } + + os_ << be_uidt; +} + +void +be_visitor_executor_ex_idl::gen_exception_list ( + UTL_ExceptList *exceptions, + const char *prefix, + bool closed) +{ + if (exceptions != 0 && exceptions->length () > 0) + { + os_ << be_idt_nl + << prefix << "raises ( "; + + for (UTL_ExceptlistActiveIterator ei (exceptions); + !ei.is_done ();) + { + os_ << "::" + << IdentifierHelper::orig_sn (ei.item ()->name ()).c_str (); + + ei.next (); + + if (!ei.is_done () || !closed) + { + os_ << ", "; + } + } + + if (closed) + { + os_ << ")" << be_uidt; + } + } +} + diff --git a/modules/TAO/TAO_IDL/be/be_visitor_component/facet_ex_idl.cpp b/modules/TAO/TAO_IDL/be/be_visitor_component/facet_ex_idl.cpp new file mode 100644 index 00000000000..bfc9143f120 --- /dev/null +++ b/modules/TAO/TAO_IDL/be/be_visitor_component/facet_ex_idl.cpp @@ -0,0 +1,61 @@ +// +// $Id$ +// + +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// facet_ex_idl.cpp +// +// = DESCRIPTION +// Visitor generating code for facets in the CIAO executor IDL. +// +// = AUTHOR +// Jeff Parsons +// +// ============================================================================ + +be_visitor_facet_ex_idl::be_visitor_facet_ex_idl ( + be_visitor_context *ctx) + : be_visitor_component_scope (ctx) +{ +} + +be_visitor_facet_ex_idl::~be_visitor_facet_ex_idl (void) +{ +} + +int +be_visitor_facet_ex_idl::visit_provides (be_provides *node) +{ + be_type *impl = + be_type::narrow_from_decl (node->provides_type ()); + + if (impl->ex_idl_facet_gen ()) + { + return 0; + } + + be_util::gen_nesting_open (os_, impl); + + os_ << be_nl + << "local interface CCM_" + << impl->original_local_name ()->get_string () + << " : ::" + << IdentifierHelper::orig_sn (impl->name ()).c_str () + << be_nl + << "{" << be_idt; + + os_ << be_uidt_nl + << "};"; + + be_util::gen_nesting_close (os_, impl); + + impl->ex_idl_facet_gen (true); + + return 0; +} + diff --git a/modules/TAO/TAO_IDL/be/be_visitor_component/servant_svh.cpp b/modules/TAO/TAO_IDL/be/be_visitor_component/servant_svh.cpp index d4aa9c57e88..599c6ab5cde 100644 --- a/modules/TAO/TAO_IDL/be/be_visitor_component/servant_svh.cpp +++ b/modules/TAO/TAO_IDL/be/be_visitor_component/servant_svh.cpp @@ -346,19 +346,6 @@ be_visitor_servant_svh::visit_consumes (be_consumes *node) return 0; } -int -be_visitor_servant_svh::visit_extended_port (be_extended_port *) -{ - return 0; -} - -int -be_visitor_servant_svh::visit_mirror_port (be_mirror_port *) -{ - // TODO - return 0; -} - void be_visitor_servant_svh::gen_non_type_specific (void) { diff --git a/modules/TAO/TAO_IDL/be/be_visitor_component/servant_svs.cpp b/modules/TAO/TAO_IDL/be/be_visitor_component/servant_svs.cpp index 0539a0d180e..63de03b1fd1 100644 --- a/modules/TAO/TAO_IDL/be/be_visitor_component/servant_svs.cpp +++ b/modules/TAO/TAO_IDL/be/be_visitor_component/servant_svs.cpp @@ -748,19 +748,6 @@ be_visitor_servant_svs::visit_consumes (be_consumes *node) return 0; } -int -be_visitor_servant_svs::visit_extended_port (be_extended_port *) -{ - return 0; -} - -int -be_visitor_servant_svs::visit_mirror_port (be_mirror_port *) -{ - // TODO - return 0; -} - void be_visitor_servant_svs::compute_slots (AST_Component *node) { @@ -1234,6 +1221,24 @@ be_visitor_attr_set::visit_attribute (be_attribute *node) return 0; } +int +be_visitor_attr_set::visit_extended_port (be_extended_port *) +{ + return 0; +} + +int +be_visitor_attr_set::visit_mirror_port (be_mirror_port *) +{ + return 0; +} + +int +be_visitor_attr_set::visit_porttype (be_porttype *) +{ + return 0; +} + // ========================================================== be_visitor_facet_executor_block::be_visitor_facet_executor_block ( diff --git a/modules/TAO/TAO_IDL/be/be_visitor_extended_port.cpp b/modules/TAO/TAO_IDL/be/be_visitor_extended_port.cpp deleted file mode 100644 index be34b780713..00000000000 --- a/modules/TAO/TAO_IDL/be/be_visitor_extended_port.cpp +++ /dev/null @@ -1,26 +0,0 @@ -// -// $Id$ -// - -// ============================================================================ -// -// = LIBRARY -// TAO IDL -// -// = FILENAME -// be_visitor_extended_port.cpp -// -// = DESCRIPTION -// Visitors for generation of code for extended ports. -// -// = AUTHOR -// Jeff Parsons -// -// ============================================================================ - -#include "be_visitor_extended_port.h" - -#include "be_visitor_extended_port/extended_port.cpp" -#include "be_visitor_extended_port/extended_port_svh.cpp" -#include "be_visitor_extended_port/extended_port_svs.cpp" - diff --git a/modules/TAO/TAO_IDL/be_include/be_util.h b/modules/TAO/TAO_IDL/be_include/be_util.h index 66610d1c0b4..a9d8de6906d 100644 --- a/modules/TAO/TAO_IDL/be_include/be_util.h +++ b/modules/TAO/TAO_IDL/be_include/be_util.h @@ -13,16 +13,19 @@ // Static helper methods used by multiple visitors. // // = AUTHOR -// Gary Maxey +// Gary Maxey, Jeff Parsons // // ============================================================================ #ifndef TAO_BE_UTIL_H #define TAO_BE_UTIL_H -#include "be_helper.h" -#include "be_module.h" +class TAO_OutStream; +class be_module; +class AST_Decl; +// (JP) Someday these should be consolidated, along with several +// similar methods scattered throughout the backend. class be_util { public: @@ -31,6 +34,12 @@ public: static void gen_nested_namespace_end (TAO_OutStream *os, be_module *node); + + static void + gen_nesting_open (TAO_OutStream &os, AST_Decl *node); + + static void + gen_nesting_close (TAO_OutStream &os, AST_Decl *node); }; diff --git a/modules/TAO/TAO_IDL/be_include/be_visitor_component.h b/modules/TAO/TAO_IDL/be_include/be_visitor_component.h index 5c0046631b2..4a008f7c9fe 100644 --- a/modules/TAO/TAO_IDL/be_include/be_visitor_component.h +++ b/modules/TAO/TAO_IDL/be_include/be_visitor_component.h @@ -43,6 +43,9 @@ #include "be_visitor_component/context_svs.h" #include "be_visitor_component/servant_svs.h" #include "be_visitor_component/component_ex_idl.h" +#include "be_visitor_component/facet_ex_idl.h" +#include "be_visitor_component/executor_ex_idl.h" +#include "be_visitor_component/context_ex_idl.h" #include "be_visitor_component/component_exh.h" #include "be_visitor_component/component_exs.h" #include "be_visitor_component/any_op_ch.h" diff --git a/modules/TAO/TAO_IDL/be_include/be_visitor_component/component_ex_idl.h b/modules/TAO/TAO_IDL/be_include/be_visitor_component/component_ex_idl.h index 7abf9394af6..b6283d55ed4 100644 --- a/modules/TAO/TAO_IDL/be_include/be_visitor_component/component_ex_idl.h +++ b/modules/TAO/TAO_IDL/be_include/be_visitor_component/component_ex_idl.h @@ -22,7 +22,7 @@ #ifndef _BE_COMPONENT_COMPONENT_EX_IDL_H_ #define _BE_COMPONENT_COMPONENT_EX_IDL_H_ -class be_visitor_component_ex_idl : public be_visitor_scope +class be_visitor_component_ex_idl : public be_visitor_decl { // // = TITLE @@ -40,40 +40,7 @@ public: virtual int visit_component (be_component *node); - /// To regenerate attribute declarations. - virtual int visit_attribute (be_attribute *node); - - /// To regenerate the name of the attribute's referenced - /// (anonymous) type. Anonymous arrays are not allowed. - virtual int visit_string (be_string *node); - virtual int visit_sequence (be_sequence *node); - -private: - void gen_nesting_open (AST_Decl *node); - void gen_nesting_close (AST_Decl *node); - - void gen_facets (void); - - void gen_component (void); - void gen_executor_base (void); - void gen_supported (void); - void gen_executor_contents (void); - void gen_facet_ops (void); - void gen_consumer_ops (void); - - void gen_exception_list (UTL_ExceptList *exceptions, - const char *prefix = "", - bool closed = true); - - void gen_context (void); - void gen_publisher_ops (void); - void gen_emitter_ops (void); - void gen_receptacle_ops (void); - - void gen_executor_derived (void); - private: - be_component *node_; TAO_OutStream &os_; }; diff --git a/modules/TAO/TAO_IDL/be_include/be_visitor_component/component_scope.h b/modules/TAO/TAO_IDL/be_include/be_visitor_component/component_scope.h index e7c49fa9fe0..cacccd89bb0 100644 --- a/modules/TAO/TAO_IDL/be_include/be_visitor_component/component_scope.h +++ b/modules/TAO/TAO_IDL/be_include/be_visitor_component/component_scope.h @@ -38,6 +38,10 @@ protected: virtual ~be_visitor_component_scope (void); public: + virtual int visit_extended_port (be_extended_port *node); + virtual int visit_mirror_port (be_mirror_port *node); + virtual int visit_porttype (be_porttype *node); + int visit_component_scope (be_component *node); protected: diff --git a/modules/TAO/TAO_IDL/be_include/be_visitor_component/context_ex_idl.h b/modules/TAO/TAO_IDL/be_include/be_visitor_component/context_ex_idl.h new file mode 100644 index 00000000000..3faaf56c0f3 --- /dev/null +++ b/modules/TAO/TAO_IDL/be_include/be_visitor_component/context_ex_idl.h @@ -0,0 +1,49 @@ +// +// $Id$ +// +/* -*- c++ -*- */ +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// context_ex_idl.h +// +// = DESCRIPTION +// Provides code generation for the context class +// in the CIAO executor IDL. +// +// = AUTHOR +// Jeff Parsons +// +// ============================================================================ + +#ifndef _BE_COMPONENT_CONTEXT_EX_IDL_H_ +#define _BE_COMPONENT_CONTEXT_EX_IDL_H_ + +class be_visitor_context_ex_idl + : public be_visitor_component_scope +{ + // + // = TITLE + // be_visitor_context_ex_idl + // + // = DESCRIPTION + // This is a concrete visitor to generate the + // CIAO context IDL. + // + // +public: + be_visitor_context_ex_idl (be_visitor_context *ctx); + + ~be_visitor_context_ex_idl (void); + + virtual int visit_component (be_component *node); + virtual int visit_uses (be_uses *node); + virtual int visit_publishes (be_publishes *node); + virtual int visit_emits (be_emits *node); +}; + +#endif /_BE_COMPONENT_CONTEXT_EX_IDL_H_ */ + diff --git a/modules/TAO/TAO_IDL/be_include/be_visitor_component/context_svh.h b/modules/TAO/TAO_IDL/be_include/be_visitor_component/context_svh.h index d1abaabe26b..f8bdf732279 100644 --- a/modules/TAO/TAO_IDL/be_include/be_visitor_component/context_svh.h +++ b/modules/TAO/TAO_IDL/be_include/be_visitor_component/context_svh.h @@ -43,8 +43,6 @@ public: virtual int visit_uses (be_uses *node); virtual int visit_publishes (be_publishes *node); virtual int visit_emits (be_emits *node); - virtual int visit_extended_port (be_extended_port *node); - virtual int visit_mirror_port (be_mirror_port *node); }; #endif /* _BE_COMPONENT_CONTEXT_SVH_H_ */ diff --git a/modules/TAO/TAO_IDL/be_include/be_visitor_component/context_svs.h b/modules/TAO/TAO_IDL/be_include/be_visitor_component/context_svs.h index 4b5e2c7b807..5c540859839 100644 --- a/modules/TAO/TAO_IDL/be_include/be_visitor_component/context_svs.h +++ b/modules/TAO/TAO_IDL/be_include/be_visitor_component/context_svs.h @@ -43,8 +43,6 @@ public: virtual int visit_uses (be_uses *node); virtual int visit_publishes (be_publishes *node); virtual int visit_emits (be_emits *node); - virtual int visit_extended_port (be_extended_port *node); - virtual int visit_mirror_port (be_mirror_port *node); private: void gen_uses_simplex (AST_Type *obj, diff --git a/modules/TAO/TAO_IDL/be_include/be_visitor_component/executor_ex_idl.h b/modules/TAO/TAO_IDL/be_include/be_visitor_component/executor_ex_idl.h new file mode 100644 index 00000000000..04dc6a3e8f1 --- /dev/null +++ b/modules/TAO/TAO_IDL/be_include/be_visitor_component/executor_ex_idl.h @@ -0,0 +1,62 @@ +// +// $Id$ +// +/* -*- c++ -*- */ +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// executor_ex_idl.h +// +// = DESCRIPTION +// Provides code generation for components in the CIAO executor IDL. +// +// = AUTHOR +// Jeff Parsons +// +// ============================================================================ + +#ifndef _BE_COMPONENT_EXECUTOR_EX_IDL_H_ +#define _BE_COMPONENT_EXECUTOR_EX_IDL_H_ + +class be_visitor_executor_ex_idl + : public be_visitor_component_scope +{ + // + // = TITLE + // be_visitor_executor_ex_idl + // + // = DESCRIPTION + // This is a concrete visitor to generate the + // CIAO executor class IDL. + // + // +public: + be_visitor_executor_ex_idl (be_visitor_context *ctx); + + ~be_visitor_executor_ex_idl (void); + + virtual int visit_component (be_component *node); + + /// To regenerate attribute declarations. + virtual int visit_attribute (be_attribute *node); + + /// To regenerate the name of the attribute's referenced + /// (anonymous) type. Anonymous arrays are not allowed. + virtual int visit_string (be_string *node); + virtual int visit_sequence (be_sequence *node); + + virtual int visit_provides (be_provides *node); + virtual int visit_consumes (be_consumes *node); + +private: + void gen_supported (void); + void gen_exception_list (UTL_ExceptList *exceptions, + const char *prefix = "", + bool closed = true); +}; + +#endif /_BE_COMPONENT_EXECUTOR_EX_IDL_H_ */ + diff --git a/modules/TAO/TAO_IDL/be_include/be_visitor_component/facet_ex_idl.h b/modules/TAO/TAO_IDL/be_include/be_visitor_component/facet_ex_idl.h new file mode 100644 index 00000000000..cf2a3fa07ca --- /dev/null +++ b/modules/TAO/TAO_IDL/be_include/be_visitor_component/facet_ex_idl.h @@ -0,0 +1,46 @@ +// +// $Id$ +// +/* -*- c++ -*- */ +// ============================================================================ +// +// = LIBRARY +// TAO IDL +// +// = FILENAME +// facet_ex_idl.h +// +// = DESCRIPTION +// Concrete visitor for the Component node. +// Provides code generation for facets in the CIAO executor IDL +// +// = AUTHOR +// Jeff Parsons +// +// ============================================================================ + +#ifndef _BE_COMPONENT_FACET_EX_IDL_H_ +#define _BE_COMPONENT_FACET_EX_IDL_H_ + +class be_visitor_facet_ex_idl + : public be_visitor_component_scope +{ + // + // = TITLE + // be_visitor_facet_ex_idl + // + // = DESCRIPTION + // This is a concrete visitor to generate the + // CIAO executor IDL for facets. + // + // +public: + be_visitor_facet_ex_idl (be_visitor_context *ctx); + + ~be_visitor_facet_ex_idl (void); + + virtual int visit_provides (be_provides *node); +}; + +#endif /_BE_COMPONENT_FACET_EX_IDL_H_ */ + diff --git a/modules/TAO/TAO_IDL/be_include/be_visitor_component/servant_svh.h b/modules/TAO/TAO_IDL/be_include/be_visitor_component/servant_svh.h index 38eaef1393d..1eb8267dca2 100644 --- a/modules/TAO/TAO_IDL/be_include/be_visitor_component/servant_svh.h +++ b/modules/TAO/TAO_IDL/be_include/be_visitor_component/servant_svh.h @@ -46,8 +46,6 @@ public: virtual int visit_publishes (be_publishes *node); virtual int visit_emits (be_emits *node); virtual int visit_consumes (be_consumes *node); - virtual int visit_extended_port (be_extended_port *node); - virtual int visit_mirror_port (be_mirror_port *node); private: /// Base class overrides and CIAO-specific code. diff --git a/modules/TAO/TAO_IDL/be_include/be_visitor_component/servant_svs.h b/modules/TAO/TAO_IDL/be_include/be_visitor_component/servant_svs.h index d3ae2a8f24c..86492aaebf2 100644 --- a/modules/TAO/TAO_IDL/be_include/be_visitor_component/servant_svs.h +++ b/modules/TAO/TAO_IDL/be_include/be_visitor_component/servant_svs.h @@ -48,8 +48,6 @@ public: virtual int visit_publishes (be_publishes *node); virtual int visit_emits (be_emits *node); virtual int visit_consumes (be_consumes *node); - virtual int visit_extended_port (be_extended_port *node); - virtual int visit_mirror_port (be_mirror_port *node); private: void compute_slots (AST_Component *node); @@ -99,6 +97,12 @@ public: ~be_visitor_attr_set (void); virtual int visit_attribute (be_attribute *node); + + // This visitor has nothing to do with ports, so we + // can override these base class methods to be no-ops. + virtual int visit_extended_port (be_extended_port *node); + virtual int visit_mirror_port (be_mirror_port *node); + virtual int visit_porttype (be_porttype *node); }; // ====================================================== diff --git a/modules/TAO/TAO_IDL/be_include/be_visitor_extended_port.h b/modules/TAO/TAO_IDL/be_include/be_visitor_extended_port.h deleted file mode 100644 index badcd3d50f5..00000000000 --- a/modules/TAO/TAO_IDL/be_include/be_visitor_extended_port.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- c++ -*- */ -// -// $Id$ -// - -// ============================================================================ -// -// = LIBRARY -// TAO IDL -// -// = FILENAME -// be_visitor_extended_port.h -// -// = DESCRIPTION -// Concrete visitors for the extended port class -// -// = AUTHOR -// Jeff Parsons -// -// ============================================================================ - -#ifndef TAO_BE_VISITOR_EXTENDED_PORT_H -#define TAO_BE_VISITOR_EXTENDED_PORT_H - -#include "ast_template_common.h" - -#include "be_porttype.h" -#include "be_extended_port.h" -#include "be_provides.h" - -#include "be_visitor_scope.h" -#include "be_visitor_context.h" - -#include "be_visitor_extended_port/extended_port.h" -#include "be_visitor_extended_port/extended_port_svh.h" -#include "be_visitor_extended_port/extended_port_svs.h" - -#endif /* TAO_BE_VISITOR_EXTENDED_PORT_H */ |