diff options
author | Ossama Othman <ossama-othman@users.noreply.github.com> | 2005-03-23 09:52:32 +0000 |
---|---|---|
committer | Ossama Othman <ossama-othman@users.noreply.github.com> | 2005-03-23 09:52:32 +0000 |
commit | 793b7229e02eea724dbf6ba577ad4d75c0f291f4 (patch) | |
tree | 3fd9614a644a0bfda33fb22f3c8fcf00d5f29532 | |
parent | 9bb0b20e2dfee7b2341361f6d4f4cc64f63ecab6 (diff) | |
download | ATCD-793b7229e02eea724dbf6ba577ad4d75c0f291f4.tar.gz |
*** empty log message ***
-rw-r--r-- | TAO/tao/Struct_TypeCode.cpp | 12 | ||||
-rw-r--r-- | TAO/tao/TypeCode.inl | 2 | ||||
-rw-r--r-- | TAO/tao/TypeCodeFactory_Adapter.h | 37 | ||||
-rw-r--r-- | TAO/tao/TypeCode_Struct_Field.h | 2 | ||||
-rw-r--r-- | TAO/tao/TypeCode_Value_Field.h | 2 | ||||
-rw-r--r-- | TAO/tao/Value_TypeCode.cpp | 34 |
6 files changed, 66 insertions, 23 deletions
diff --git a/TAO/tao/Struct_TypeCode.cpp b/TAO/tao/Struct_TypeCode.cpp index 6103846ddf2..4ea7b15b145 100644 --- a/TAO/tao/Struct_TypeCode.cpp +++ b/TAO/tao/Struct_TypeCode.cpp @@ -242,9 +242,9 @@ TAO::TypeCode::Struct<StringType, CORBA::NO_MEMORY ()); ACE_CHECK_RETURN (CORBA::TypeCode::_nil ()); - safe_fields.reset (fields); + safe_fields.reset (tc_fields); - static char const * const empty_name = ""; + static char const empty_name[] = ""; for (CORBA::ULong i = 0; i < this->nfields_; ++i) { @@ -252,14 +252,14 @@ TAO::TypeCode::Struct<StringType, // the compact TypeCode. tc_fields[i].name = empty_name; - tc_fields[i].type = - &(*(this->fields_[i].type)->get_compact_typecode ( - ACE_ENV_SINGLE_ARG_PARAMETER)); + tc_fields[i].type = 0; // FIX ME! +// &(*this->fields_[i].type)->get_compact_typecode ( +// ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (CORBA::TypeCode::_nil ()); } } - TAO_TypeCodeFactory_Adapter * adapter = + TAO_TypeCodeFactory_Adapter * const adapter = ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance ( TAO_ORB_Core::typecodefactory_adapter_name ()); diff --git a/TAO/tao/TypeCode.inl b/TAO/tao/TypeCode.inl index 57108a5c009..273b02f76cd 100644 --- a/TAO/tao/TypeCode.inl +++ b/TAO/tao/TypeCode.inl @@ -184,4 +184,6 @@ TAO::unaliased_kind (CORBA::TypeCode_ptr tc TAO::unaliased_typecode (tc ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (CORBA::TAO_TC_KIND_COUNT); + + return unaliased_tc->kind (ACE_ENV_SINGLE_ARG_PARAMETER); } diff --git a/TAO/tao/TypeCodeFactory_Adapter.h b/TAO/tao/TypeCodeFactory_Adapter.h index f7732120b18..254bf52472d 100644 --- a/TAO/tao/TypeCodeFactory_Adapter.h +++ b/TAO/tao/TypeCodeFactory_Adapter.h @@ -1,4 +1,4 @@ -// This may look like C, but it's really -*- C++ -*- +// -*- C++ -*- //============================================================================= /** @@ -32,6 +32,16 @@ namespace CORBA class ValueMemberSeq; } +namespace TAO +{ + namespace TypeCode + { + template<typename STRING_TYPE> class Struct_Field; + template<typename STRING_TYPE> class Value_Field; + } +} + + /** * @class TAO_TypeCodeFactory_Adapter * @@ -195,6 +205,31 @@ public: ACE_ENV_ARG_DECL_WITH_DEFAULTS ) ACE_THROW_SPEC ((CORBA::SystemException)) = 0; + + // -- + + // Factory methods that has no corresponding TypeCodeFactory IDL, + // i.e. it is TAO-specific. + + virtual CORBA::TypeCode_ptr _tao_create_struct_except_tc ( + CORBA::TCKind, + char const * id, + char const * name, + TAO::TypeCode::Struct_Field<char const *> const * fields, + CORBA::ULong nfields + ACE_ENV_ARG_DECL) = 0; + + + virtual CORBA::TypeCode_ptr _tao_create_value_event_tc ( + CORBA::TCKind, + char const * id, + char const * name, + CORBA::ValueModifier modifier, + CORBA::TypeCode_ptr const * concrete_base, + TAO::TypeCode::Value_Field<char const *> const * fields, + CORBA::ULong nfields + ACE_ENV_ARG_DECL) = 0; + }; #include /**/ "ace/post.h" diff --git a/TAO/tao/TypeCode_Struct_Field.h b/TAO/tao/TypeCode_Struct_Field.h index bef729e8011..402ded3640b 100644 --- a/TAO/tao/TypeCode_Struct_Field.h +++ b/TAO/tao/TypeCode_Struct_Field.h @@ -87,7 +87,7 @@ namespace TAO char const * get_name (void) const; /// The name of the field. - STRING_TYPE const name; + STRING_TYPE name; /// Pointer to the @c CORBA::TypeCode of the field. /** diff --git a/TAO/tao/TypeCode_Value_Field.h b/TAO/tao/TypeCode_Value_Field.h index 6b8feb03296..74019af73c9 100644 --- a/TAO/tao/TypeCode_Value_Field.h +++ b/TAO/tao/TypeCode_Value_Field.h @@ -86,7 +86,7 @@ namespace TAO char const * get_name (void) const; /// The name of the field. - STRING_TYPE const name; + STRING_TYPE name; /// Pointer to the @c CORBA::TypeCode of the field. /** diff --git a/TAO/tao/Value_TypeCode.cpp b/TAO/tao/Value_TypeCode.cpp index 62b33ebb993..8958430d31a 100644 --- a/TAO/tao/Value_TypeCode.cpp +++ b/TAO/tao/Value_TypeCode.cpp @@ -32,7 +32,7 @@ TAO::TypeCode::Value<StringType, (cdr << TAO_ENCAP_BYTE_ORDER) && (cdr << this->base_attributes_.id ()) && (cdr << this->base_attributes_.name ()) - && (cdr << this->value_modifier_) + && (cdr << this->type_modifier_) && (cdr << *this->concrete_base_) && (cdr << this->nfields_); @@ -113,6 +113,9 @@ TAO::TypeCode::Value<StringType, ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (0); + if (!equal_concrete_base_types) + return 0; + CORBA::ULong const tc_nfields = tc->member_count (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_CHECK_RETURN (0); @@ -126,8 +129,8 @@ TAO::TypeCode::Value<StringType, CORBA::Visibility const lhs_visibility = lhs_field.visibility; CORBA::Visibility const rhs_visibility = - tc->member_visibility_i (i - ACE_ENV_ARG_PARAMETER); + tc->member_visibility (i + ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (0); if (lhs_visibility != rhs_visibility) @@ -208,6 +211,9 @@ TAO::TypeCode::Value<StringType, ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (0); + if (!equivalent_concrete_base_types) + return 0; + // Perform a structural comparison, excluding the name() and // member_name() operations. @@ -294,9 +300,9 @@ TAO::TypeCode::Value<StringType, CORBA::NO_MEMORY ()); ACE_CHECK_RETURN (CORBA::TypeCode::_nil ()); - safe_fields.reset (fields); + safe_fields.reset (tc_fields); - static char const * const empty_name = ""; + static char const empty_name[] = ""; for (CORBA::ULong i = 0; i < this->nfields_; ++i) { @@ -304,15 +310,15 @@ TAO::TypeCode::Value<StringType, // the compact TypeCode. tc_fields[i].name = empty_name; - tc_fields[i].type = - &(*(this->fields_[i].type)->get_compact_typecode ( - ACE_ENV_SINGLE_ARG_PARAMETER)); - ACE_CHECK_RETURN (CORBA::TypeCode::_nil ()); + tc_fields[i].type = 0; // FIX ME!!!!! +// &(*(this->fields_[i].type))->get_compact_typecode ( +// ACE_ENV_SINGLE_ARG_PARAMETER); +// ACE_CHECK_RETURN (CORBA::TypeCode::_nil ()); tc_fields[i].visibility = this->fields_[i].visibility; } } - TAO_TypeCodeFactory_Adapter * adapter = + TAO_TypeCodeFactory_Adapter * const adapter = ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance ( TAO_ORB_Core::typecodefactory_adapter_name ()); @@ -325,9 +331,9 @@ TAO::TypeCode::Value<StringType, CORBA::TypeCode_var tc = adapter->_tao_create_value_event_tc (Kind, this->base_attributes_.id (), - "" /* empty name */, - this->value_modifier_, - *this->concrete_base_, + "", // empty name + this->type_modifier_, + this->concrete_base_, tc_fields, this->nfields_ ACE_ENV_ARG_PARAMETER); @@ -437,7 +443,7 @@ TAO::TypeCode::Value<StringType, { if (index >= this->nfields_) ACE_THROW_RETURN (CORBA::TypeCode::Bounds (), - CORBA::TypeCode::_nil ()); + CORBA::PRIVATE_MEMBER); return this->fields_[index].visibility; } |