Non-template class for all the basic types. More...
#include <Any_Basic_Impl.h>


Public Member Functions | |
| Any_Basic_Impl (CORBA::TypeCode_ptr, void *value) | |
| virtual | ~Any_Basic_Impl (void) |
| virtual CORBA::Boolean | marshal_value (TAO_OutputCDR &) |
| CORBA::Boolean | demarshal_value (TAO_InputCDR &) |
| CORBA::Boolean | demarshal_value (TAO_InputCDR &, CORBA::Long) |
| virtual void | _tao_decode (TAO_InputCDR &) |
Static Public Member Functions | |
| static void | insert (CORBA::Any &, CORBA::TypeCode_ptr, const void *) |
| static CORBA::Boolean | extract (const CORBA::Any &, CORBA::TypeCode_ptr, void *) |
| static Any_Basic_Impl * | create_empty (CORBA::TypeCode_ptr) |
Static Private Member Functions | |
| static void | assign_value (void *, Any_Basic_Impl *) |
| static void | assign_value (void *, Any_Basic_Impl *, CORBA::Long tck) |
Private Attributes | |
| CORBA::Long | kind_ |
| union { | |
| CORBA::Short s | |
| CORBA::UShort us | |
| CORBA::Long l | |
| CORBA::ULong ul | |
| CORBA::Float f | |
| CORBA::Double d | |
| CORBA::Boolean b | |
| CORBA::Char c | |
| CORBA::Octet o | |
| CORBA::LongLong ll | |
| CORBA::ULongLong ull | |
| CORBA::LongDouble ld | |
| CORBA::WChar wc | |
| } | u_ |
Non-template class for all the basic types.
Definition at line 39 of file Any_Basic_Impl.h.
| TAO::Any_Basic_Impl::Any_Basic_Impl | ( | CORBA::TypeCode_ptr | tc, | |
| void * | value | |||
| ) |
Definition at line 21 of file Any_Basic_Impl.cpp.
: Any_Impl (0, tc), kind_ (CORBA::tk_null) { this->kind_ = TAO::unaliased_kind (tc); switch (this->kind_) { case CORBA::tk_short: this->u_.s = *static_cast<CORBA::Short *> (value); break; case CORBA::tk_ushort: this->u_.us = *static_cast<CORBA::UShort *> (value); break; case CORBA::tk_long: this->u_.l = *static_cast<CORBA::Long *> (value); break; case CORBA::tk_ulong: this->u_.ul = *static_cast<CORBA::ULong *> (value); break; case CORBA::tk_float: this->u_.f = *static_cast<CORBA::Float *> (value); break; case CORBA::tk_double: this->u_.d = *static_cast<CORBA::Double *> (value); break; case CORBA::tk_boolean: this->u_.b = *static_cast<CORBA::Boolean *> (value); break; case CORBA::tk_char: this->u_.c = *static_cast<CORBA::Char *> (value); break; case CORBA::tk_octet: this->u_.o = *static_cast<CORBA::Octet *> (value); break; case CORBA::tk_longlong: this->u_.ll = *static_cast<CORBA::LongLong *> (value); break; #if !defined (ACE_LACKS_LONGLONG_T) case CORBA::tk_ulonglong: #if !defined (ACE_LACKS_UNSIGNEDLONGLONG_T) this->u_.ull = *static_cast<CORBA::ULongLong *> (value); #else this->u_.ull = *static_cast<CORBA::LongLong *> (value); #endif break; #endif case CORBA::tk_longdouble: this->u_.ld = *static_cast<CORBA::LongDouble *> (value); break; case CORBA::tk_wchar: this->u_.wc = *static_cast<CORBA::WChar *> (value); break; default: break; } }
| TAO::Any_Basic_Impl::~Any_Basic_Impl | ( | void | ) | [virtual] |
Definition at line 80 of file Any_Basic_Impl.cpp.
{
}
| void TAO::Any_Basic_Impl::_tao_decode | ( | TAO_InputCDR & | cdr | ) | [virtual] |
Reimplemented from TAO::Any_Impl.
Definition at line 261 of file Any_Basic_Impl.cpp.
{
if (! this->demarshal_value (cdr))
{
throw ::CORBA::MARSHAL ();
}
}
| void TAO::Any_Basic_Impl::assign_value | ( | void * | dest, | |
| Any_Basic_Impl * | src | |||
| ) | [static, private] |
Definition at line 311 of file Any_Basic_Impl.cpp.
{
Any_Basic_Impl::assign_value (dest,
src,
src->kind_);
}
| void TAO::Any_Basic_Impl::assign_value | ( | void * | dest, | |
| Any_Basic_Impl * | src, | |||
| CORBA::Long | tck | |||
| ) | [static, private] |
Definition at line 319 of file Any_Basic_Impl.cpp.
{
CORBA::TCKind const kind = static_cast<CORBA::TCKind> (tck);
switch (kind)
{
case CORBA::tk_short:
*static_cast<CORBA::Short *> (dest) = src->u_.s;
break;
case CORBA::tk_ushort:
*static_cast<CORBA::UShort *> (dest) = src->u_.us;
break;
case CORBA::tk_long:
*static_cast<CORBA::Long *> (dest) = src->u_.l;
break;
case CORBA::tk_ulong:
*static_cast<CORBA::ULong *> (dest) = src->u_.ul;
break;
case CORBA::tk_float:
*static_cast<CORBA::Float *> (dest) = src->u_.f;
break;
case CORBA::tk_double:
*static_cast<CORBA::Double *> (dest) = src->u_.d;
break;
case CORBA::tk_boolean:
*static_cast<CORBA::Boolean *> (dest) = src->u_.b;
break;
case CORBA::tk_char:
*static_cast<CORBA::Char *> (dest) = src->u_.c;
break;
case CORBA::tk_octet:
*static_cast<CORBA::Octet *> (dest) = src->u_.o;
break;
case CORBA::tk_longlong:
*static_cast<CORBA::LongLong *> (dest) = src->u_.ll;
break;
#if !defined (ACE_LACKS_LONGLONG_T)
case CORBA::tk_ulonglong:
#if !defined (ACE_LACKS_UNSIGNEDLONGLONG_T)
*static_cast<CORBA::ULongLong *> (dest) = src->u_.ull;
break;
#else
*static_cast<CORBA::LongLong *> (dest) = src->u_.ull;
#endif
#endif
case CORBA::tk_longdouble:
*static_cast<CORBA::LongDouble *> (dest) = src->u_.ld;
break;
case CORBA::tk_wchar:
*static_cast<CORBA::WChar *> (dest) = src->u_.wc;
break;
default:
break;
}
}
| Any_Basic_Impl * TAO::Any_Basic_Impl::create_empty | ( | CORBA::TypeCode_ptr | tc | ) | [static] |
Definition at line 270 of file Any_Basic_Impl.cpp.
{
CORBA::TCKind const kind = tc->kind ();
TAO::Any_Basic_Impl * retval = 0;
switch (kind)
{
case CORBA::tk_longlong:
{
CORBA::LongLong tmp = ACE_CDR_LONGLONG_INITIALIZER;
ACE_NEW_RETURN (retval,
TAO::Any_Basic_Impl (tc, &tmp),
0);
}
break;
case CORBA::tk_longdouble:
{
CORBA::LongDouble tmp = ACE_CDR_LONG_DOUBLE_INITIALIZER;
ACE_NEW_RETURN (retval,
TAO::Any_Basic_Impl (tc, &tmp),
0);
}
break;
default:
{
CORBA::ULongLong tmp = 0;
ACE_NEW_RETURN (retval,
TAO::Any_Basic_Impl (tc, &tmp),
0);
}
break;
}
return retval;
}
| CORBA::Boolean TAO::Any_Basic_Impl::demarshal_value | ( | TAO_InputCDR & | cdr, | |
| CORBA::Long | tck | |||
| ) |
Definition at line 221 of file Any_Basic_Impl.cpp.
{
CORBA::TCKind const tckind = static_cast<CORBA::TCKind> (tck);
switch (tckind)
{
case CORBA::tk_short:
return cdr >> this->u_.s;
case CORBA::tk_ushort:
return cdr >> this->u_.us;
case CORBA::tk_long:
return cdr >> this->u_.l;
case CORBA::tk_ulong:
return cdr >> this->u_.ul;
case CORBA::tk_float:
return cdr >> this->u_.f;
case CORBA::tk_double:
return cdr >> this->u_.d;
case CORBA::tk_boolean:
return cdr >> CORBA::Any::to_boolean (this->u_.b);
case CORBA::tk_char:
return cdr >> CORBA::Any::to_char (this->u_.c);
case CORBA::tk_octet:
return cdr >> CORBA::Any::to_octet (this->u_.o);
case CORBA::tk_longlong:
return cdr >> this->u_.ll;
#if !defined (ACE_LACKS_LONGLONG_T)
case CORBA::tk_ulonglong:
return cdr >> this->u_.ull;
#endif
case CORBA::tk_longdouble:
return cdr >> this->u_.ld;
case CORBA::tk_wchar:
return cdr >> CORBA::Any::to_wchar (this->u_.wc);
default:
return 0;
}
}
| CORBA::Boolean TAO::Any_Basic_Impl::demarshal_value | ( | TAO_InputCDR & | cdr | ) |
Definition at line 214 of file Any_Basic_Impl.cpp.
{
return this->demarshal_value (cdr,
this->kind_);
}
| CORBA::Boolean TAO::Any_Basic_Impl::extract | ( | const CORBA::Any & | any, | |
| CORBA::TypeCode_ptr | tc, | |||
| void * | _tao_elem | |||
| ) | [static] |
Definition at line 97 of file Any_Basic_Impl.cpp.
{
try
{
CORBA::TypeCode_ptr any_tc = any._tao_get_typecode ();
CORBA::Boolean const _tao_equiv =
any_tc->equivalent (tc);
if (!_tao_equiv)
{
return false;
}
TAO::Any_Impl * const impl = any.impl ();
if (impl && !impl->encoded ())
{
TAO::Any_Basic_Impl * const narrow_impl =
dynamic_cast<TAO::Any_Basic_Impl *> (impl);
if (narrow_impl == 0)
{
return false;
}
Any_Basic_Impl::assign_value (_tao_elem, narrow_impl);
return true;
}
TAO::Any_Basic_Impl *replacement =
TAO::Any_Basic_Impl::create_empty (any_tc);
auto_ptr<TAO::Any_Basic_Impl> replacement_safety (replacement);
// We know this will work since the unencoded case is covered above.
TAO::Unknown_IDL_Type * const unk =
dynamic_cast<TAO::Unknown_IDL_Type *> (impl);
if (!unk)
return false;
// Get the kind of the type where we are extracting in ie. the
// aliased type if there are any. Passing the aliased kind
// will not help.
CORBA::TCKind const tck = tc->kind ();
// We don't want the rd_ptr of unk to move, in case it is
// shared by another Any. This copies the state, not the buffer.
TAO_InputCDR for_reading (unk->_tao_get_cdr ());
CORBA::Boolean const good_decode =
replacement->demarshal_value (for_reading,
static_cast<CORBA::Long> (tck));
if (good_decode)
{
Any_Basic_Impl::assign_value (_tao_elem,
replacement,
tck);
const_cast<CORBA::Any &> (any).replace (replacement);
replacement_safety.release ();
return true;
}
// Duplicated by Any_Impl base class constructor.
::CORBA::release (any_tc);
}
catch (const ::CORBA::Exception&)
{
}
return false;
}
| void TAO::Any_Basic_Impl::insert | ( | CORBA::Any & | any, | |
| CORBA::TypeCode_ptr | tc, | |||
| const void * | value | |||
| ) | [static] |
Definition at line 85 of file Any_Basic_Impl.cpp.
{
Any_Basic_Impl *new_impl = 0;
ACE_NEW (new_impl,
Any_Basic_Impl (tc,
const_cast<void *> (value)));
any.replace (new_impl);
}
| CORBA::Boolean TAO::Any_Basic_Impl::marshal_value | ( | TAO_OutputCDR & | cdr | ) | [virtual] |
Implements TAO::Any_Impl.
Definition at line 174 of file Any_Basic_Impl.cpp.
{
CORBA::TCKind const tckind = static_cast<CORBA::TCKind> (this->kind_);
switch (tckind)
{
case CORBA::tk_short:
return cdr << this->u_.s;
case CORBA::tk_ushort:
return cdr << this->u_.us;
case CORBA::tk_long:
return cdr << this->u_.l;
case CORBA::tk_ulong:
return cdr << this->u_.ul;
case CORBA::tk_float:
return cdr << this->u_.f;
case CORBA::tk_double:
return cdr << this->u_.d;
case CORBA::tk_boolean:
return cdr << CORBA::Any::from_boolean (this->u_.b);
case CORBA::tk_char:
return cdr << CORBA::Any::from_char (this->u_.c);
case CORBA::tk_octet:
return cdr << CORBA::Any::from_octet (this->u_.o);
case CORBA::tk_longlong:
return cdr << this->u_.ll;
#if !defined (ACE_LACKS_LONGLONG_T)
case CORBA::tk_ulonglong:
return cdr << this->u_.ull;
#endif
case CORBA::tk_longdouble:
return cdr << this->u_.ld;
case CORBA::tk_wchar:
return cdr << CORBA::Any::from_wchar (this->u_.wc);
default:
return false;
}
}
| CORBA::Boolean TAO::Any_Basic_Impl::b |
Definition at line 80 of file Any_Basic_Impl.h.
| CORBA::Char TAO::Any_Basic_Impl::c |
Definition at line 81 of file Any_Basic_Impl.h.
| CORBA::Double TAO::Any_Basic_Impl::d |
Definition at line 79 of file Any_Basic_Impl.h.
| CORBA::Float TAO::Any_Basic_Impl::f |
Definition at line 78 of file Any_Basic_Impl.h.
CORBA::Long TAO::Any_Basic_Impl::kind_ [private] |
Definition at line 71 of file Any_Basic_Impl.h.
| CORBA::Long TAO::Any_Basic_Impl::l |
Definition at line 76 of file Any_Basic_Impl.h.
| CORBA::LongDouble TAO::Any_Basic_Impl::ld |
Definition at line 91 of file Any_Basic_Impl.h.
| CORBA::LongLong TAO::Any_Basic_Impl::ll |
Definition at line 83 of file Any_Basic_Impl.h.
| CORBA::Octet TAO::Any_Basic_Impl::o |
Definition at line 82 of file Any_Basic_Impl.h.
| CORBA::Short TAO::Any_Basic_Impl::s |
Definition at line 74 of file Any_Basic_Impl.h.
union { ... } TAO::Any_Basic_Impl::u_ [private] |
| CORBA::ULong TAO::Any_Basic_Impl::ul |
Definition at line 77 of file Any_Basic_Impl.h.
| CORBA::ULongLong TAO::Any_Basic_Impl::ull |
Definition at line 85 of file Any_Basic_Impl.h.
| CORBA::UShort TAO::Any_Basic_Impl::us |
Definition at line 75 of file Any_Basic_Impl.h.
| CORBA::WChar TAO::Any_Basic_Impl::wc |
Definition at line 92 of file Any_Basic_Impl.h.
1.7.0