summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2009-10-29 12:52:13 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2009-10-29 12:52:13 +0000
commit81880503000153b64b4f0ee3ee4018b54220ba38 (patch)
treec7e6c002eef4e633f0f6af28d87ff7f146c6c53e
parent5428ca2afc9c5afc5c3fb61c272e39eff53ad6c2 (diff)
downloadATCD-idl3_plus_v2.tar.gz
ChangeLogTag: Thu Oct 29 12:50:35 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu>idl3_plus_v2
-rw-r--r--modules/TAO/ChangeLog27
-rw-r--r--modules/TAO/TAO_IDL/be/be_codegen.cpp114
-rw-r--r--modules/TAO/TAO_IDL/be/be_global.cpp26
-rw-r--r--modules/TAO/TAO_IDL/be/be_visitor_component/component_exh.cpp9
-rw-r--r--modules/TAO/TAO_IDL/be/be_visitor_component/component_exs.cpp19
-rw-r--r--modules/TAO/TAO_IDL/be/be_visitor_component_scope.cpp87
-rw-r--r--modules/TAO/TAO_IDL/be/be_visitor_connector.cpp27
-rw-r--r--modules/TAO/TAO_IDL/be/be_visitor_connector/connector_dds_exh.cpp57
-rw-r--r--modules/TAO/TAO_IDL/be/be_visitor_connector/connector_dds_exs.cpp57
-rw-r--r--modules/TAO/TAO_IDL/be_include/be_codegen.h10
-rw-r--r--modules/TAO/TAO_IDL/be_include/be_global.h11
-rw-r--r--modules/TAO/TAO_IDL/be_include/be_visitor_component_scope.h8
-rw-r--r--modules/TAO/TAO_IDL/be_include/be_visitor_connector.h35
-rw-r--r--modules/TAO/TAO_IDL/be_include/be_visitor_connector/connector_dds_exh.h48
-rw-r--r--modules/TAO/TAO_IDL/be_include/be_visitor_connector/connector_dds_exs.h46
15 files changed, 522 insertions, 59 deletions
diff --git a/modules/TAO/ChangeLog b/modules/TAO/ChangeLog
index 2e54ee60157..b70cb67f2bb 100644
--- a/modules/TAO/ChangeLog
+++ b/modules/TAO/ChangeLog
@@ -1,3 +1,30 @@
+Thu Oct 29 12:50:35 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * TAO_IDL/be/be_visitor_connector.cpp:
+ * TAO_IDL/be/be_visitor_connector/connector_dds_exs.cpp:
+ * TAO_IDL/be/be_visitor_connector/connector_dds_exh.cpp:
+ * TAO_IDL/be_include/be_visitor_connector.h:
+ * TAO_IDL/be_include/be_visitor_connector/connector_dds_exs.h:
+ * TAO_IDL/be_include/be_visitor_connector/connector_dds_exh.h:
+
+ New visitors, implementing (so far) part of the code
+ generation of connector executors.
+
+ * TAO_IDL/be/be_codegen.cpp:
+ * TAO_IDL/be/be_visitor_component/component_exh.cpp:
+ * TAO_IDL/be/be_visitor_component/component_exs.cpp:
+ * TAO_IDL/be/be_global.cpp:
+ * TAO_IDL/be/be_visitor_component_scope.cpp:
+ * TAO_IDL/be_include/be_codegen.h:
+ * TAO_IDL/be_include/be_visitor_component_scope.h:
+ * TAO_IDL/be_include/be_global.h:
+
+ - Factored out code for generating entrypoint declarations
+ and definitions.
+
+ - Added mechanism to generate includes of DDS type
+ support files for the connector executor.
+
Sun Oct 25 17:10:27 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu>
* TAO_IDL/be_include/be_visitor_component_scope.h:
diff --git a/modules/TAO/TAO_IDL/be/be_codegen.cpp b/modules/TAO/TAO_IDL/be/be_codegen.cpp
index 3a574a35a3e..96672c160f7 100644
--- a/modules/TAO/TAO_IDL/be/be_codegen.cpp
+++ b/modules/TAO/TAO_IDL/be/be_codegen.cpp
@@ -2008,6 +2008,37 @@ TAO_CodeGen::gen_export_file (const char *filename,
}
void
+TAO_CodeGen::gen_standard_include (TAO_OutStream *stream,
+ const char *included_file,
+ bool add_comment)
+{
+ // Switch between changing or non-changing standard include files
+ // include files, so that #include statements can be
+ // generated with ""s or <>s respectively, for the standard include
+ // files (e.g. tao/corba.h).
+
+ const char *start_delimiter = "\"";
+ const char *end_delimiter = "\"";
+
+ if (be_global->changing_standard_include_files () == 0)
+ {
+ start_delimiter = "<";
+ end_delimiter = ">";
+ }
+
+ *stream << "\n#include ";
+
+ if (add_comment)
+ {
+ *stream << "/**/ ";
+ }
+
+ *stream << start_delimiter
+ << included_file
+ << end_delimiter;
+}
+
+void
TAO_CodeGen::gen_ifndef_string (const char *fname,
TAO_OutStream *stream,
const char *prefix,
@@ -2055,37 +2086,6 @@ TAO_CodeGen::gen_ifndef_string (const char *fname,
}
void
-TAO_CodeGen::gen_standard_include (TAO_OutStream *stream,
- const char *included_file,
- bool add_comment)
-{
- // Switch between changing or non-changing standard include files
- // include files, so that #include statements can be
- // generated with ""s or <>s respectively, for the standard include
- // files (e.g. tao/corba.h).
-
- const char *start_delimiter = "\"";
- const char *end_delimiter = "\"";
-
- if (be_global->changing_standard_include_files () == 0)
- {
- start_delimiter = "<";
- end_delimiter = ">";
- }
-
- *stream << "\n#include ";
-
- if (add_comment)
- {
- *stream << "/**/ ";
- }
-
- *stream << start_delimiter
- << included_file
- << end_delimiter;
-}
-
-void
TAO_CodeGen::gen_stub_hdr_includes (void)
{
// Include valuetype and Any/TypeCode headers before ORB core
@@ -3121,6 +3121,58 @@ TAO_CodeGen::gen_exec_hdr_includes (void)
this->gen_standard_include (
this->ciao_exec_header_,
"tao/LocalObject.h");
+
+ // Placeholder until we get real-world logic in place.
+ bool dds_connector_seen = true;
+
+ if (dds_connector_seen)
+ {
+ *this->ciao_exec_header_ << be_nl;
+
+ this->gen_standard_include (this->ciao_exec_header_,
+ "dds4ccm/impl/ndds/NDDS_Traits.h");
+
+ this->gen_standard_include (this->ciao_exec_header_,
+ "dds4ccm/impl/ndds/Connector_T.h");
+
+ size_t const nfiles = idl_global->n_included_idl_files ();
+
+ for (size_t j = 0; j < nfiles; ++j)
+ {
+ char* idl_name = idl_global->included_idl_files ()[j];
+
+ // Make a String out of it.
+ UTL_String idl_name_str = idl_name;
+
+ // No *_svnt.h version of this one.
+ if (ACE_OS::strcmp (idl_name, "Components.idl") == 0)
+ {
+ continue;
+ }
+
+ // Get the constructed IDL file name.
+ const char* ts_hdr =
+ BE_GlobalData::be_get_dds_typesupport_header (
+ &idl_name_str);
+
+ idl_name_str.destroy ();
+
+ // Sanity check and then print.
+ if (ts_hdr != 0)
+ {
+ this->gen_standard_include (
+ this->ciao_exec_header_,
+ ts_hdr);
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("\nERROR, invalid ")
+ ACE_TEXT ("file '%C' included"),
+ ts_hdr));
+ }
+ }
+ }
}
void
diff --git a/modules/TAO/TAO_IDL/be/be_global.cpp b/modules/TAO/TAO_IDL/be/be_global.cpp
index 59046a3e1d3..cf9999542a1 100644
--- a/modules/TAO/TAO_IDL/be/be_global.cpp
+++ b/modules/TAO/TAO_IDL/be/be_global.cpp
@@ -81,6 +81,7 @@ BE_GlobalData::BE_GlobalData (void)
ciao_exec_src_ending_ (ACE::strnew ("_exec.cpp")),
ciao_exec_stub_hdr_ending_ (ACE::strnew ("EC.h")),
ciao_exec_idl_ending_ (ACE::strnew ("E.idl")),
+ dds_typesupport_hdr_ending_ (ACE::strnew ("Support.h")),
output_dir_ (0),
skel_output_dir_ (0),
anyop_output_dir_ (0),
@@ -455,6 +456,18 @@ BE_GlobalData::be_get_ciao_exec_idl (
}
const char *
+BE_GlobalData::be_get_dds_typesupport_header (
+ UTL_String *idl_file_name,
+ bool base_name_only)
+{
+ return
+ be_change_idl_file_extension (
+ idl_file_name,
+ be_global->dds_typesupport_hdr_ending (),
+ base_name_only);
+}
+
+const char *
BE_GlobalData::be_get_client_hdr_fname (
bool base_name_only)
{
@@ -1181,6 +1194,19 @@ BE_GlobalData::ciao_exec_idl_ending (void) const
}
void
+BE_GlobalData::dds_typesupport_hdr_ending (const char* s)
+{
+ ACE::strdelete (this->dds_typesupport_hdr_ending_);
+ this->dds_typesupport_hdr_ending_ = ACE::strnew (s);
+}
+
+const char*
+BE_GlobalData::dds_typesupport_hdr_ending (void) const
+{
+ return this->dds_typesupport_hdr_ending_;
+}
+
+void
BE_GlobalData::output_dir (const char* s)
{
ACE::strdelete (this->output_dir_);
diff --git a/modules/TAO/TAO_IDL/be/be_visitor_component/component_exh.cpp b/modules/TAO/TAO_IDL/be/be_visitor_component/component_exh.cpp
index e245b1a26f4..bb474af29a2 100644
--- a/modules/TAO/TAO_IDL/be/be_visitor_component/component_exh.cpp
+++ b/modules/TAO/TAO_IDL/be/be_visitor_component/component_exh.cpp
@@ -35,6 +35,8 @@ be_visitor_component_exh::~be_visitor_component_exh (void)
int
be_visitor_component_exh::visit_component (be_component *node)
{
+ node_ = node;
+
/// CIDL-generated namespace used 'CIDL_' + composition name.
/// Now we use 'CIAO_' + component's flat name.
os_ << be_nl << be_nl
@@ -67,12 +69,7 @@ be_visitor_component_exh::visit_component (be_component *node)
-1);
}
- os_ << be_nl << be_nl
- << "extern \"C\" " << export_macro_.c_str ()
- << " ::Components::EnterpriseComponent_ptr" << be_nl
- << "create_" << node->flat_name ()
- << "_Impl (void);";
-
+ this->gen_exec_entrypoint_decl ();
os_ << be_uidt_nl
<< "}";
diff --git a/modules/TAO/TAO_IDL/be/be_visitor_component/component_exs.cpp b/modules/TAO/TAO_IDL/be/be_visitor_component/component_exs.cpp
index a48f72b90b8..4871359b5be 100644
--- a/modules/TAO/TAO_IDL/be/be_visitor_component/component_exs.cpp
+++ b/modules/TAO/TAO_IDL/be/be_visitor_component/component_exs.cpp
@@ -36,6 +36,8 @@ be_visitor_component_exs::~be_visitor_component_exs (void)
int
be_visitor_component_exs::visit_component (be_component *node)
{
+ node_ = node;
+
/// CIDL-generated namespace used 'CIDL_' + composition name.
/// Now we use 'CIAO_' + component's flat name.
os_ << be_nl << be_nl
@@ -68,22 +70,7 @@ be_visitor_component_exs::visit_component (be_component *node)
-1);
}
- os_ << be_nl << be_nl
- << "extern \"C\" " << export_macro_.c_str ()
- << " ::Components::EnterpriseComponent_ptr" << be_nl
- << "create_" << node->flat_name ()
- << "_Impl (void)" << be_nl
- << "{" << be_idt_nl
- << "::Components::EnterpriseComponent_ptr retval ="
- << be_idt_nl
- << "::Components::EnterpriseComponent::_nil ();"
- << be_uidt_nl << be_nl
- << "ACE_NEW_NORETURN (" << be_idt_nl
- << "retval," << be_nl
- << node->local_name () << "_exec_i);"
- << be_uidt_nl << be_nl
- << "return retval;" << be_uidt_nl
- << "}";
+ this->gen_exec_entrypoint_defn ();
os_ << be_uidt_nl
<< "}";
diff --git a/modules/TAO/TAO_IDL/be/be_visitor_component_scope.cpp b/modules/TAO/TAO_IDL/be/be_visitor_component_scope.cpp
index 4e4502653e3..28af75ff4c3 100644
--- a/modules/TAO/TAO_IDL/be/be_visitor_component_scope.cpp
+++ b/modules/TAO/TAO_IDL/be/be_visitor_component_scope.cpp
@@ -26,6 +26,7 @@
#include "be_provides.h"
#include "be_uses.h"
+#include "be_helper.h"
#include "be_extern.h"
#include "utl_identifier.h"
@@ -201,4 +202,88 @@ be_visitor_component_scope::pre_process (be_decl *node)
}
return 0;
-} \ No newline at end of file
+}
+
+void
+be_visitor_component_scope::gen_svnt_entrypoint_decl (void)
+{
+ os_ << be_nl << be_nl
+ << "extern \"C\" " << export_macro_.c_str ()
+ << " ::PortableServer::Servant" << be_nl
+ << "create_" << node_->flat_name ()
+ << "_Servant (" << be_idt_nl
+ << "::Components::EnterpriseComponent_ptr p," << be_nl
+ << "::CIAO::Container_ptr c," << be_nl
+ << "const char * ins_name);" << be_uidt;
+}
+
+void
+be_visitor_component_scope::gen_svnt_entrypoint_defn (void)
+{
+ ACE_CString sname_str (
+ ScopeAsDecl (node_->defined_in ())->full_name ());
+ const char *sname = sname_str.c_str ();
+ const char *lname = node_->local_name ();
+ const char *global = (sname_str == "" ? "" : "::");
+
+ os_ << be_nl << be_nl
+ << "extern \"C\" " << export_macro_.c_str ()
+ << " ::PortableServer::Servant" << be_nl
+ << "create_" << node_->flat_name ()
+ << "_Servant (" << be_idt_nl
+ << "::Components::EnterpriseComponent_ptr p," << be_nl
+ << "::CIAO::Container_ptr c," << be_nl
+ << "const char * ins_name)" << be_uidt_nl
+ << "{" << be_idt_nl
+ << global << sname << "::CCM_" << lname
+ << "_var x =" << be_idt_nl
+ << global << sname << "::CCM_" << lname
+ << "::_narrow (p);" << be_uidt_nl << be_nl
+ << "if ( ::CORBA::is_nil (x.in ()))" << be_idt_nl
+ << "{" << be_idt_nl
+ << "return 0;" << be_uidt_nl
+ << "}" << be_uidt_nl << be_nl
+ << "::PortableServer::Servant retval = 0;" << be_nl
+ << "ACE_NEW_RETURN (retval," << be_nl
+ << " " << lname << "_Servant (" << be_idt_nl
+ << " x.in ()," << be_nl
+ << " ::Components::CCMHome::_nil ()," << be_nl
+ << " ins_name," << be_nl
+ << " 0," << be_nl
+ << " c)," << be_uidt_nl
+ << " 0);" << be_nl << be_nl
+ << "return retval;" << be_uidt_nl
+ << "}";
+}
+
+void
+be_visitor_component_scope::gen_exec_entrypoint_decl (void)
+{
+ os_ << be_nl << be_nl
+ << "extern \"C\" " << export_macro_.c_str ()
+ << " ::Components::EnterpriseComponent_ptr" << be_nl
+ << "create_" << node_->flat_name ()
+ << "_Impl (void);";
+}
+
+void
+be_visitor_component_scope::gen_exec_entrypoint_defn (void)
+{
+ os_ << be_nl << be_nl
+ << "extern \"C\" " << export_macro_.c_str ()
+ << " ::Components::EnterpriseComponent_ptr" << be_nl
+ << "create_" << node_->flat_name ()
+ << "_Impl (void)" << be_nl
+ << "{" << be_idt_nl
+ << "::Components::EnterpriseComponent_ptr retval ="
+ << be_idt_nl
+ << "::Components::EnterpriseComponent::_nil ();"
+ << be_uidt_nl << be_nl
+ << "ACE_NEW_NORETURN (" << be_idt_nl
+ << "retval," << be_nl
+ << node_->local_name () << "_exec_i);"
+ << be_uidt_nl << be_nl
+ << "return retval;" << be_uidt_nl
+ << "}";
+}
+
diff --git a/modules/TAO/TAO_IDL/be/be_visitor_connector.cpp b/modules/TAO/TAO_IDL/be/be_visitor_connector.cpp
new file mode 100644
index 00000000000..bff55072b91
--- /dev/null
+++ b/modules/TAO/TAO_IDL/be/be_visitor_connector.cpp
@@ -0,0 +1,27 @@
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// be_visitor_connector.cpp
+//
+// = DESCRIPTION
+// Visitors for generation of code for Connector.
+//
+// = AUTHOR
+// Jeff Parsons
+//
+// ============================================================================
+
+#include "be_connector.h"
+
+#include "be_visitor_connector.h"
+#include "be_visitor_context.h"
+
+#include "be_visitor_connector/connector_dds_exh.cpp"
+#include "be_visitor_connector/connector_dds_exs.cpp"
diff --git a/modules/TAO/TAO_IDL/be/be_visitor_connector/connector_dds_exh.cpp b/modules/TAO/TAO_IDL/be/be_visitor_connector/connector_dds_exh.cpp
new file mode 100644
index 00000000000..28640d3be6f
--- /dev/null
+++ b/modules/TAO/TAO_IDL/be/be_visitor_connector/connector_dds_exh.cpp
@@ -0,0 +1,57 @@
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO_IDL_BE
+//
+// = FILENAME
+// connector_dds_exh.cpp
+//
+// = DESCRIPTION
+// Visitor generating code for DDS Connectors in the exec impl header.
+//
+// = AUTHOR
+// Jeff Parsons
+//
+// ============================================================================
+
+be_visitor_connector_dds_exh::be_visitor_connector_dds_exh (
+ be_visitor_context *ctx)
+ : be_visitor_component_scope (ctx)
+{
+ // This is initialized in the base class to svnt_export_macro()
+ // or skel_export_macro(), since there are many more visitor
+ // classes generating servant code. So we can just override
+ // all that here.
+ export_macro_ = be_global->exec_export_macro ();
+}
+
+be_visitor_connector_dds_exh::~be_visitor_connector_dds_exh (void)
+{
+}
+
+int
+be_visitor_connector_dds_exh::visit_connector (be_connector *node)
+{
+ node_ = node;
+
+ /// CIDL-generated namespace used 'CIDL_' + composition name.
+ /// Now we use 'CIAO_' + component's flat name.
+ os_ << be_nl << be_nl
+ << "namespace CIAO_" << node->flat_name ()
+ << "_Impl" << be_nl
+ << "{" << be_idt;
+
+ // TODO - template class declaration.
+
+ this->gen_exec_entrypoint_decl ();
+
+ os_ << be_uidt_nl
+ << "}";
+
+ return 0;
+}
+
diff --git a/modules/TAO/TAO_IDL/be/be_visitor_connector/connector_dds_exs.cpp b/modules/TAO/TAO_IDL/be/be_visitor_connector/connector_dds_exs.cpp
new file mode 100644
index 00000000000..a85a638a54c
--- /dev/null
+++ b/modules/TAO/TAO_IDL/be/be_visitor_connector/connector_dds_exs.cpp
@@ -0,0 +1,57 @@
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO_IDL_BE
+//
+// = FILENAME
+// connector_dds_exs.cpp
+//
+// = DESCRIPTION
+// Visitor generating code for Connectors in the exec impl source.
+//
+// = AUTHOR
+// Jeff Parsons
+//
+// ============================================================================
+
+be_visitor_connector_dds_exs::be_visitor_connector_dds_exs (
+ be_visitor_context *ctx)
+ : be_visitor_component_scope (ctx)
+{
+ // This is initialized in the base class to svnt_export_macro()
+ // or skel_export_macro(), since there are many more visitor
+ // classes generating servant code. So we can just override
+ // all that here.
+ export_macro_ = be_global->exec_export_macro ();
+}
+
+be_visitor_connector_dds_exs::~be_visitor_connector_dds_exs (void)
+{
+}
+
+int
+be_visitor_connector_dds_exs::visit_connector (be_connector *node)
+{
+ node_ = node;
+
+ /// CIDL-generated namespace used 'CIDL_' + composition name.
+ /// Now we use 'CIAO_' + component's flat name.
+ os_ << be_nl << be_nl
+ << "namespace CIAO_" << node->flat_name ()
+ << "_Impl" << be_nl
+ << "{" << be_idt;
+
+ // TODO - template class constructor and destructor.
+
+ this->gen_exec_entrypoint_defn ();
+
+ os_ << be_uidt_nl
+ << "}";
+
+ return 0;
+}
+
diff --git a/modules/TAO/TAO_IDL/be_include/be_codegen.h b/modules/TAO/TAO_IDL/be_include/be_codegen.h
index 2917397aba4..f939a1763ad 100644
--- a/modules/TAO/TAO_IDL/be_include/be_codegen.h
+++ b/modules/TAO/TAO_IDL/be_include/be_codegen.h
@@ -416,6 +416,12 @@ public:
void gen_export_files (void);
// Generates the export files selected on the command line.
+ void gen_standard_include (TAO_OutStream *stream,
+ const char *included_file,
+ bool add_comment = false);
+ // Generate file include, with optional empty comment to
+ // short-circuit DOxygen.
+
void destroy (void);
// Cleanup.
@@ -425,10 +431,6 @@ private:
const char *prefix,
const char *suffix);
- void gen_standard_include (TAO_OutStream *stream,
- const char *included_file,
- bool add_comment = false);
-
/// Utility methods for generating file includes.
void gen_stub_hdr_includes (void);
void gen_stub_src_includes (void);
diff --git a/modules/TAO/TAO_IDL/be_include/be_global.h b/modules/TAO/TAO_IDL/be_include/be_global.h
index 0cefc31c420..340a13d784d 100644
--- a/modules/TAO/TAO_IDL/be_include/be_global.h
+++ b/modules/TAO/TAO_IDL/be_include/be_global.h
@@ -199,6 +199,10 @@ public:
static const char *be_get_ciao_exec_idl (
UTL_String *idl_file_name,
bool base_name_only = false);
+
+ static const char *be_get_dds_typesupport_header (
+ UTL_String *idl_file_name,
+ bool base_name_only = false);
const char* skel_export_macro (void) const;
/// Returns the macro name for exporting server side classes in Win32
@@ -441,6 +445,10 @@ public:
const char* ciao_exec_idl_ending (void) const;
// Similar to above, but for CIAO servant and executor
// impl and executor IDL files, if generated.
+
+ void dds_typesupport_hdr_ending (const char* s);
+ const char* dds_typesupport_hdr_ending (void) const;
+ // For generating TypeSupport header file includes.
void use_clonable_in_args (bool clonable);
// Set the clonable_in_args.
@@ -846,6 +854,9 @@ private:
// CIAO executor IDL file name ending. Default is "E.idl".
char* ciao_exec_idl_ending_;
+
+ // DDS TypeSupport header file name ending. Default is "Support.h".
+ char* dds_typesupport_hdr_ending_;
char* output_dir_;
// Directory where all the IDL-Compiler-Generated files are to be
diff --git a/modules/TAO/TAO_IDL/be_include/be_visitor_component_scope.h b/modules/TAO/TAO_IDL/be_include/be_visitor_component_scope.h
index 6bf54abf1d1..e442b85ec8f 100644
--- a/modules/TAO/TAO_IDL/be_include/be_visitor_component_scope.h
+++ b/modules/TAO/TAO_IDL/be_include/be_visitor_component_scope.h
@@ -62,7 +62,13 @@ public:
// mirrorport node that may contain reference the
// containing porttype.
// TODO - support nested ports, if they are allowed.
- virtual int pre_process (be_decl *);
+ virtual int pre_process (be_decl *);
+
+protected:
+ void gen_svnt_entrypoint_decl (void);
+ void gen_svnt_entrypoint_defn (void);
+ void gen_exec_entrypoint_decl (void);
+ void gen_exec_entrypoint_defn (void);
protected:
be_component *node_;
diff --git a/modules/TAO/TAO_IDL/be_include/be_visitor_connector.h b/modules/TAO/TAO_IDL/be_include/be_visitor_connector.h
new file mode 100644
index 00000000000..bd625551215
--- /dev/null
+++ b/modules/TAO/TAO_IDL/be_include/be_visitor_connector.h
@@ -0,0 +1,35 @@
+/* -*- c++ -*- */
+//
+// $Id$
+//
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO IDL
+//
+// = FILENAME
+// be_visitor_connector.h
+//
+// = DESCRIPTION
+// Concrete visitors for the Connector
+//
+// = AUTHOR
+// Jeff Parsons
+//
+// ============================================================================
+
+#ifndef TAO_BE_VISITOR_CONNECTOR_H
+#define TAO_BE_VISITOR_CONNECTOR_H
+
+#include "ace/SString.h"
+
+#include "be_helper.h"
+#include "be_extern.h"
+
+#include "be_visitor_component_scope.h"
+
+#include "be_visitor_connector/connector_dds_exh.h"
+#include "be_visitor_connector/connector_dds_exs.h"
+
+#endif /* TAO_BE_VISITOR_CONNECTOR_H */
diff --git a/modules/TAO/TAO_IDL/be_include/be_visitor_connector/connector_dds_exh.h b/modules/TAO/TAO_IDL/be_include/be_visitor_connector/connector_dds_exh.h
new file mode 100644
index 00000000000..2c7071d3f94
--- /dev/null
+++ b/modules/TAO/TAO_IDL/be_include/be_visitor_connector/connector_dds_exh.h
@@ -0,0 +1,48 @@
+//
+// $Id$
+//
+/* -*- c++ -*- */
+// ============================================================================
+//
+// = LIBRARY
+// TAO_IDL_BE
+//
+// = FILENAME
+// connector_dds_exh.h
+//
+// = DESCRIPTION
+// Concrete visitor for the DDS Connector node.
+// This provides for code generation in the exec impl header
+//
+// = AUTHOR
+// Jeff Parsons
+//
+// ============================================================================
+
+#ifndef _BE_CONNECTOR_CONNECTOR_DDS_EXH_H_
+#define _BE_CONNECTOR_CONNECTOR_DDS_EXH_H_
+
+class be_visitor_context;
+
+class be_visitor_connector_dds_exh
+ : public be_visitor_component_scope
+{
+ //
+ // = TITLE
+ // be_visitor_connector_dds_exh
+ //
+ // = DESCRIPTION
+ // This is a concrete visitor to generate
+ // the executor implementation header for DDS connectors.
+ //
+ //
+public:
+ be_visitor_connector_dds_exh (be_visitor_context *ctx);
+
+ ~be_visitor_connector_dds_exh (void);
+
+ virtual int visit_connector (be_connector *node);
+};
+
+#endif /* _BE_CONNECTOR_CONNECTOR_DDS_EXH_H_ */
+
diff --git a/modules/TAO/TAO_IDL/be_include/be_visitor_connector/connector_dds_exs.h b/modules/TAO/TAO_IDL/be_include/be_visitor_connector/connector_dds_exs.h
new file mode 100644
index 00000000000..66a996ccc8a
--- /dev/null
+++ b/modules/TAO/TAO_IDL/be_include/be_visitor_connector/connector_dds_exs.h
@@ -0,0 +1,46 @@
+//
+// $Id$
+//
+/* -*- c++ -*- */
+// ============================================================================
+//
+// = LIBRARY
+// TAO_IDL_BE
+//
+// = FILENAME
+// connector_dds_exs.h
+//
+// = DESCRIPTION
+// Concrete visitor for the DDS Connector node.
+// This provides for code generation in the exec impl source.
+//
+// = AUTHOR
+// Jeff Parsons
+//
+// ============================================================================
+
+#ifndef _BE_CONNECTOR_CONNECTOR_DDS_EXS_H_
+#define _BE_CONNECTOR_CONNECTOR_DDS_EXS_H_
+
+class be_visitor_connector_dds_exs
+ : public be_visitor_component_scope
+{
+ //
+ // = TITLE
+ // be_visitor_connector_dds_exs
+ //
+ // = DESCRIPTION
+ // This is a concrete visitor to generate
+ // the executor implementation source for connectors.
+ //
+ //
+public:
+ be_visitor_connector_dds_exs (be_visitor_context *ctx);
+
+ ~be_visitor_connector_dds_exs (void);
+
+ virtual int visit_connector (be_connector *node);
+};
+
+#endif /* _BE_CONNECTOR_CONNECTOR_DDS_EXS_H_ */
+