summaryrefslogtreecommitdiff
path: root/config_complex_types_1/Config_Handlers/DynAny_Handler/DynSequence_Handler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'config_complex_types_1/Config_Handlers/DynAny_Handler/DynSequence_Handler.cpp')
-rw-r--r--config_complex_types_1/Config_Handlers/DynAny_Handler/DynSequence_Handler.cpp98
1 files changed, 27 insertions, 71 deletions
diff --git a/config_complex_types_1/Config_Handlers/DynAny_Handler/DynSequence_Handler.cpp b/config_complex_types_1/Config_Handlers/DynAny_Handler/DynSequence_Handler.cpp
index f2725a42d82..b31243960ca 100644
--- a/config_complex_types_1/Config_Handlers/DynAny_Handler/DynSequence_Handler.cpp
+++ b/config_complex_types_1/Config_Handlers/DynAny_Handler/DynSequence_Handler.cpp
@@ -15,107 +15,63 @@ namespace CIAO
namespace Config_Handlers
{
DynamicAny::DynAny_ptr
- DynSequence_Handler::extract_into_dynany (const DataType &type,
- const DataValue &value)
+ DynSequence_Handler::extract_into_dynany (const Any &any)
{
- CORBA::TypeCode_ptr tc = DynSequence_Handler::create_typecode (type);
+ CORBA::TypeCode_ptr tc = DynSequence_Handler::create_typecode (any.type ());
// Make the actual DynSequence
DynamicAny::DynAny_var temp =
DYNANY_HANDLER->daf ()->create_dyn_any_from_type_code (tc);
DynamicAny::DynSequence_var retval = DynamicAny::DynSequence::_narrow (temp.in ());
- switch (type.kind ().integral ())
+ CORBA::TypeCode_ptr element_tc =
+ DynAny_Handler::create_typecode (any.type ().sequence ().elementType ());
+
+ switch (any.type ().kind ().integral ())
{
// ========== BASIC TYPES
case TCKind::tk_null_l:
case TCKind::tk_void_l:
ACE_ERROR ((LM_WARNING, "I don't know how to handle null or void types\n"));
+ throw 1;
case TCKind::tk_short_l:
- retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_short);
- retval->insert_short (CORBA::Short (static_cast < ::XMLSchema::short_ const & > (*value.begin_short ())));
- break;
-
case TCKind::tk_long_l:
- retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_long);
- retval->insert_long (CORBA::Long (static_cast < ::XMLSchema::int_ const& > (*value.begin_long ())));
- break;
-
case TCKind::tk_ushort_l:
- retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_ushort);
- retval->insert_ushort (CORBA::UShort (static_cast< ::XMLSchema::unsignedShort const & > (*value.begin_ushort ())));
- break;
-
case TCKind::tk_ulong_l:
- retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_ulong);
- retval->insert_ulong (CORBA::ULong (static_cast < ::XMLSchema::unsignedInt const& > (*value.begin_ulong ())));
- break;
-
case TCKind::tk_float_l:
- retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_float);
- retval->insert_float (CORBA::Float (*value.begin_float ()));
- break;
-
case TCKind::tk_double_l:
- retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_double);
- retval->insert_double (CORBA::Double (*value.begin_double ()));
- break;
-
case TCKind::tk_boolean_l:
- retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_boolean);
- retval->insert_boolean (static_cast < ::XMLSchema::boolean const& > (*value.begin_boolean ()));
- break;
-
- case TCKind::tk_char_l:
- retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_char);
- retval->insert_char (CORBA::Char (*value.begin_string ()->c_str ()));
- break;
-
case TCKind::tk_octet_l:
- retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_octet);
- retval->insert_octet (static_cast <const unsigned char &> (*value.begin_octet ()));
- break;
-
case TCKind::tk_string_l:
- retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_string);
- retval->insert_string (value.begin_string ()->c_str ());
- break;
-
case TCKind::tk_longlong_l:
- retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_longlong);
- retval->insert_longlong (CORBA::LongLong (static_cast < ::XMLSchema::long_ const& > (*value.begin_longlong ())));
- break;
-
case TCKind::tk_ulonglong_l:
- retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_ulonglong);
- retval->insert_ulonglong (CORBA::ULongLong (static_cast < ::XMLSchema::unsignedLong const& > (*value.begin_ulonglong ())));
- break;
-
- case TCKind::tk_longdouble_l:
- break;
-
- case TCKind::tk_wchar_l:
- retval = this->daf_->create_dyn_any_from_type_code (CORBA::_tc_wchar);
- retval->insert_wchar (CORBA::WChar (*value.begin_string ()->c_str ()));
- break;
-
+ case TCKind::tk_longdouble_l:
case TCKind::tk_wstring_l:
- break;
-
case TCKind::tk_enum_l:
- ACE_ERROR ((LM_ERROR, "Preparing to extract into enum\n"));
- return DynEnum_Handler::extract_into_dynany (type, value);
-
+ case TCKind::tk_objref_l:
+ case TCKind::tk_fixed_l:
case TCKind::tk_wfixed_l:
+ case TCKind::tk_component_l:
+ case TCKind::tk_home_l:
+ // special case where multiplicity of data value iterator is greater than one
+ // and is equal to length of sequence.
+ for (Any::value_const_iterator i = values;
+ values
+ case TCKind::tk_char_l:
+ case TCKind::tk_wchar_l:
+ // special case where value iterataor multiplicity should be one, and should
+ // represent a string, each character of which becomes a element of the sequence.
+
+ case TCKind::tk_sequence_l:
+ case TCKind::tk_array_l:
+ // Several special cases here.
+
case TCKind::tk_any_l:
case TCKind::tk_TypeCode_l:
case TCKind::tk_Principal_l:
- case TCKind::tk_objref_l:
case TCKind::tk_struct_l:
case TCKind::tk_union_l:
- case TCKind::tk_sequence_l:
- case TCKind::tk_array_l:
case TCKind::tk_alias_l:
case TCKind::tk_except_l:
case TCKind::tk_value_l:
@@ -123,9 +79,9 @@ namespace CIAO
case TCKind::tk_native_l:
case TCKind::tk_abstract_interface_l:
case TCKind::tk_local_interface_l:
- case TCKind::tk_component_l:
- case TCKind::tk_home_l:
case TCKind::tk_event_l:
+ // Special case where element association in datavalue contains another datavalue.
+
ACE_ERROR ((LM_ERROR, "Type not supported\n"));
throw 1;
}