00001
00002
00003 #ifndef TAO_OBJECT_ARGUMENT_T_CPP
00004 #define TAO_OBJECT_ARGUMENT_T_CPP
00005
00006 #include "tao/Object_Argument_T.h"
00007
00008 #if !defined (__ACE_INLINE__)
00009 #include "tao/Object_Argument_T.inl"
00010 #endif
00011
00012 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00013
00014 template<typename S_ptr,
00015 class Insert_Policy>
00016 CORBA::Boolean
00017 TAO::In_Object_Argument_T<S_ptr,Insert_Policy>::marshal (TAO_OutputCDR &cdr)
00018 {
00019 return cdr << this->x_;
00020 }
00021
00022 #if TAO_HAS_INTERCEPTORS == 1
00023
00024 template<typename S_ptr,
00025 class Insert_Policy>
00026 void
00027 TAO::In_Object_Argument_T<S_ptr,Insert_Policy>::interceptor_value (CORBA::Any *any) const
00028 {
00029 Insert_Policy::any_insert (any, this->x_);
00030 }
00031
00032 #endif
00033
00034 template<typename S_ptr>
00035 void
00036 TAO::In_Object_Argument_Cloner_T<S_ptr>::duplicate (S_ptr objref)
00037 {
00038 if (objref)
00039 {
00040 objref->_add_ref ();
00041 }
00042 }
00043
00044 template<typename S_ptr>
00045 void
00046 TAO::In_Object_Argument_Cloner_T<S_ptr>::release (S_ptr objref)
00047 {
00048 if (objref)
00049 {
00050 objref->_remove_ref ();
00051 }
00052 }
00053
00054 template<typename S_ptr,
00055 class Insert_Policy>
00056 TAO::In_Object_Clonable_Argument_T<S_ptr,Insert_Policy>::~In_Object_Clonable_Argument_T (void)
00057 {
00058 if (this->is_clone_)
00059 {
00060 In_Object_Argument_Cloner_T<S_ptr>::release (this->x_);
00061 }
00062 }
00063
00064 template<typename S_ptr,
00065 class Insert_Policy>
00066 TAO::Argument*
00067 TAO::In_Object_Clonable_Argument_T<S_ptr,Insert_Policy>::clone (void)
00068 {
00069 In_Object_Argument_Cloner_T<S_ptr>::duplicate (this->x_);
00070
00071 In_Object_Clonable_Argument_T<S_ptr,Insert_Policy>* clone_arg
00072 = new In_Object_Clonable_Argument_T<S_ptr,Insert_Policy> (this->x_);
00073 clone_arg->is_clone_ = true;
00074 return clone_arg;
00075 }
00076
00077
00078
00079 template<typename S_ptr,
00080 typename S_traits,
00081 class Insert_Policy>
00082 CORBA::Boolean
00083 TAO::Inout_Object_Argument_T<S_ptr,S_traits,Insert_Policy>::marshal (TAO_OutputCDR &cdr)
00084 {
00085 return cdr << this->x_;
00086 }
00087
00088 template<typename S_ptr,
00089 typename S_traits,
00090 class Insert_Policy>
00091 CORBA::Boolean
00092 TAO::Inout_Object_Argument_T<S_ptr,S_traits,Insert_Policy>::demarshal (TAO_InputCDR & cdr)
00093 {
00094 S_traits::release (this->x_);
00095 return cdr >> this->x_;
00096 }
00097
00098 #if TAO_HAS_INTERCEPTORS == 1
00099
00100 template<typename S_ptr,
00101 typename S_traits,
00102 class Insert_Policy>
00103 void
00104 TAO::Inout_Object_Argument_T<S_ptr,S_traits,Insert_Policy>::interceptor_value (
00105 CORBA::Any *any) const
00106 {
00107 Insert_Policy::any_insert (any, this->x_);
00108 }
00109
00110 #endif
00111
00112
00113
00114 template<typename S_ptr,
00115 typename S_out,
00116 class Insert_Policy>
00117 CORBA::Boolean
00118 TAO::Out_Object_Argument_T<S_ptr,S_out,Insert_Policy>::demarshal (TAO_InputCDR & cdr)
00119 {
00120 return cdr >> this->x_;
00121 }
00122
00123 #if TAO_HAS_INTERCEPTORS == 1
00124
00125 template<typename S_ptr,
00126 typename S_out,
00127 class Insert_Policy>
00128 void
00129 TAO::Out_Object_Argument_T<S_ptr,S_out,Insert_Policy>::interceptor_value (
00130 CORBA::Any *any) const
00131 {
00132 Insert_Policy::any_insert (any, this->x_);
00133 }
00134
00135 #endif
00136
00137
00138
00139 template<typename S_ptr,
00140 typename S_var,
00141 class Insert_Policy>
00142 CORBA::Boolean
00143 TAO::Ret_Object_Argument_T<S_ptr,S_var,Insert_Policy>::demarshal (TAO_InputCDR & cdr)
00144 {
00145 return cdr >> this->x_.out ();
00146 }
00147
00148 #if TAO_HAS_INTERCEPTORS == 1
00149
00150 template<typename S_ptr,
00151 typename S_var,
00152 class Insert_Policy>
00153 void
00154 TAO::Ret_Object_Argument_T<S_ptr,S_var,Insert_Policy>::interceptor_value (
00155 CORBA::Any *any) const
00156 {
00157 Insert_Policy::any_insert (any, this->x_.in ());
00158 }
00159
00160 #endif
00161
00162 TAO_END_VERSIONED_NAMESPACE_DECL
00163
00164 #endif