summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/IFR_Service/Servant_Factory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/IFR_Service/Servant_Factory.cpp')
-rw-r--r--TAO/orbsvcs/IFR_Service/Servant_Factory.cpp1492
1 files changed, 1492 insertions, 0 deletions
diff --git a/TAO/orbsvcs/IFR_Service/Servant_Factory.cpp b/TAO/orbsvcs/IFR_Service/Servant_Factory.cpp
new file mode 100644
index 00000000000..64cd9fb8ff7
--- /dev/null
+++ b/TAO/orbsvcs/IFR_Service/Servant_Factory.cpp
@@ -0,0 +1,1492 @@
+// $Id$
+
+#include "Servant_Factory.h"
+#include "concrete_classes.h"
+#include "IFR_ComponentsS.h"
+#include "ace/Auto_Ptr.h"
+
+ACE_RCSID(IFR_Service, Servant_Factory, "$Id$")
+
+IFR_Servant_Factory::IFR_Servant_Factory (TAO_Repository_i *repo)
+ : repo_ (repo)
+{
+}
+
+TAO_IDLType_i *
+IFR_Servant_Factory::create_idltype (
+ ACE_Configuration_Section_Key servant_key
+ ACE_ENV_ARG_DECL
+ )
+{
+ u_int def_kind = 0;
+ this->repo_->config ()->get_integer_value (servant_key,
+ "def_kind",
+ def_kind);
+
+ switch (ACE_static_cast (CORBA::DefinitionKind, def_kind))
+ {
+ case CORBA::dk_Interface:
+ {
+ TAO_InterfaceDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_InterfaceDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_AbstractInterface:
+ {
+ TAO_AbstractInterfaceDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_AbstractInterfaceDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_LocalInterface:
+ {
+ TAO_LocalInterfaceDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_LocalInterfaceDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Alias:
+ {
+ TAO_AliasDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_AliasDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Struct:
+ {
+ TAO_StructDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_StructDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Union:
+ {
+ TAO_UnionDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_UnionDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Enum:
+ {
+ TAO_EnumDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_EnumDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Primitive:
+ {
+ TAO_PrimitiveDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_PrimitiveDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_String:
+ {
+ TAO_StringDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_StringDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Sequence:
+ {
+ TAO_SequenceDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_SequenceDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Array:
+ {
+ TAO_ArrayDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_ArrayDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Wstring:
+ {
+ TAO_WstringDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_WstringDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Fixed:
+ {
+ TAO_FixedDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_FixedDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Value:
+ {
+ TAO_ValueDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_ValueDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_ValueBox:
+ {
+ TAO_ValueBoxDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_ValueBoxDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Native:
+ {
+ TAO_NativeDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_NativeDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Component:
+ {
+ TAO_ComponentDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_ComponentDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Home:
+ {
+ TAO_HomeDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_HomeDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ default:
+ return 0;
+ }
+}
+
+TAO_Contained_i *
+IFR_Servant_Factory::create_contained (
+ ACE_Configuration_Section_Key servant_key
+ ACE_ENV_ARG_DECL
+ )
+{
+ u_int def_kind = 0;
+ this->repo_->config ()->get_integer_value (servant_key,
+ "def_kind",
+ def_kind);
+
+ switch (ACE_static_cast (CORBA::DefinitionKind, def_kind))
+ {
+ case CORBA::dk_Interface:
+ {
+ TAO_InterfaceDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_InterfaceDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_AbstractInterface:
+ {
+ TAO_AbstractInterfaceDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_AbstractInterfaceDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_LocalInterface:
+ {
+ TAO_LocalInterfaceDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_LocalInterfaceDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Alias:
+ {
+ TAO_AliasDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_AliasDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Struct:
+ {
+ TAO_StructDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_StructDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Union:
+ {
+ TAO_UnionDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_UnionDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Enum:
+ {
+ TAO_EnumDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_EnumDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Module:
+ {
+ TAO_ModuleDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_ModuleDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Exception:
+ {
+ TAO_ExceptionDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_ExceptionDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Constant:
+ {
+ TAO_ConstantDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_ConstantDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_ValueMember:
+ {
+ TAO_ValueMemberDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_ValueMemberDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Uses:
+ {
+ TAO_UsesDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_UsesDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Provides:
+ {
+ TAO_ProvidesDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_ProvidesDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_PrimaryKey:
+ {
+ TAO_PrimaryKeyDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_PrimaryKeyDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Emits:
+ {
+ TAO_EmitsDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_EmitsDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Publishes:
+ {
+ TAO_PublishesDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_PublishesDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Consumes:
+ {
+ TAO_ConsumesDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_ConsumesDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Attribute:
+ {
+ TAO_AttributeDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_AttributeDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Operation:
+ {
+ TAO_OperationDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_OperationDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Value:
+ {
+ TAO_ValueDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_ValueDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_ValueBox:
+ {
+ TAO_ValueBoxDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_ValueBoxDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Native:
+ {
+ TAO_NativeDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_NativeDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Component:
+ {
+ TAO_ComponentDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_ComponentDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Home:
+ {
+ TAO_HomeDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_HomeDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ default:
+ return 0;
+ }
+}
+
+TAO_Container_i *
+IFR_Servant_Factory::create_container (
+ ACE_Configuration_Section_Key servant_key
+ ACE_ENV_ARG_DECL
+ )
+{
+ u_int def_kind = 0;
+ this->repo_->config ()->get_integer_value (servant_key,
+ "def_kind",
+ def_kind);
+
+ switch (ACE_static_cast (CORBA::DefinitionKind, def_kind))
+ {
+ case CORBA::dk_Interface:
+ {
+ TAO_InterfaceDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_InterfaceDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_AbstractInterface:
+ {
+ TAO_AbstractInterfaceDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_AbstractInterfaceDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_LocalInterface:
+ {
+ TAO_LocalInterfaceDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_LocalInterfaceDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Struct:
+ {
+ TAO_StructDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_StructDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Union:
+ {
+ TAO_UnionDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_UnionDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Module:
+ {
+ TAO_ModuleDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_ModuleDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Exception:
+ {
+ TAO_ExceptionDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_ExceptionDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Value:
+ {
+ TAO_ValueDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_ValueDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Component:
+ {
+ TAO_ComponentDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_ComponentDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ case CORBA::dk_Home:
+ {
+ TAO_HomeDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_HomeDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ return impl;
+ }
+ default:
+ return 0;
+ }
+}
+
+PortableServer::Servant
+IFR_Servant_Factory::create_tie (
+ ACE_Configuration_Section_Key servant_key,
+ PortableServer::POA_ptr poa
+ ACE_ENV_ARG_DECL
+ )
+{
+ u_int def_kind = 0;
+ this->repo_->config ()->get_integer_value (servant_key,
+ "def_kind",
+ def_kind);
+
+ switch (ACE_static_cast (CORBA::DefinitionKind, def_kind))
+ {
+ case CORBA::dk_Attribute:
+ {
+ TAO_AttributeDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_AttributeDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_AttributeDef_i> safety (impl);
+
+ POA_CORBA_AttributeDef_tie<TAO_AttributeDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_CORBA_AttributeDef_tie<TAO_AttributeDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_Constant:
+ {
+ TAO_ConstantDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_ConstantDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_ConstantDef_i> safety (impl);
+
+ POA_CORBA_ConstantDef_tie<TAO_ConstantDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_CORBA_ConstantDef_tie<TAO_ConstantDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_Exception:
+ {
+ TAO_ExceptionDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_ExceptionDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_ExceptionDef_i> safety (impl);
+
+ POA_CORBA_ExceptionDef_tie<TAO_ExceptionDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_CORBA_ExceptionDef_tie<TAO_ExceptionDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_Interface:
+ {
+ TAO_InterfaceDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_InterfaceDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_InterfaceDef_i> safety (impl);
+
+ POA_CORBA_InterfaceDef_tie<TAO_InterfaceDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_CORBA_InterfaceDef_tie<TAO_InterfaceDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_AbstractInterface:
+ {
+ TAO_AbstractInterfaceDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_AbstractInterfaceDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_AbstractInterfaceDef_i> safety (impl);
+
+ POA_CORBA_AbstractInterfaceDef_tie<TAO_AbstractInterfaceDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (
+ impl_tie,
+ POA_CORBA_AbstractInterfaceDef_tie<TAO_AbstractInterfaceDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ()
+ );
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_LocalInterface:
+ {
+ TAO_LocalInterfaceDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_LocalInterfaceDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_LocalInterfaceDef_i> safety (impl);
+
+ POA_CORBA_LocalInterfaceDef_tie<TAO_LocalInterfaceDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (
+ impl_tie,
+ POA_CORBA_LocalInterfaceDef_tie<TAO_LocalInterfaceDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ()
+ );
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_Module:
+ {
+ TAO_ModuleDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_ModuleDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_ModuleDef_i> safety (impl);
+
+ POA_CORBA_ModuleDef_tie<TAO_ModuleDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_CORBA_ModuleDef_tie<TAO_ModuleDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_Operation:
+ {
+ TAO_OperationDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_OperationDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_OperationDef_i> safety (impl);
+
+ POA_CORBA_OperationDef_tie<TAO_OperationDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_CORBA_OperationDef_tie<TAO_OperationDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_Alias:
+ {
+ TAO_AliasDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_AliasDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_AliasDef_i> safety (impl);
+
+ POA_CORBA_AliasDef_tie<TAO_AliasDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_CORBA_AliasDef_tie<TAO_AliasDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_Struct:
+ {
+ TAO_StructDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_StructDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_StructDef_i> safety (impl);
+
+ POA_CORBA_StructDef_tie<TAO_StructDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_CORBA_StructDef_tie<TAO_StructDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_Union:
+ {
+ TAO_UnionDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_UnionDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_UnionDef_i> safety (impl);
+
+ POA_CORBA_UnionDef_tie<TAO_UnionDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_CORBA_UnionDef_tie<TAO_UnionDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_Enum:
+ {
+ TAO_EnumDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_EnumDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_EnumDef_i> safety (impl);
+
+ POA_CORBA_EnumDef_tie<TAO_EnumDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_CORBA_EnumDef_tie<TAO_EnumDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_Primitive:
+ {
+ TAO_PrimitiveDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_PrimitiveDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_PrimitiveDef_i> safety (impl);
+
+ POA_CORBA_PrimitiveDef_tie<TAO_PrimitiveDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_CORBA_PrimitiveDef_tie<TAO_PrimitiveDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_String:
+ {
+ TAO_StringDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_StringDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_StringDef_i> safety (impl);
+
+ POA_CORBA_StringDef_tie<TAO_StringDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_CORBA_StringDef_tie<TAO_StringDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_Sequence:
+ {
+ TAO_SequenceDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_SequenceDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_SequenceDef_i> safety (impl);
+
+ POA_CORBA_SequenceDef_tie<TAO_SequenceDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_CORBA_SequenceDef_tie<TAO_SequenceDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_Array:
+ {
+ TAO_ArrayDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_ArrayDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_ArrayDef_i> safety (impl);
+
+ POA_CORBA_ArrayDef_tie<TAO_ArrayDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_CORBA_ArrayDef_tie<TAO_ArrayDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_Wstring:
+ {
+ TAO_WstringDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_WstringDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_WstringDef_i> safety (impl);
+
+ POA_CORBA_WstringDef_tie<TAO_WstringDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_CORBA_WstringDef_tie<TAO_WstringDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_Fixed:
+ {
+ TAO_FixedDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_FixedDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_FixedDef_i> safety (impl);
+
+ POA_CORBA_FixedDef_tie<TAO_FixedDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_CORBA_FixedDef_tie<TAO_FixedDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_Value:
+ {
+ TAO_ValueDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_ValueDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_ValueDef_i> safety (impl);
+
+ POA_CORBA_ValueDef_tie<TAO_ValueDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_CORBA_ValueDef_tie<TAO_ValueDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_ValueBox:
+ {
+ TAO_ValueBoxDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_ValueBoxDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_ValueBoxDef_i> safety (impl);
+
+ POA_CORBA_ValueBoxDef_tie<TAO_ValueBoxDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_CORBA_ValueBoxDef_tie<TAO_ValueBoxDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_ValueMember:
+ {
+ TAO_ValueMemberDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_ValueMemberDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_ValueMemberDef_i> safety (impl);
+
+ POA_CORBA_ValueMemberDef_tie<TAO_ValueMemberDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (
+ impl_tie,
+ POA_CORBA_ValueMemberDef_tie<TAO_ValueMemberDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ()
+ );
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_Native:
+ {
+ TAO_NativeDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_NativeDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_NativeDef_i> safety (impl);
+
+ POA_CORBA_NativeDef_tie<TAO_NativeDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_CORBA_NativeDef_tie<TAO_NativeDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_Component:
+ {
+ TAO_ComponentDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_ComponentDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_ComponentDef_i> safety (impl);
+
+ POA_IR::ComponentDef_tie<TAO_ComponentDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_IR::ComponentDef_tie<TAO_ComponentDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_Home:
+ {
+ TAO_HomeDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_HomeDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_HomeDef_i> safety (impl);
+
+ POA_IR::HomeDef_tie<TAO_HomeDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_IR::HomeDef_tie<TAO_HomeDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_Factory:
+ {
+ TAO_FactoryDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_FactoryDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_FactoryDef_i> safety (impl);
+
+ POA_IR::FactoryDef_tie<TAO_FactoryDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_IR::FactoryDef_tie<TAO_FactoryDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_Finder:
+ {
+ TAO_FinderDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_FinderDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_FinderDef_i> safety (impl);
+
+ POA_IR::FinderDef_tie<TAO_FinderDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_IR::FinderDef_tie<TAO_FinderDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_PrimaryKey:
+ {
+ TAO_PrimaryKeyDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_PrimaryKeyDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_PrimaryKeyDef_i> safety (impl);
+
+ POA_IR::PrimaryKeyDef_tie<TAO_PrimaryKeyDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_IR::PrimaryKeyDef_tie<TAO_PrimaryKeyDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_Emits:
+ {
+ TAO_EmitsDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_EmitsDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_EmitsDef_i> safety (impl);
+
+ POA_IR::EmitsDef_tie<TAO_EmitsDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_IR::EmitsDef_tie<TAO_EmitsDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_Publishes:
+ {
+ TAO_PublishesDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_PublishesDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_PublishesDef_i> safety (impl);
+
+ POA_IR::PublishesDef_tie<TAO_PublishesDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_IR::PublishesDef_tie<TAO_PublishesDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_Consumes:
+ {
+ TAO_ConsumesDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_ConsumesDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_ConsumesDef_i> safety (impl);
+
+ POA_IR::ConsumesDef_tie<TAO_ConsumesDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_IR::ConsumesDef_tie<TAO_ConsumesDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_Provides:
+ {
+ TAO_ProvidesDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_ProvidesDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_ProvidesDef_i> safety (impl);
+
+ POA_IR::ProvidesDef_tie<TAO_ProvidesDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_IR::ProvidesDef_tie<TAO_ProvidesDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ case CORBA::dk_Uses:
+ {
+ TAO_UsesDef_i *impl = 0;
+ ACE_NEW_THROW_EX (impl,
+ TAO_UsesDef_i (this->repo_,
+ servant_key),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ auto_ptr<TAO_UsesDef_i> safety (impl);
+
+ POA_IR::UsesDef_tie<TAO_UsesDef_i> *impl_tie = 0;
+ ACE_NEW_THROW_EX (impl_tie,
+ POA_IR::UsesDef_tie<TAO_UsesDef_i> (impl,
+ poa,
+ 1),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ safety.release ();
+ return impl_tie;
+ }
+ default:
+ ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (), 0);
+ }
+}
+
+CORBA::Object_ptr
+IFR_Servant_Factory::create_objref (CORBA::DefinitionKind def_kind,
+ const char *obj_id
+ ACE_ENV_ARG_DECL)
+{
+ PortableServer::ObjectId_var oid =
+ PortableServer::string_to_ObjectId (obj_id);
+
+ // Can plug in prefix tricks here.
+ ACE_TString repo_id ("IDL:omg.org/");
+
+ switch (def_kind)
+ {
+ case CORBA::dk_Attribute:
+ repo_id += "CORBA/AttributeDef:";
+ break;
+ case CORBA::dk_Constant:
+ repo_id += "CORBA/ConstantDef:";
+ break;
+ case CORBA::dk_Exception:
+ repo_id += "CORBA/ExceptionDef:";
+ break;
+ case CORBA::dk_Interface:
+ repo_id += "CORBA/InterfaceDef:";
+ break;
+ case CORBA::dk_AbstractInterface:
+ repo_id += "CORBA/AbstractInterfaceDef:";
+ break;
+ case CORBA::dk_LocalInterface:
+ repo_id += "CORBA/LocalInterfaceDef:";
+ break;
+ case CORBA::dk_Module:
+ repo_id += "CORBA/ModuleDef:";
+ break;
+ case CORBA::dk_Operation:
+ repo_id += "CORBA/OperationDef:";
+ break;
+ case CORBA::dk_Typedef:
+ repo_id += "CORBA/TypedefDef:";
+ break;
+ case CORBA::dk_Alias:
+ repo_id += "CORBA/AliasDef:";
+ break;
+ case CORBA::dk_Struct:
+ repo_id += "CORBA/StructDef:";
+ break;
+ case CORBA::dk_Union:
+ repo_id += "CORBA/UnionDef:";
+ break;
+ case CORBA::dk_Enum:
+ repo_id += "CORBA/EnumDef:";
+ break;
+ case CORBA::dk_Primitive:
+ repo_id += "CORBA/PrimitiveDef:";
+ break;
+ case CORBA::dk_String:
+ repo_id += "CORBA/StringDef:";
+ break;
+ case CORBA::dk_Sequence:
+ repo_id += "CORBA/SequenceDef:";
+ break;
+ case CORBA::dk_Array:
+ repo_id += "CORBA/ArrayDef:";
+ break;
+ case CORBA::dk_Wstring:
+ repo_id += "CORBA/WstringDef:";
+ break;
+ case CORBA::dk_Fixed:
+ repo_id += "CORBA/FixedDef:";
+ break;
+ case CORBA::dk_Value:
+ repo_id += "CORBA/ValueDef:";
+ break;
+ case CORBA::dk_ValueBox:
+ repo_id += "CORBA/ValueBoxDef:";
+ break;
+ case CORBA::dk_ValueMember:
+ repo_id += "CORBA/ValueMemberDef:";
+ break;
+ case CORBA::dk_Native:
+ repo_id += "CORBA/NativeDef:";
+ break;
+ case CORBA::dk_Component:
+ repo_id += "IR/ComponentDef:";
+ break;
+ case CORBA::dk_Home:
+ repo_id += "HomeDef:";
+ break;
+ case CORBA::dk_Factory:
+ repo_id += "IR/FactoryDef:";
+ break;
+ case CORBA::dk_Finder:
+ repo_id += "IR/FinderDef:";
+ break;
+ case CORBA::dk_PrimaryKey:
+ repo_id += "IR/PrimaryKeyDef:";
+ break;
+ case CORBA::dk_Emits:
+ repo_id += "IR/EmitsDef:";
+ break;
+ case CORBA::dk_Publishes:
+ repo_id += "IR/PublishesDef:";
+ break;
+ case CORBA::dk_Consumes:
+ repo_id += "IR/ConsumesDef:";
+ break;
+ case CORBA::dk_Provides:
+ repo_id += "IR/ProvidesDef:";
+ break;
+ case CORBA::dk_Uses:
+ repo_id += "IR/UsesDef:";
+ break;
+ default:
+ ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (), 0);
+ }
+
+ // Can plug in version tricks here.
+ repo_id += "1.0";
+
+ return this->repo_->ir_poa ()->create_reference_with_id (oid.in (),
+ repo_id.c_str ()
+ ACE_ENV_ARG_PARAMETER);
+}