summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-02-24 22:53:00 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-02-24 22:53:00 +0000
commit179b3826c39581a1a63ffb78f4d7b193fc7668bd (patch)
treebc3b6155e5bc3eab0f10ee008b2130c13d4b95c8
parentde0d5fd911765f113a354f3004c82ddec0332165 (diff)
downloadATCD-179b3826c39581a1a63ffb78f4d7b193fc7668bd.tar.gz
ChangeLogTag: Mon Feb 24 16:49:34 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--TAO/ChangeLog14
-rw-r--r--TAO/orbsvcs/orbsvcs/IFRService/IFR_Service_Utils_T.cpp247
-rw-r--r--TAO/orbsvcs/orbsvcs/IFRService/IFR_Service_Utils_T.h109
-rw-r--r--TAO/orbsvcs/orbsvcs/IFRService/tmplinst.cpp81
4 files changed, 429 insertions, 22 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog
index fc69990fd88..48e2792c975 100644
--- a/TAO/ChangeLog
+++ b/TAO/ChangeLog
@@ -1,3 +1,17 @@
+Mon Feb 24 16:49:34 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * orbsvcs/orbsvcs/IFRService/IFR_Service_Utils.cpp:
+ * orbsvcs/orbsvcs/IFRService/IFR_Service_Utils.h:
+
+ New files for template classes containing utility methods
+ used by several IFR implementation classes.
+
+ * orbsvcs/orbsvcs/IFRService/tmplinst.cpp:
+
+ Added additional explicit template instantiations corresponding
+ to actual uses of the template classes in the above files.
+
+
Mon Feb 24 000:27:32 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
* orbsvcs/orbsvcs/IFRService/ComponentDef_i.cpp:
diff --git a/TAO/orbsvcs/orbsvcs/IFRService/IFR_Service_Utils_T.cpp b/TAO/orbsvcs/orbsvcs/IFRService/IFR_Service_Utils_T.cpp
new file mode 100644
index 00000000000..b4b7cf3d54f
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/IFRService/IFR_Service_Utils_T.cpp
@@ -0,0 +1,247 @@
+// $Id$
+
+#ifndef TAO_IFR_SERVICE_UTILS_T_CPP
+#define TAO_IFR_SERVICE_UTILS_T_CPP
+
+#include "IFR_Service_Utils_T.h"
+
+ACE_RCSID (IFRService,
+ IFR_Service_Utils_T,
+ "$Id$")
+
+template<typename T>
+void
+TAO_IFR_Generic_Utils<T>::destroy_special (const char *section_name,
+ TAO_Repository_i *repo,
+ ACE_Configuration_Section_Key &key
+ ACE_ENV_ARG_DECL)
+{
+ ACE_Configuration_Section_Key sub_key;
+ int status =
+ repo->config ()->open_section (key,
+ section_name,
+ 0,
+ sub_key);
+
+ if (status != 0)
+ {
+ /// Nothing to destroy.
+ return;
+ }
+
+ CORBA::ULong count = 0;
+ repo->config ()->get_integer_value (sub_key,
+ "count",
+ count);
+
+ char *stringified = 0;
+ ACE_Configuration_Section_Key special_key;
+ ACE_TString holder;
+
+ for (CORBA::ULong i = 0; i < count; ++i)
+ {
+ stringified = TAO_IFR_Service_Utils::int_to_string (i);
+ repo->config ()->open_section (sub_key,
+ stringified,
+ 0,
+ special_key);
+ T impl (repo);
+ impl.section_key (special_key);
+ impl.destroy_i (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_CHECK;
+ }
+}
+
+template<typename T_strseq>
+void
+TAO_IFR_Strseq_Utils<T_strseq> ::fill_string_seq (
+ const char *section_name,
+ ACE_Configuration *config,
+ ACE_Configuration_Section_Key &key,
+ T_strseq &seq
+ )
+{
+ ACE_Configuration_Section_Key section_key;
+ int status = config->open_section (key,
+ section_name,
+ 0,
+ section_key);
+
+ if (status != 0)
+ {
+ seq.length (0);
+ return;
+ }
+
+ CORBA::ULong count = 0;
+ config->get_integer_value (section_key,
+ "count",
+ count);
+ seq.length (count);
+ char *stringified = 0;
+ ACE_TString holder;
+
+ for (CORBA::ULong i = 0; i < count; ++i)
+ {
+ stringified = TAO_IFR_Service_Utils::int_to_string (i);
+ config->get_string_value (section_key,
+ stringified,
+ holder);
+ seq[i] = holder.fast_rep ();
+ }
+}
+
+template<typename T_desc_seq>
+void
+TAO_Port_Desc_Seq_Utils<T_desc_seq>::port_descriptions (
+ T_desc_seq &desc_seq,
+ ACE_Configuration *config,
+ ACE_Configuration_Section_Key &key,
+ const char *sub_section
+ )
+{
+ ACE_Configuration_Section_Key sub_key;
+ int status = config->open_section (key,
+ sub_section,
+ 0,
+ sub_key);
+
+ if (status != 0)
+ {
+ desc_seq.length (0);
+ return;
+ }
+
+ CORBA::ULong count = 0;
+ config->get_integer_value (sub_key,
+ "count",
+ count);
+ desc_seq.length (count);
+ ACE_Configuration_Section_Key desc_key;
+ char *stringified = 0;
+ ACE_TString holder;
+
+ for (CORBA::ULong i = 0; i < count; ++i)
+ {
+ stringified = TAO_IFR_Service_Utils::int_to_string (i);
+ config->open_section (sub_key,
+ stringified,
+ 0,
+ desc_key);
+
+ config->get_string_value (desc_key,
+ "name",
+ holder);
+ desc_seq[i].name = holder.c_str ();
+
+ config->get_string_value (desc_key,
+ "id",
+ holder);
+ desc_seq[i].id = holder.c_str ();
+
+ /// Seems to me that this field should refer to the component
+ /// where the port is defined - NOT where the base type is defined.
+ config->get_string_value (key,
+ "id",
+ holder);
+ desc_seq[i].defined_in = holder.c_str ();
+
+ config->get_string_value (desc_key,
+ "version",
+ holder);
+ desc_seq[i].version = holder.c_str ();
+
+ config->get_string_value (key,
+ "base_type",
+ holder);
+ TAO_Port_Desc_Seq_Utils<T_desc_seq>::port_base_type (desc_seq,
+ holder,
+ i);
+
+ TAO_Port_Desc_Seq_Utils<T_desc_seq>::get_is_multiple (desc_seq,
+ config,
+ key,
+ i);
+ }
+}
+
+template<typename T_desc_seq>
+void
+TAO_Port_Desc_Seq_Utils<T_desc_seq>::get_is_multiple (
+ T_desc_seq &,
+ ACE_Configuration *,
+ ACE_Configuration_Section_Key &,
+ CORBA::ULong
+ )
+{
+ // All types except UsesDescription have no is_multiple member.
+}
+
+template<typename T_desc_seq>
+void
+TAO_Port_Desc_Seq_Utils<T_desc_seq>::port_base_type (T_desc_seq &desc_seq,
+ ACE_TString &holder,
+ CORBA::ULong index)
+{
+ desc_seq[index].interface_type = holder.fast_rep ();
+}
+
+template<typename T>
+T *
+TAO_Port_Utils<T>::create_entry (const char *id,
+ const char *name,
+ const char *version,
+ const char *sub_section,
+ CORBA::Container_ptr port_base_type,
+ CORBA::Boolean is_multiple,
+ TAO_Repository_i *repo,
+ CORBA::DefinitionKind port_kind,
+ ACE_Configuration_Section_Key &key
+ ACE_ENV_ARG_DECL)
+{
+ TAO_Container_i::tmp_name_holder (name);
+ ACE_Configuration_Section_Key new_key;
+ ACE_TString path =
+ TAO_IFR_Service_Utils::create_common (CORBA::dk_Component,
+ port_kind,
+ key,
+ new_key,
+ repo,
+ id,
+ name,
+ &TAO_Container_i::same_as_tmp_name,
+ version,
+ sub_section
+ ACE_ENV_ARG_DECL);
+
+ repo->config ()->set_string_value (
+ new_key,
+ "base_type",
+ port_base_type->_interface_repository_id ()
+ );
+
+ TAO_Port_Utils<T>::set_is_multiple (is_multiple,
+ repo->config (),
+ new_key);
+
+ CORBA::Object_var obj =
+ TAO_IFR_Service_Utils::path_to_ir_object (path,
+ repo
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (CORBA::ComponentIR::ProvidesDef::_nil ());
+
+ return T::_narrow (obj.in ()
+ ACE_ENV_ARG_PARAMETER);
+}
+
+template<typename T>
+void
+TAO_Port_Utils<T>::set_is_multiple (CORBA::Boolean,
+ ACE_Configuration *,
+ ACE_Configuration_Section_Key &)
+{
+ /// Do nothing for eveything except UsesDef.
+}
+
+#endif /* TAO_IFR_SERVICE_UTILS_T_CPP */
+
diff --git a/TAO/orbsvcs/orbsvcs/IFRService/IFR_Service_Utils_T.h b/TAO/orbsvcs/orbsvcs/IFRService/IFR_Service_Utils_T.h
new file mode 100644
index 00000000000..67b9811150b
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/IFRService/IFR_Service_Utils_T.h
@@ -0,0 +1,109 @@
+/* -*- C++ -*- */
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// TAO/orbsvcs/orbsvcs/IFRService
+//
+// = FILENAME
+// IFR_Service_Utils_T.h
+//
+// = DESCRIPTION
+// Template methods useful to IFR Service .
+//
+// = AUTHORS
+// Jeff Parsons <j.parsons@vanderbiltl.edu>
+//
+// ============================================================================
+
+#ifndef TAO_IFR_SERVICE_UTILS_T_H
+#define TAO_IFR_SERVICE_UTILS_T_H
+#include "ace/pre.h"
+
+#include "ace/Configuration.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "tao/IFR_Client/IFR_ComponentsC.h"
+
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1200)
+#pragma warning(push)
+#endif /* _MSC_VER >= 1200 */
+#pragma warning(disable:4250)
+#endif /* _MSC_VER */
+
+class TAO_Repository_i;
+
+template<typename T>
+class TAO_IFR_Generic_Utils
+{
+public:
+ static void destroy_special (const char *section_name,
+ TAO_Repository_i *repo,
+ ACE_Configuration_Section_Key &key
+ ACE_ENV_ARG_DECL);
+};
+
+template<typename T_strseq>
+class TAO_IFR_Strseq_Utils
+{
+public:
+ static void fill_string_seq (const char *section_name,
+ ACE_Configuration *config,
+ ACE_Configuration_Section_Key &key,
+ T_strseq &seq);
+};
+
+template <typename T_desc_seq>
+class TAO_Port_Desc_Seq_Utils
+{
+public:
+ static void port_descriptions (T_desc_seq &desc_seq,
+ ACE_Configuration *config,
+ ACE_Configuration_Section_Key &key,
+ const char *sub_section);
+
+ static void get_is_multiple (T_desc_seq &desc_seq,
+ ACE_Configuration *config,
+ ACE_Configuration_Section_Key &key,
+ CORBA::ULong index);
+
+ static void port_base_type (T_desc_seq &desc_seq,
+ ACE_TString &holder,
+ CORBA::ULong index);
+};
+
+template<typename T>
+class TAO_Port_Utils
+{
+public:
+ static T *create_entry (const char *id,
+ const char *name,
+ const char *version,
+ const char *sub_section,
+ CORBA::Container_ptr port_base_type,
+ CORBA::Boolean is_multiple,
+ TAO_Repository_i *repo,
+ CORBA::DefinitionKind port_kind,
+ ACE_Configuration_Section_Key &key
+ ACE_ENV_ARG_DECL);
+
+ static void set_is_multiple (CORBA::Boolean is_multiple,
+ ACE_Configuration *config,
+ ACE_Configuration_Section_Key &key);
+};
+
+#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
+#include "IFR_Service_Utils_T.cpp"
+#endif /* defined REQUIRED SOURCE */
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+#pragma warning(pop)
+#endif /* _MSC_VER */
+
+#endif /* TAO_IFR_SERVICE_UTILS_T_H */
+
diff --git a/TAO/orbsvcs/orbsvcs/IFRService/tmplinst.cpp b/TAO/orbsvcs/orbsvcs/IFRService/tmplinst.cpp
index ad2c9fdf6e8..a0a0f3b97cd 100644
--- a/TAO/orbsvcs/orbsvcs/IFRService/tmplinst.cpp
+++ b/TAO/orbsvcs/orbsvcs/IFRService/tmplinst.cpp
@@ -1,6 +1,7 @@
// $Id$
#include "concrete_classes.h"
+#include "IFR_Service_Utils_T.h"
#include "ace/Auto_Ptr.h"
ACE_RCSID (IFRService,
@@ -17,7 +18,7 @@ template class ACE_Unbounded_Queue<ACE_Configuration_Section_Key>;
template class ACE_Unbounded_Queue_Iterator<ACE_Configuration_Section_Key>;
template class POA_CORBA::Repository_tie<TAO_Repository_i>;
-template class POA_IR::ComponentRepository_tie<TAO_ComponentRepository_i>;
+template class POA_CORBA::Component_IR::Repository_tie<TAO_ComponentRepository_i>;
template class POA_CORBA::PrimitiveDef_tie<TAO_PrimitiveDef_i>;
template class POA_CORBA::StringDef_tie<TAO_StringDef_i>;
template class POA_CORBA::WstringDef_tie<TAO_WstringDef_i>;
@@ -30,19 +31,19 @@ template class POA_CORBA::NativeDef_tie<TAO_NativeDef_i>;
template class POA_CORBA::ValueBoxDef_tie<TAO_ValueBoxDef_i>;
template class POA_CORBA::UnionDef_tie<TAO_UnionDef_i>;
template class POA_CORBA::StructDef_tie<TAO_StructDef_i>;
-template class POA_IR::ConsumesDef_tie<TAO_ConsumesDef_i>;
-template class POA_IR::PublishesDef_tie<TAO_PublishesDef_i>;
-template class POA_IR::EmitsDef_tie<TAO_EmitsDef_i>;
-template class POA_IR::EventDef_tie<TAO_EventDef_i>;
-template class POA_IR::ProvidesDef_tie<TAO_ProvidesDef_i>;
-template class POA_IR::UsesDef_tie<TAO_UsesDef_i>;
+template class POA_CORBA::Component_IR::ConsumesDef_tie<TAO_ConsumesDef_i>;
+template class POA_CORBA::Component_IR::PublishesDef_tie<TAO_PublishesDef_i>;
+template class POA_CORBA::Component_IR::EmitsDef_tie<TAO_EmitsDef_i>;
+template class POA_CORBA::Component_IR::EventDef_tie<TAO_EventDef_i>;
+template class POA_CORBA::Component_IR::ProvidesDef_tie<TAO_ProvidesDef_i>;
+template class POA_CORBA::Component_IR::UsesDef_tie<TAO_UsesDef_i>;
template class POA_CORBA::ValueMemberDef_tie<TAO_ValueMemberDef_i>;
-template class POA_IR::FactoryDef_tie<TAO_FactoryDef_i>;
-template class POA_IR::FinderDef_tie<TAO_FinderDef_i>;
+template class POA_CORBA::Component_IR::FactoryDef_tie<TAO_FactoryDef_i>;
+template class POA_CORBA::Component_IR::FinderDef_tie<TAO_FinderDef_i>;
template class POA_CORBA::AttributeDef_tie<TAO_AttributeDef_i>;
template class POA_CORBA::ConstantDef_tie<TAO_ConstantDef_i>;
-template class POA_IR::ComponentDef_tie<TAO_ComponentDef_i>;
-template class POA_IR::HomeDef_tie<TAO_HomeDef_i>;
+template class POA_CORBA::Component_IR::ComponentDef_tie<TAO_ComponentDef_i>;
+template class POA_CORBA::Component_IR::HomeDef_tie<TAO_HomeDef_i>;
template class POA_CORBA::ValueDef_tie<TAO_ValueDef_i>;
template class POA_CORBA::ExceptionDef_tie<TAO_ExceptionDef_i>;
template class POA_CORBA::ModuleDef_tie<TAO_ModuleDef_i>;
@@ -128,6 +129,24 @@ template class ACE_Auto_Basic_Ptr<TAO_IDLType_i>;
template class ACE_Auto_Basic_Ptr<char>;
+template class TAO_IFR_Generic_Utils<TAO_AttributeDef_i>;
+template class TAO_IFR_Generic_Utils<TAO_OperationDef_i>;
+template class TAO_IFR_Generic_Utils<TAO_ProvidesDef_i>;
+template class TAO_IFR_Generic_Utils<TAO_UsesDef_i>;
+template class TAO_IFR_Generic_Utils<TAO_EmitsDef_i>;
+template class TAO_IFR_Generic_Utils<TAO_PublishesDef_i>;
+template class TAO_IFR_Generic_Utils<TAO_ConsumesDef_i>;
+template class TAO_Port_Desc_Seq_Utils<CORBA::ComponentIR::ProvidesDescriptionSeq>;
+template class TAO_Port_Desc_Seq_Utils<CORBA::ComponentIR::UsesDescriptionSeq>;
+template class TAO_Port_Desc_Seq_Utils<CORBA::ComponentIR::EventPortDescriptionSeq>;
+template class TAO_Port_Utils<CORBA::ComponentIR::ProvidesDef>;
+template class TAO_Port_Utils<CORBA::ComponentIR::UsesDef>;
+template class TAO_Port_Utils<CORBA::ComponentIR::EmitsDef>;
+template class TAO_Port_Utils<CORBA::ComponentIR::PublishesDef>;
+template class TAO_Port_Utils<CORBA::ComponentIR::ConsumesDef>;
+template class TAO_IFR_Strseq_Utils<CORBA::RepositoryIdSeq>;
+template class TAO_IFR_Strseq_Utils<CORBA::ContextIdSeq>;
+
#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
#pragma instantiate ACE_Node<CORBA::DefinitionKind>
@@ -138,7 +157,7 @@ template class ACE_Auto_Basic_Ptr<char>;
#pragma instantiate ACE_Unbounded_Queue_Iterator<ACE_Configuration_Section_Key>
#pragma instantiate POA_CORBA::Repository_tie<TAO_Repository_i>
-#pragma instantiate POA_IR::ComponentRepository_tie<TAO_ComponentRepository_i>
+#pragma instantiate POA_CORBA::Component_IR::Repository_tie<TAO_ComponentRepository_i>
#pragma instantiate POA_CORBA::PrimitiveDef_tie<TAO_PrimitiveDef_i>
#pragma instantiate POA_CORBA::StringDef_tie<TAO_StringDef_i>
#pragma instantiate POA_CORBA::WstringDef_tie<TAO_WstringDef_i>
@@ -151,19 +170,19 @@ template class ACE_Auto_Basic_Ptr<char>;
#pragma instantiate POA_CORBA::ValueBoxDef_tie<TAO_ValueBoxDef_i>
#pragma instantiate POA_CORBA::UnionDef_tie<TAO_UnionDef_i>
#pragma instantiate POA_CORBA::StructDef_tie<TAO_StructDef_i>
-#pragma instantiate POA_IR::ConsumesDef_tie<TAO_ConsumesDef_i>
-#pragma instantiate POA_IR::PublishesDef_tie<TAO_PublishesDef_i>
-#pragma instantiate POA_IR::EmitsDef_tie<TAO_EmitsDef_i>
-#pragma instantiate POA_IR::EventDef_tie<TAO_PrimaryKeyDef_i>
-#pragma instantiate POA_IR::ProvidesDef_tie<TAO_ProvidesDef_i>
-#pragma instantiate POA_IR::UsesDef_tie<TAO_UsesDef_i>
+#pragma instantiate POA_CORBA::Component_IR::ConsumesDef_tie<TAO_ConsumesDef_i>
+#pragma instantiate POA_CORBA::Component_IR::PublishesDef_tie<TAO_PublishesDef_i>
+#pragma instantiate POA_CORBA::Component_IR::EmitsDef_tie<TAO_EmitsDef_i>
+#pragma instantiate POA_CORBA::Component_IR::EventDef_tie<TAO_PrimaryKeyDef_i>
+#pragma instantiate POA_CORBA::Component_IR::ProvidesDef_tie<TAO_ProvidesDef_i>
+#pragma instantiate POA_CORBA::Component_IR::UsesDef_tie<TAO_UsesDef_i>
#pragma instantiate POA_CORBA::ValueMemberDef_tie<TAO_ValueMemberDef_i>
-#pragma instantiate POA_IR::FactoryDef_tie<TAO_FactoryDef_i>
-#pragma instantiate POA_IR::FinderDef_tie<TAO_FinderDef_i>
+#pragma instantiate POA_CORBA::Component_IR::FactoryDef_tie<TAO_FactoryDef_i>
+#pragma instantiate POA_CORBA::Component_IR::FinderDef_tie<TAO_FinderDef_i>
#pragma instantiate POA_CORBA::AttributeDef_tie<TAO_AttributeDef_i>
#pragma instantiate POA_CORBA::ConstantDef_tie<TAO_ConstantDef_i>
-#pragma instantiate POA_IR::ComponentDef_tie<TAO_ComponentDef_i>
-#pragma instantiate POA_IR::HomeDef_tie<TAO_HomeDef_i>
+#pragma instantiate POA_CORBA::Component_IR::ComponentDef_tie<TAO_ComponentDef_i>
+#pragma instantiate POA_CORBA::Component_IR::HomeDef_tie<TAO_HomeDef_i>
#pragma instantiate POA_CORBA::ValueDef_tie<TAO_ValueDef_i>
#pragma instantiate POA_CORBA::ExceptionDef_tie<TAO_ExceptionDef_i>
#pragma instantiate POA_CORBA::ModuleDef_tie<TAO_ModuleDef_i>
@@ -249,4 +268,22 @@ template class ACE_Auto_Basic_Ptr<char>;
#pragma instantiate ACE_Auto_Basic_Ptr<char>
+#pragma instantiate TAO_IFR_Generic_Utils<TAO_AttributeDef_i>
+#pragma instantiate TAO_IFR_Generic_Utils<TAO_OperationDef_i>
+#pragma instantiate TAO_IFR_Generic_Utils<TAO_ProvidesDef_i>
+#pragma instantiate TAO_IFR_Generic_Utils<TAO_UsesDef_i>
+#pragma instantiate TAO_IFR_Generic_Utils<TAO_EmitsDef_i>
+#pragma instantiate TAO_IFR_Generic_Utils<TAO_PublishesDef_i>
+#pragma instantiate TAO_IFR_Generic_Utils<TAO_ConsumesDef_i>
+#pragma instantiate TAO_Port_Desc_Seq_Utils<CORBA::ComponentIR::ProvidesDescriptionSeq>
+#pragma instantiate TAO_Port_Desc_Seq_Utils<CORBA::ComponentIR::UsesDescriptionSeq>
+#pragma instantiate TAO_Port_Desc_Seq_Utils<CORBA::ComponentIR::EventPortDescriptionSeq>
+#pragma instantiate TAO_Port_Utils<CORBA::ComponentIR::ProvidesDef>
+#pragma instantiate TAO_Port_Utils<CORBA::ComponentIR::UsesDef>
+#pragma instantiate TAO_Port_Utils<CORBA::ComponentIR::EmitsDef>
+#pragma instantiate TAO_Port_Utils<CORBA::ComponentIR::PublishesDef>
+#pragma instantiate TAO_Port_Utils<CORBA::ComponentIR::ConsumesDef>
+#pragma instantiate TAO_IFR_Strseq_Utils<CORBA::RepositoryIdSeq>
+#pragma instantiate TAO_IFR_Strseq_Utils<CORBA::ContextIdSeq>
+
#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */