summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.cpp')
-rw-r--r--TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.cpp714
1 files changed, 0 insertions, 714 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.cpp b/TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.cpp
deleted file mode 100644
index 19de411621e..00000000000
--- a/TAO/orbsvcs/orbsvcs/Trader/Service_Type_Repository.cpp
+++ /dev/null
@@ -1,714 +0,0 @@
-// $Id$
-
-#include "Service_Type_Repository.h"
-
-ACE_RCSID(Trader, Service_Type_Repository, "$Id$")
-
-TAO_Service_Type_Repository::
-TAO_Service_Type_Repository (ACE_Lock* lock)
- : lock_ (lock)
-{
- this->incarnation_.low = 0;
- this->incarnation_.high = 0;
-
- // If a lock wasn't provided, let's assume the user doesn't want any
- // kind of lock at all.
- if (this->lock_ == 0)
- ACE_NEW (this->lock_,
- ACE_Lock_Adapter<ACE_Null_Mutex>);
-}
-
-TAO_Service_Type_Repository::~TAO_Service_Type_Repository (void)
-{
- {
- // Make sure not to throw exceptions in destructors...
- ACE_WRITE_GUARD (ACE_Lock, ace_mon, *this->lock_);
-
- for (Service_Type_Map_Iterator service_map_iterator (this->type_map_);
- service_map_iterator.done () == 0;
- service_map_iterator++)
- {
- Type_Info *type_info = (*service_map_iterator).int_id_;
- delete type_info;
- }
- }
-
- delete this->lock_;
-}
-
-CosTradingRepos::ServiceTypeRepository::IncarnationNumber
-TAO_Service_Type_Repository::incarnation (CORBA::Environment &)
- ACE_THROW_SPEC (())
-{
- CosTradingRepos::ServiceTypeRepository::IncarnationNumber inc_num;
-
- if (this->lock_->acquire_read () == -1)
- {
- inc_num = this->incarnation_;
- this->lock_->release ();
- }
- else
- {
- inc_num.high = 0;
- inc_num.low = 0;
- }
-
- return inc_num;
-}
-
-
-CosTradingRepos::ServiceTypeRepository::IncarnationNumber
-TAO_Service_Type_Repository::
-add_type (const char *name,
- const char *if_name,
- const CosTradingRepos::ServiceTypeRepository::PropStructSeq &props,
- const CosTradingRepos::ServiceTypeRepository::ServiceTypeNameSeq &super_types,
- CORBA::Environment &ACE_TRY_ENV)
- ACE_THROW_SPEC ((CORBA::SystemException,
- CosTrading::IllegalServiceType,
- CosTradingRepos::ServiceTypeRepository::ServiceTypeExists,
- CosTradingRepos::ServiceTypeRepository::InterfaceTypeMismatch,
- CosTrading::IllegalPropertyName,
- CosTrading::DuplicatePropertyName,
- CosTradingRepos::ServiceTypeRepository::ValueTypeRedefinition,
- CosTrading::UnknownServiceType,
- CosTradingRepos::ServiceTypeRepository::DuplicateServiceTypeName))
-{
- Prop_Map prop_map;
- Service_Type_Map super_map;
- CosTradingRepos::ServiceTypeRepository::IncarnationNumber inc_num;
-
- inc_num.low = 0;
- inc_num.high = 0;
-
- // With exceptions enabled, inc_num isn't used.
- ACE_UNUSED_ARG (inc_num);
-
- ACE_WRITE_GUARD_THROW_EX (ACE_Lock, ace_mon, *this->lock_, CORBA::INTERNAL ());
- ACE_CHECK_RETURN (inc_num);
-
- // Make sure Type name is valid.
- if (TAO_Trader_Base::is_valid_identifier_name (name) == 0)
- ACE_THROW_RETURN (CosTrading::IllegalServiceType (name),
- this->incarnation_);
-
- // Check if the service type already exists.
- TAO_String_Hash_Key type_name (name);
- if (this->type_map_.find (type_name) == 0)
- ACE_THROW_RETURN (CosTradingRepos::ServiceTypeRepository::ServiceTypeExists (),
- this->incarnation_);
-
- // Make sure all property names are valid and appear only once.
- this->validate_properties (prop_map,
- props,
- ACE_TRY_ENV);
- ACE_CHECK_RETURN (this->incarnation_);
-
- // Check that all super_types exist, and none are duplicated.
- this->validate_supertypes (super_map,
- super_types,
- ACE_TRY_ENV);
- ACE_CHECK_RETURN (this->incarnation_);
-
- // NOTE: I don't really know a way to do this without an Interface
- // Repository, since the Interface Repository IDs don't contain
- // information about supertypes.
- //
- // make sure interface name is legal.
- // this->validate_interface (if_name, super_types, ACE_TRY_ENV);
- // ACE_CHECK_RETURN (this->incarnation);
- //
- // Instead, we do this:
- //
- if (if_name == 0)
- ACE_THROW_RETURN (CosTradingRepos::ServiceTypeRepository::InterfaceTypeMismatch (),
- this->incarnation_);
-
- // Collect and make sure that properties of all supertypes and this
- // type are compatible. We can use prop_map and super_types_map for
- // the job.
- this->validate_inheritance (prop_map,
- super_types,
- ACE_TRY_ENV);
- ACE_CHECK_RETURN (this->incarnation_);
-
- // We can now use prop_map to construct a sequence of all properties
- // the this type.
- this->update_type_map (name,
- if_name,
- props,
- super_types,
- prop_map,
- super_map);
-
- CosTradingRepos::ServiceTypeRepository::IncarnationNumber return_value =
- this->incarnation_;
-
- // Increment incarnation number.
- this->incarnation_.low++;
-
- // If we wrapped around in lows...
- if (this->incarnation_.low == 0)
- this->incarnation_.high++;
-
- return return_value;
-}
-
-void
-TAO_Service_Type_Repository::remove_type (const char *name,
- CORBA::Environment &ACE_TRY_ENV)
- ACE_THROW_SPEC ((CORBA::SystemException,
- CosTrading::IllegalServiceType,
- CosTrading::UnknownServiceType,
- CosTradingRepos::ServiceTypeRepository::HasSubTypes))
-{
- if (TAO_Trader_Base::is_valid_identifier_name (name) == 0)
- ACE_THROW (CosTrading::IllegalServiceType (name));
-
- ACE_WRITE_GUARD_THROW_EX (ACE_Lock, ace_mon, *this->lock_, CORBA::INTERNAL ());
- ACE_CHECK;
-
- // Check if the type exists.
- Service_Type_Map::ENTRY* type_entry = 0; ;
- if (this->type_map_.find (name,
- type_entry) == -1)
- ACE_THROW (CosTrading::UnknownServiceType (name));
-
- // Check if it has any subtypes.
- Type_Info *type_info = type_entry->int_id_;
- if (type_info->has_subtypes_)
- ACE_THROW (CosTradingRepos::ServiceTypeRepository::HasSubTypes (name, ""));
-
- // Remove the type from the map.
- this->type_map_.unbind (type_entry);
- delete type_info;
-}
-
-CosTradingRepos::ServiceTypeRepository::ServiceTypeNameSeq *
-TAO_Service_Type_Repository::
-list_types (const CosTradingRepos::ServiceTypeRepository::SpecifiedServiceTypes &which_types,
- CORBA::Environment &ACE_TRY_ENV)
- ACE_THROW_SPEC ((CORBA::SystemException))
-{
- ACE_READ_GUARD_THROW_EX (ACE_Lock, ace_mon, *this->lock_, CORBA::INTERNAL ());
- ACE_CHECK_RETURN (0);
-
- CORBA::ULong i = 0;
- CORBA::ULong length = this->type_map_.current_size ();
- CosTrading::ServiceTypeName *types =
- CosTradingRepos::ServiceTypeRepository::ServiceTypeNameSeq::allocbuf (length);
-
- if (types == 0)
- return 0;
-
- int all = which_types._d () == CosTradingRepos::ServiceTypeRepository::all;
-
- CosTradingRepos::ServiceTypeRepository::IncarnationNumber num =
- which_types.incarnation ();
-
- for (Service_Type_Map_Iterator itr (this->type_map_);
- itr.done () == 0;
- itr++)
- {
- Type_Info* type_info = (*itr).int_id_;
- const char* type_name = (*itr).ext_id_.in ();
-
- if (all
- || num < type_info->type_struct_.incarnation)
- types[i++] = CORBA::string_dup (type_name);
- }
-
- CosTradingRepos::ServiceTypeRepository::ServiceTypeNameSeq *tmp = 0;
-
- ACE_NEW_RETURN (tmp,
- CosTradingRepos::ServiceTypeRepository::
- ServiceTypeNameSeq (length,
- i,
- types,
- 1),
- 0);
- return tmp;
-}
-
-CosTradingRepos::ServiceTypeRepository::TypeStruct *
-TAO_Service_Type_Repository::
-describe_type (const char * name,
- CORBA::Environment& ACE_TRY_ENV)
- ACE_THROW_SPEC ((CORBA::SystemException,
- CosTrading::IllegalServiceType,
- CosTrading::UnknownServiceType))
-{
- if (TAO_Trader_Base::is_valid_identifier_name (name) == 0)
- ACE_THROW_RETURN
- (CosTrading::IllegalServiceType (name),
- (CosTradingRepos::ServiceTypeRepository::TypeStruct *) 0);
-
- ACE_READ_GUARD_THROW_EX
- (ACE_Lock,
- ace_mon,
- *this->lock_,
- CORBA::INTERNAL ());
- ACE_CHECK_RETURN (0);
-
- // Make sure the type exists.
- TAO_String_Hash_Key type_name (name);
- Service_Type_Map::ENTRY *type_entry = 0;
- if (this->type_map_.find (type_name,
- type_entry) == -1)
- ACE_THROW_RETURN (CosTrading::UnknownServiceType (name),
- (CosTradingRepos::ServiceTypeRepository::TypeStruct *) 0);
-
- // Return appropriate information about the type.
- CosTradingRepos::ServiceTypeRepository::TypeStruct *descr = 0;
- ACE_NEW_RETURN (descr,
- CosTradingRepos::ServiceTypeRepository::TypeStruct,
- 0);
- CosTradingRepos::ServiceTypeRepository::TypeStruct &s =
- type_entry->int_id_->type_struct_;
-
- descr->if_name = s.if_name;
- descr->masked = s.masked;
- descr->incarnation = s.incarnation;
- descr->super_types = s.super_types;
- descr->props = s.props;
- /*
- CORBA::ULong length = s.props.length ();
- CosTradingRepos::ServiceTypeRepository::PropStruct* pstructs =
- s.props.get_buffer (0);
- descr->props.replace (length, length, pstructs, 0);
- */
- return descr;
-}
-
-CosTradingRepos::ServiceTypeRepository::TypeStruct *
-TAO_Service_Type_Repository::
-fully_describe_type (const char *name,
- CORBA::Environment &ACE_TRY_ENV)
- ACE_THROW_SPEC ((CORBA::SystemException,
- CosTrading::IllegalServiceType,
- CosTrading::UnknownServiceType))
-{
- if (TAO_Trader_Base::is_valid_identifier_name (name) == 0)
- ACE_THROW_RETURN (CosTrading::IllegalServiceType (name),
- 0);
-
- ACE_READ_GUARD_THROW_EX (ACE_Lock, ace_mon, *this->lock_, CORBA::INTERNAL ());
- ACE_CHECK_RETURN (0);
-
- // Make sure the type exists.
- TAO_String_Hash_Key type_name (name);
- Service_Type_Map::ENTRY *type_entry = 0;
- if (this->type_map_.find (type_name,
- type_entry) == -1)
- ACE_THROW_RETURN (CosTrading::UnknownServiceType (name),
- 0);
-
- // Return appropriate information about the type.
- CosTradingRepos::ServiceTypeRepository::TypeStruct *descr = 0;
- ACE_NEW_RETURN (descr,
- CosTradingRepos::ServiceTypeRepository::TypeStruct,
- 0);
- CosTradingRepos::ServiceTypeRepository::TypeStruct &s =
- type_entry->int_id_->type_struct_;
-
- // Aggregate the Properties of this type and all its supertypes.
- // Compute the transitive closure of all supertypes.
- this->fully_describe_type_i (s,
- descr->props,
- descr->super_types);
-
- // We do the explicit copy, since otherwise we'd have excessive
- // properties copying.
- descr->if_name = s.if_name;
- descr->masked = s.masked;
- descr->incarnation = s.incarnation;
-
- return descr;
-}
-
-void
-TAO_Service_Type_Repository::
-mask_type (const char *name,
- CORBA::Environment &ACE_TRY_ENV)
- ACE_THROW_SPEC ((CORBA::SystemException,
- CosTrading::IllegalServiceType,
- CosTrading::UnknownServiceType,
- CosTradingRepos::ServiceTypeRepository::AlreadyMasked))
-{
- if (TAO_Trader_Base::is_valid_identifier_name (name) == 0)
- ACE_THROW (CosTrading::IllegalServiceType (name));
-
- ACE_WRITE_GUARD_THROW_EX (ACE_Lock, ace_mon, *this->lock_, CORBA::INTERNAL ());
-
- // Make sure the type exists.
- TAO_String_Hash_Key type_name (name);
- Service_Type_Map::ENTRY *type_entry = 0;
- if (this->type_map_.find (type_name,
- type_entry) != -1)
- ACE_THROW (CosTrading::UnknownServiceType (name));
-
- // Make sure the type is unmasked.
- CORBA::Boolean &mask =
- type_entry->int_id_->type_struct_.masked;
-
- if (mask == 1)
- ACE_THROW (CosTradingRepos::ServiceTypeRepository::AlreadyMasked (name));
- else
- mask = 1;
-}
-
-void
-TAO_Service_Type_Repository::
-unmask_type (const char *name,
- CORBA::Environment &ACE_TRY_ENV)
- ACE_THROW_SPEC ((CORBA::SystemException,
- CosTrading::IllegalServiceType,
- CosTrading::UnknownServiceType,
- CosTradingRepos::ServiceTypeRepository::NotMasked))
-{
- if (TAO_Trader_Base::is_valid_identifier_name (name) == 0)
- ACE_THROW (CosTrading::IllegalServiceType (name));
-
- ACE_WRITE_GUARD_THROW_EX (ACE_Lock, ace_mon, *this->lock_, CORBA::INTERNAL ());
-
- // Make sure the type exists.
- TAO_String_Hash_Key type_name (name);
- Service_Type_Map::ENTRY *type_entry = 0;
- if (this->type_map_.find (type_name,
- type_entry) != -1)
- ACE_THROW (CosTrading::UnknownServiceType (name));
-
- // Make sure the type is masked.
- CORBA::Boolean &mask = type_entry->int_id_->type_struct_.masked;
-
- if (mask == 0)
- ACE_THROW (CosTradingRepos::ServiceTypeRepository::NotMasked (name));
- else
- mask = 0;
-}
-
-void
-TAO_Service_Type_Repository::
-fully_describe_type_i (const CosTradingRepos::ServiceTypeRepository::TypeStruct &type_struct,
- CosTradingRepos::ServiceTypeRepository::PropStructSeq &props,
- CosTradingRepos::ServiceTypeRepository::ServiceTypeNameSeq &super_types)
-{
- TAO_String_Queue service_type_queue;
- this->collect_inheritance_hierarchy (type_struct,
- service_type_queue);
-
- // Count the total number of properties.
- CORBA::ULong num_props = 0;
- CORBA::ULong num_types = service_type_queue.size ();
-
- TAO_String_Queue::ITERATOR iterator (service_type_queue);
-
- for (;
- iterator.done () == 0;
- iterator.advance ())
- {
- char **next_type_name = 0;
- Service_Type_Map::ENTRY *type_entry = 0;
-
- iterator.next (next_type_name);
- TAO_String_Hash_Key hash_key (ACE_const_cast (const char *,
- *next_type_name));
- this->type_map_.find (hash_key,
- type_entry);
-
- CosTradingRepos::ServiceTypeRepository::TypeStruct &tstruct =
- type_entry->int_id_->type_struct_;
- num_props += tstruct.props.length ();
- }
-
- num_props += type_struct.props.length ();
- props.length (num_props);
- super_types.length (num_types);
-
- // Copy in all properties.
- int i = 0;
- CORBA::ULong prop_index = 0;
- CORBA::ULong type_index = 0;
-
- for (i = type_struct.props.length () - 1;
- i >= 0;
- i--)
- props[prop_index++] = type_struct.props[i];
-
- for (iterator.first ();
- iterator.done () == 0;
- iterator.advance ())
- {
- char **next_type_name = 0;
- Service_Type_Map::ENTRY *type_entry = 0;
-
- iterator.next (next_type_name);
- TAO_String_Hash_Key hash_key (ACE_const_cast (const char *,
- *next_type_name));
- this->type_map_.find (hash_key,
- type_entry);
-
- // Should never be zero.
- if (type_entry != 0)
- {
- CosTradingRepos::ServiceTypeRepository::TypeStruct& tstruct =
- type_entry->int_id_->type_struct_;
-
- for (i = tstruct.props.length () - 1;
- i >= 0;
- i--)
- props[prop_index++] = tstruct.props[i];
-
- super_types[type_index++] = hash_key.in ();
- }
- }
-}
-
-void
-TAO_Service_Type_Repository::
-collect_inheritance_hierarchy (const CosTradingRepos::ServiceTypeRepository::TypeStruct &type_struct,
- TAO_String_Queue &target)
-{
- // Recurse for each super_type
- for (int i = type_struct.super_types.length () - 1;
- i >= 0;
- i--)
- {
- Service_Type_Map::ENTRY *next_type_entry = 0;
- TAO_String_Hash_Key next_type_name (type_struct.super_types[i]);
-
- if (this->type_map_.find (next_type_name, next_type_entry) != -1)
- {
- CosTradingRepos::ServiceTypeRepository::TypeStruct &next_type_struct =
- next_type_entry->int_id_->type_struct_;
-
- const char *type_name =
- type_struct.super_types[i];
- target.enqueue_tail (ACE_const_cast (char *,
- type_name));
-
- this->collect_inheritance_hierarchy (next_type_struct,
- target);
- }
- }
-}
-
-void
-TAO_Service_Type_Repository::
-validate_properties (Prop_Map &prop_map,
- const CosTradingRepos::ServiceTypeRepository::PropStructSeq &props,
- CORBA::Environment &ACE_TRY_ENV)
- ACE_THROW_SPEC ((CosTrading::IllegalPropertyName,
- CosTrading::DuplicatePropertyName))
-{
- for (CORBA::ULong i = 0;
- i < props.length ();
- i++)
- {
- const char *n = props[i].name;
- if (TAO_Trader_Base::is_valid_identifier_name (n) == 0)
- ACE_THROW (CosTrading::IllegalPropertyName (n));
- else
- {
- TAO_String_Hash_Key prop_name (n);
- CosTradingRepos::ServiceTypeRepository::PropStruct *prop_val =
- ACE_const_cast (CosTradingRepos::ServiceTypeRepository::PropStruct *,
- &props[i]);
-
- if (prop_map.bind (prop_name,
- prop_val) == 1)
- ACE_THROW (CosTrading::DuplicatePropertyName (n));
- }
- }
-}
-
-void
-TAO_Service_Type_Repository::
-validate_supertypes (Service_Type_Map &super_map,
- const CosTradingRepos::ServiceTypeRepository::ServiceTypeNameSeq &super_types,
- CORBA::Environment &ACE_TRY_ENV)
- ACE_THROW_SPEC ((CosTrading::IllegalServiceType,
- CosTrading::UnknownServiceType,
- CosTradingRepos::ServiceTypeRepository::DuplicateServiceTypeName))
-{
- for (CORBA::ULong i = 0;
- i < super_types.length ();
- i++)
- {
- const char *type =
- super_types[i];
-
- if (TAO_Trader_Base::is_valid_identifier_name (type) == 0)
- ACE_THROW (CosTrading::IllegalServiceType (type));
- else
- {
- TAO_String_Hash_Key hash_type (type);
- Service_Type_Map::ENTRY *type_entry = 0;
-
- if (this->type_map_.find (hash_type,
- type_entry) == -1)
- ACE_THROW (CosTrading::UnknownServiceType (type));
- else
- {
- if (super_map.bind (hash_type,
- type_entry->int_id_) == 1)
- ACE_THROW (CosTradingRepos::ServiceTypeRepository::DuplicateServiceTypeName (type));
- }
- }
- }
-}
-
-void
-TAO_Service_Type_Repository::
-validate_inheritance (Prop_Map &prop_map,
- const CosTradingRepos::ServiceTypeRepository::ServiceTypeNameSeq &super_types,
- CORBA::Environment &ACE_TRY_ENV)
- ACE_THROW_SPEC ((CosTradingRepos::ServiceTypeRepository::ValueTypeRedefinition))
-{
- CORBA::ULong num_super_types = super_types.length ();
-
- for (CORBA::ULong i = 0;
- i < num_super_types;
- i++)
- {
- Service_Type_Map::ENTRY *super_type_entry = 0;
- TAO_String_Hash_Key super_type (super_types[i]);
- CosTradingRepos::ServiceTypeRepository::ServiceTypeNameSeq place_holder;
- CosTradingRepos::ServiceTypeRepository::PropStructSeq super_props;
-
- this->type_map_.find (super_type, super_type_entry);
-
- // Super_type_entry should never be zero.
- if (super_type_entry != 0)
- this->fully_describe_type_i (super_type_entry->int_id_->type_struct_,
- super_props,
- place_holder);
- else
- continue;
-
- CORBA::ULong num_props = super_props.length ();
-
- for (CORBA::ULong j = 0;
- j < num_props;
- j++)
- {
- Prop_Map::ENTRY *existing_prop = 0;
- TAO_String_Hash_Key prop_name (super_props[j].name);
-
- if (prop_map.bind (prop_name,
- &super_props[j],
- existing_prop) == 1)
- {
- // If already there, check that it is compatible with
- // properties of other types. Value Types have to be the
- // same.
- const CosTradingRepos::ServiceTypeRepository::PropStruct &property_in_map =
- *existing_prop->int_id_;
-
- CORBA::TypeCode_ptr prop_type = property_in_map.value_type.in ();
- int compare = 0;
- ACE_TRY
- {
- compare =
- super_props[j].value_type->equal (prop_type,
- ACE_TRY_ENV);
- ACE_TRY_CHECK;
- }
- ACE_CATCHANY
- {
- ACE_TRY_THROW (CosTradingRepos::ServiceTypeRepository::ValueTypeRedefinition
- (super_props[j].name,
- super_props[j],
- property_in_map.name,
- property_in_map));
- }
- ACE_ENDTRY;
- ACE_CHECK;
-
- if (compare == 0
- || super_props[j].mode > property_in_map.mode)
- ACE_THROW (CosTradingRepos::ServiceTypeRepository::ValueTypeRedefinition
- (super_props[j].name,
- super_props[j],
- property_in_map.name,
- property_in_map));
- }
- }
- }
-}
-
-void
-TAO_Service_Type_Repository::
-update_type_map (const char *name,
- const char *if_name,
- const CosTradingRepos::ServiceTypeRepository::PropStructSeq &props,
- const CosTradingRepos::ServiceTypeRepository::ServiceTypeNameSeq &super_types,
- Prop_Map &,
- Service_Type_Map &super_map)
-{
- // Update entries for all supertypes to include this type as a
- // subtype. we can use the super_types_map we have constructed.
-
- for (Service_Type_Map_Iterator super_map_iterator (super_map);
- super_map_iterator.done () == 0;
- super_map_iterator++)
- {
- Type_Info *super_type_info =
- (*super_map_iterator).int_id_;
- super_type_info->has_subtypes_ = 0;
- }
-
- // All parameters are valid, create an entry for this service type
- // in the this->type_map_.
- Type_Info *type = 0;
- ACE_NEW (type,
- Type_Info);
-
- type->type_struct_.props = props;
- type->type_struct_.if_name = if_name;
- type->type_struct_.super_types = super_types;
- type->type_struct_.incarnation = this->incarnation_;
- type->type_struct_.masked = 0;
- type->has_subtypes_ = 0;
-
- // Move the prop struct sequences and super type names from the in
- // params to the internal storage.
- /*
- CORBA::ULong pslength = props.length ();
- CosTradingRepos::ServiceTypeRepository::PropStructSeq* pstructs =
- ACE_const_cast (CosTradingRepos::ServiceTypeRepository::PropStructSeq*,
- &props);
- CosTradingRepos::ServiceTypeRepository::PropStruct* psbuf =
- pstructs->get_buffer (1);
- type->type_struct_.props.replace (pslength,
- pslength,
- psbuf,
- 1);
- */
- TAO_String_Hash_Key type_name (name);
- this->type_map_.bind (type_name, type);
-}
-
-#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
-template class ACE_Hash_Map_Entry<TAO_String_Hash_Key, CosTradingRepos::ServiceTypeRepository::PropStruct*>;
-template class ACE_Hash_Map_Manager_Ex<TAO_String_Hash_Key, CosTradingRepos::ServiceTypeRepository::PropStruct*, ACE_Hash<TAO_String_Hash_Key>, ACE_Equal_To<TAO_String_Hash_Key>, ACE_Null_Mutex>;
-template class ACE_Hash_Map_Iterator_Ex<TAO_String_Hash_Key, CosTradingRepos::ServiceTypeRepository::PropStruct*, ACE_Hash<TAO_String_Hash_Key>, ACE_Equal_To<TAO_String_Hash_Key>, ACE_Null_Mutex>;
-template class ACE_Hash_Map_Iterator_Base_Ex<TAO_String_Hash_Key, CosTradingRepos::ServiceTypeRepository::PropStruct*, ACE_Hash<TAO_String_Hash_Key>, ACE_Equal_To<TAO_String_Hash_Key>, ACE_Null_Mutex>;
-template class ACE_Hash_Map_Reverse_Iterator_Ex<TAO_String_Hash_Key, CosTradingRepos::ServiceTypeRepository::PropStruct*, ACE_Hash<TAO_String_Hash_Key>, ACE_Equal_To<TAO_String_Hash_Key>, ACE_Null_Mutex>;
-template class ACE_Hash_Map_Entry<TAO_String_Hash_Key, TAO_Service_Type_Repository::Type_Info*>;
-template class ACE_Hash_Map_Manager_Ex<TAO_String_Hash_Key, TAO_Service_Type_Repository::Type_Info*, ACE_Hash<TAO_String_Hash_Key>, ACE_Equal_To<TAO_String_Hash_Key>, ACE_Null_Mutex>;
-template class ACE_Hash_Map_Iterator_Ex<TAO_String_Hash_Key, TAO_Service_Type_Repository::Type_Info*, ACE_Hash<TAO_String_Hash_Key>, ACE_Equal_To<TAO_String_Hash_Key>, ACE_Null_Mutex>;
-template class ACE_Hash_Map_Iterator_Base_Ex<TAO_String_Hash_Key, TAO_Service_Type_Repository::Type_Info*, ACE_Hash<TAO_String_Hash_Key>, ACE_Equal_To<TAO_String_Hash_Key>, ACE_Null_Mutex>;
-template class ACE_Hash_Map_Reverse_Iterator_Ex<TAO_String_Hash_Key, TAO_Service_Type_Repository::Type_Info*, ACE_Hash<TAO_String_Hash_Key>, ACE_Equal_To<TAO_String_Hash_Key>, ACE_Null_Mutex>;
-#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
-#pragma instantiate ACE_Hash_Map_Entry<TAO_String_Hash_Key, CosTradingRepos::ServiceTypeRepository::PropStruct*>
-#pragma instantiate ACE_Hash_Map_Manager_Ex<TAO_String_Hash_Key, CosTradingRepos::ServiceTypeRepository::PropStruct*, ACE_Hash<TAO_String_Hash_Key>, ACE_Equal_To<TAO_String_Hash_Key>, ACE_Null_Mutex>
-#pragma instantiate ACE_Hash_Map_Iterator_Ex<TAO_String_Hash_Key, CosTradingRepos::ServiceTypeRepository::PropStruct*, ACE_Hash<TAO_String_Hash_Key>, ACE_Equal_To<TAO_String_Hash_Key>, ACE_Null_Mutex>
-#pragma instantiate ACE_Hash_Map_Reverse_Iterator_Ex<TAO_String_Hash_Key, CosTradingRepos::ServiceTypeRepository::PropStruct*, ACE_Hash<TAO_String_Hash_Key>, ACE_Equal_To<TAO_String_Hash_Key>, ACE_Null_Mutex>
-#pragma instantiate ACE_Hash_Map_Iterator_Base_Ex<TAO_String_Hash_Key, CosTradingRepos::ServiceTypeRepository::PropStruct*, ACE_Hash<TAO_String_Hash_Key>, ACE_Equal_To<TAO_String_Hash_Key>, ACE_Null_Mutex>
-#pragma instantiate ACE_Hash_Map_Entry<TAO_String_Hash_Key, TAO_Service_Type_Repository::Type_Info*>
-#pragma instantiate ACE_Hash_Map_Manager_Ex<TAO_String_Hash_Key, TAO_Service_Type_Repository::Type_Info*, ACE_Hash<TAO_String_Hash_Key>, ACE_Equal_To<TAO_String_Hash_Key>, ACE_Null_Mutex>
-#pragma instantiate ACE_Hash_Map_Iterator_Ex<TAO_String_Hash_Key, TAO_Service_Type_Repository::Type_Info*, ACE_Hash<TAO_String_Hash_Key>, ACE_Equal_To<TAO_String_Hash_Key>, ACE_Null_Mutex>
-#pragma instantiate ACE_Hash_Map_Iterator_Base_Ex<TAO_String_Hash_Key, TAO_Service_Type_Repository::Type_Info*, ACE_Hash<TAO_String_Hash_Key>, ACE_Equal_To<TAO_String_Hash_Key>, ACE_Null_Mutex>
-#pragma instantiate ACE_Hash_Map_Reverse_Iterator_Ex<TAO_String_Hash_Key, TAO_Service_Type_Repository::Type_Info*, ACE_Hash<TAO_String_Hash_Key>, ACE_Equal_To<TAO_String_Hash_Key>, ACE_Null_Mutex>
-#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */