diff options
author | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2009-10-22 20:41:39 +0000 |
---|---|---|
committer | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2009-10-22 20:41:39 +0000 |
commit | a712cb080cf8d8b9c2f54adb502dfaaed43cd96b (patch) | |
tree | b356605fbbd80107ff240123fc5cd704995fe2cb | |
parent | 21a1d5deeba34ba364fb10a668157de5e9da6e2b (diff) | |
download | ATCD-a712cb080cf8d8b9c2f54adb502dfaaed43cd96b.tar.gz |
ChangeLogTag: Thu Oct 22 20:39:02 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu>
7 files changed, 81 insertions, 47 deletions
diff --git a/modules/TAO/ChangeLog b/modules/TAO/ChangeLog index 6e92ac40a25..b675918f665 100644 --- a/modules/TAO/ChangeLog +++ b/modules/TAO/ChangeLog @@ -1,3 +1,18 @@ +Thu Oct 22 20:39:02 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu> + + * TAO_IDL/be/be_visitor_component/component_scope.cpp: + * TAO_IDL/be_include/be_visitor_component/component_scope.h: + + Added code generation for mirror ports. + + * TAO_IDL/be_include/be_visitor_component/facet_svh.h: + * TAO_IDL/be_include/be_visitor_component/facet_svs.h: + * TAO_IDL/be/be_visitor_component/facet_svh.cpp: + * TAO_IDL/be/be_visitor_component/facet_svs.cpp: + + Changed base class to be_visitor_component_scope to + pull in the mirror port support. + Thu Oct 22 19:21:26 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu> * TAO_IDL/be/be_visitor_component/facet_exs.cpp: 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 9a95461794d..5666eb6db84 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 @@ -51,10 +51,9 @@ be_visitor_component_scope::visit_extended_port ( int be_visitor_component_scope::visit_mirror_port ( - be_mirror_port *) + be_mirror_port *node) { - // TODO - return 0; + return this->visit_porttype_mirror (node->port_type ()); } int @@ -86,3 +85,62 @@ be_visitor_component_scope::visit_component_scope ( return this->visit_component_scope (node->base_component ()); } +int +be_visitor_component_scope::visit_porttype_mirror (be_porttype *node) +{ + for (UTL_ScopeActiveIterator si (node, UTL_Scope::IK_decls); + !si.is_done (); + si.next ()) + { + be_decl *d = be_decl::narrow_from_decl (si.item ()); + + switch (d->node_type ()) + { + case AST_Decl::NT_provides: + { + be_provides *p = + be_provides::narrow_from_decl (d); + + be_uses mirror_node (p->name (), + p->provides_type (), + false); + + if (this->visit_uses (&mirror_node) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("be_visitor_component_scope") + ACE_TEXT ("::visit_porttype_mirror - ") + ACE_TEXT ("visit_uses() failed\n")), + -1); + } + + mirror_node.destroy (); + break; + } + case AST_Decl::NT_uses: + { + be_uses *u = + be_uses::narrow_from_decl (d); + + be_provides mirror_node (u->name (), + u->uses_type ()); + + if (this->visit_provides (&mirror_node) == -1) + { + ACE_ERROR_RETURN ((LM_ERROR, + ACE_TEXT ("be_visitor_component_scope") + ACE_TEXT ("::visit_porttype_mirror - ") + ACE_TEXT ("visit_provides() failed\n")), + -1); + } + + mirror_node.destroy (); + break; + } + default: + return d->accept (this); + } + } + + return 0; +}
\ No newline at end of file diff --git a/modules/TAO/TAO_IDL/be/be_visitor_component/facet_svh.cpp b/modules/TAO/TAO_IDL/be/be_visitor_component/facet_svh.cpp index be3fa5f04d9..f101db9a78b 100644 --- a/modules/TAO/TAO_IDL/be/be_visitor_component/facet_svh.cpp +++ b/modules/TAO/TAO_IDL/be/be_visitor_component/facet_svh.cpp @@ -44,22 +44,3 @@ be_visitor_facet_svh::visit_provides (be_provides *node) return 0; } -int -be_visitor_facet_svh::visit_extended_port (be_extended_port *node) -{ - return this->visit_porttype (node->port_type ()); -} - -int -be_visitor_facet_svh::visit_mirror_port (be_mirror_port *) -{ - // TODO - return 0; -} - -int -be_visitor_facet_svh::visit_porttype (be_porttype *node) -{ - return this->visit_scope (node); -} - diff --git a/modules/TAO/TAO_IDL/be/be_visitor_component/facet_svs.cpp b/modules/TAO/TAO_IDL/be/be_visitor_component/facet_svs.cpp index bffaba45512..9df81807a4f 100644 --- a/modules/TAO/TAO_IDL/be/be_visitor_component/facet_svs.cpp +++ b/modules/TAO/TAO_IDL/be/be_visitor_component/facet_svs.cpp @@ -44,22 +44,3 @@ be_visitor_facet_svs::visit_provides (be_provides *node) return 0; } -int -be_visitor_facet_svs::visit_extended_port (be_extended_port *node) -{ - return this->visit_porttype (node->port_type ()); -} - -int -be_visitor_facet_svs::visit_mirror_port (be_mirror_port *) -{ - // TODO - return 0; -} - -int -be_visitor_facet_svs::visit_porttype (be_porttype *node) -{ - return this->visit_scope (node); -} - 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 cacccd89bb0..d8d3166f239 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 @@ -42,8 +42,13 @@ public: virtual int visit_mirror_port (be_mirror_port *node); virtual int visit_porttype (be_porttype *node); + // Automatically recurses to the ancestor scopes, if any. int visit_component_scope (be_component *node); + // Swaps uses for provides members and vice versa.S + + int visit_porttype_mirror (be_porttype *node); + protected: be_component *node_; TAO_OutStream &os_; diff --git a/modules/TAO/TAO_IDL/be_include/be_visitor_component/facet_svh.h b/modules/TAO/TAO_IDL/be_include/be_visitor_component/facet_svh.h index 789823020db..5c57ea3e0e6 100644 --- a/modules/TAO/TAO_IDL/be_include/be_visitor_component/facet_svh.h +++ b/modules/TAO/TAO_IDL/be_include/be_visitor_component/facet_svh.h @@ -40,9 +40,6 @@ public: ~be_visitor_facet_svh (void); virtual int visit_provides (be_provides *node); - 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); }; #endif /* _BE_COMPONENT_FACET_SVH_H_ */ diff --git a/modules/TAO/TAO_IDL/be_include/be_visitor_component/facet_svs.h b/modules/TAO/TAO_IDL/be_include/be_visitor_component/facet_svs.h index 31ec2093f48..9dbc7dc64f5 100644 --- a/modules/TAO/TAO_IDL/be_include/be_visitor_component/facet_svs.h +++ b/modules/TAO/TAO_IDL/be_include/be_visitor_component/facet_svs.h @@ -40,9 +40,6 @@ public: ~be_visitor_facet_svs (void); virtual int visit_provides (be_provides *node); - 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); }; #endif /* _BE_COMPONENT_FACET_SVS_H_ */ |