2 #include "tao/AnyTypeCode/ExceptionA.h"
3 #include "tao/AnyTypeCode/Any_Dual_Impl_T.h"
4 #include "tao/SystemException.h"
5 #include "tao/ORB_Constants.h"
6 #include "tao/CORBA_String.h"
10 #include "ace/Malloc.h"
11 #include "ace/SString.h"
12 #include "ace/OS_NS_string.h"
14 #include "ace/OS_NS_stdio.h"
16 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
18 // Specializations for CORBA::Exception Any operators.
23 Any_Dual_Impl_T
<CORBA::Exception
>::value (const CORBA::Exception
& val
)
25 this->value_
= val
._tao_duplicate ();
30 Any_Dual_Impl_T
<CORBA::Exception
>::marshal_value (TAO_OutputCDR
&cdr
)
34 this->value_
->_tao_encode (cdr
);
38 catch (const ::CORBA::Exception
&)
47 Any_Dual_Impl_T
<CORBA::Exception
>::demarshal_value (TAO_InputCDR
&cdr
)
51 this->value_
->_tao_decode (cdr
);
55 catch (const ::CORBA::Exception
&)
62 // This should never get called since we don't have extraction operators
63 // for CORBA::Exception, but it is here to sidestep the constructor call
64 // in the unspecialized version that causes a problem with compilers that
65 // require explicit instantiation
68 Any_Dual_Impl_T
<CORBA::Exception
>::extract (
72 const CORBA::Exception
*&)
78 // =======================================================================
82 // Insertion of CORBA::Exception - copying.
84 operator<<= (CORBA::Any
&any
, const CORBA::Exception
&exception
)
86 TAO::Any_Dual_Impl_T
<CORBA::Exception
>::insert_copy (
88 CORBA::Exception::_tao_any_destructor
,
89 exception
._tao_type (),
93 // Insertion of CORBA::Exception - non-copying.
95 operator<<= (CORBA::Any
&any
, CORBA::Exception
*exception
)
97 TAO::Any_Dual_Impl_T
<CORBA::Exception
>::insert (
99 CORBA::Exception::_tao_any_destructor
,
100 exception
->_tao_type (),
107 TAO_END_VERSIONED_NAMESPACE_DECL