summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOssama Othman <ossama-othman@users.noreply.github.com>2005-03-23 09:52:32 +0000
committerOssama Othman <ossama-othman@users.noreply.github.com>2005-03-23 09:52:32 +0000
commit793b7229e02eea724dbf6ba577ad4d75c0f291f4 (patch)
tree3fd9614a644a0bfda33fb22f3c8fcf00d5f29532
parent9bb0b20e2dfee7b2341361f6d4f4cc64f63ecab6 (diff)
downloadATCD-793b7229e02eea724dbf6ba577ad4d75c0f291f4.tar.gz
*** empty log message ***
-rw-r--r--TAO/tao/Struct_TypeCode.cpp12
-rw-r--r--TAO/tao/TypeCode.inl2
-rw-r--r--TAO/tao/TypeCodeFactory_Adapter.h37
-rw-r--r--TAO/tao/TypeCode_Struct_Field.h2
-rw-r--r--TAO/tao/TypeCode_Value_Field.h2
-rw-r--r--TAO/tao/Value_TypeCode.cpp34
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;
}