#include <DynAnyUtils_T.h>
Static Public Member Functions | |
static void | insert_value (const T &val, TAO_DynCommon *the_dynany) |
static BasicTypeTraits< T >::return_type | get_value (TAO_DynCommon *the_dynany) |
Definition at line 37 of file DynAnyUtils_T.h.
BasicTypeTraits< T >::return_type TAO::DynAnyBasicTypeUtils< T >::get_value | ( | TAO_DynCommon * | the_dynany | ) | [static] |
Definition at line 61 of file DynAnyUtils_T.cpp.
References TAO_DynCommon::check_component(), TAO_DynCommon::destroyed(), TAO_DynCommon::has_components(), and TAO_DynCommon::the_any().
00062 { 00063 if (the_dynany->destroyed ()) 00064 { 00065 throw ::CORBA::OBJECT_NOT_EXIST (); 00066 } 00067 00068 if (the_dynany->has_components ()) 00069 { 00070 DynamicAny::DynAny_var cc = the_dynany->check_component (); 00071 TAO_DynCommon *dc = dynamic_cast<TAO_DynCommon *> (cc.in ()); 00072 return DynAnyBasicTypeUtils<T>::get_value (dc); 00073 } 00074 else 00075 { 00076 typedef typename BasicTypeTraits<T>::return_type ret_type; 00077 typedef typename BasicTypeTraits<T>::extract_type ext_type; 00078 ret_type retval = ret_type (); 00079 ext_type extval (retval); 00080 const CORBA::Any &my_any = the_dynany->the_any (); 00081 00082 if (!(my_any >>= extval)) 00083 { 00084 throw DynamicAny::DynAny::TypeMismatch (); 00085 } 00086 00087 return BasicTypeTraits<T>::convert (extval); 00088 } 00089 }
void TAO::DynAnyBasicTypeUtils< T >::insert_value | ( | const T & | val, | |
TAO_DynCommon * | the_dynany | |||
) | [static] |
Definition at line 35 of file DynAnyUtils_T.cpp.
References TAO_DynCommon::check_component(), TAO_DynCommon::check_type(), TAO_DynCommon::destroyed(), TAO_DynCommon::has_components(), and TAO_DynCommon::the_any().
00037 { 00038 if (the_dynany->destroyed ()) 00039 { 00040 throw ::CORBA::OBJECT_NOT_EXIST (); 00041 } 00042 00043 if (the_dynany->has_components ()) 00044 { 00045 DynamicAny::DynAny_var cc = the_dynany->check_component (); 00046 TAO_DynCommon *dc = dynamic_cast<TAO_DynCommon *> (cc.in ()); 00047 DynAnyBasicTypeUtils<T>::insert_value (val, dc); 00048 } 00049 else 00050 { 00051 the_dynany->check_type (BasicTypeTraits<T>::tc_value); 00052 CORBA::Any &my_any = the_dynany->the_any (); 00053 typedef typename TAO::BasicTypeTraits<T>::insert_type i_type; 00054 i_type insert_arg (val); 00055 my_any <<= insert_arg; 00056 } 00057 }