summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2009-10-22 20:41:39 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2009-10-22 20:41:39 +0000
commita712cb080cf8d8b9c2f54adb502dfaaed43cd96b (patch)
treeb356605fbbd80107ff240123fc5cd704995fe2cb
parent21a1d5deeba34ba364fb10a668157de5e9da6e2b (diff)
downloadATCD-a712cb080cf8d8b9c2f54adb502dfaaed43cd96b.tar.gz
ChangeLogTag: Thu Oct 22 20:39:02 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--modules/TAO/ChangeLog15
-rw-r--r--modules/TAO/TAO_IDL/be/be_visitor_component/component_scope.cpp64
-rw-r--r--modules/TAO/TAO_IDL/be/be_visitor_component/facet_svh.cpp19
-rw-r--r--modules/TAO/TAO_IDL/be/be_visitor_component/facet_svs.cpp19
-rw-r--r--modules/TAO/TAO_IDL/be_include/be_visitor_component/component_scope.h5
-rw-r--r--modules/TAO/TAO_IDL/be_include/be_visitor_component/facet_svh.h3
-rw-r--r--modules/TAO/TAO_IDL/be_include/be_visitor_component/facet_svs.h3
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_ */