00001 // -*- C++ -*- 00002 // 00003 // $Id: Pseudo_VarOut_T.inl 73128 2006-06-19 14:51:36Z parsons $ 00004 00005 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00006 00007 template <typename T> 00008 ACE_INLINE 00009 TAO_Pseudo_Var_T<T>::TAO_Pseudo_Var_T (void) 00010 : ptr_ (T::_nil ()) 00011 {} 00012 00013 template <typename T> 00014 ACE_INLINE 00015 TAO_Pseudo_Var_T<T>::TAO_Pseudo_Var_T (typename T::_ptr_type p) 00016 : ptr_ (p) 00017 {} 00018 00019 template <typename T> 00020 ACE_INLINE 00021 TAO_Pseudo_Var_T<T>::TAO_Pseudo_Var_T (const TAO_Pseudo_Var_T<T> & p) 00022 : TAO_Base_var () 00023 , ptr_ (T::_duplicate (p.ptr ())) 00024 {} 00025 00026 template <typename T> 00027 ACE_INLINE 00028 TAO_Pseudo_Var_T<T>::~TAO_Pseudo_Var_T (void) 00029 { 00030 ::CORBA::release (this->ptr_); 00031 } 00032 00033 template <typename T> 00034 ACE_INLINE 00035 TAO_Pseudo_Var_T<T> & 00036 TAO_Pseudo_Var_T<T>::operator= (typename T::_ptr_type p) 00037 { 00038 ::CORBA::release (this->ptr_); 00039 this->ptr_ = p; 00040 return *this; 00041 } 00042 00043 template <typename T> 00044 ACE_INLINE 00045 TAO_Pseudo_Var_T<T>::operator typename T::_ptr_type const & () const 00046 { 00047 return this->ptr_; 00048 } 00049 00050 template <typename T> 00051 ACE_INLINE 00052 TAO_Pseudo_Var_T<T>::operator typename T::_ptr_type & () 00053 { 00054 return this->ptr_; 00055 } 00056 00057 template <typename T> 00058 ACE_INLINE 00059 typename T::_ptr_type 00060 TAO_Pseudo_Var_T<T>::operator-> (void) const 00061 { 00062 return this->ptr_; 00063 } 00064 00065 template <typename T> 00066 ACE_INLINE 00067 typename T::_ptr_type 00068 TAO_Pseudo_Var_T<T>::in (void) const 00069 { 00070 return this->ptr_; 00071 } 00072 00073 template <typename T> 00074 ACE_INLINE 00075 typename T::_ptr_type & 00076 TAO_Pseudo_Var_T<T>::inout (void) 00077 { 00078 return this->ptr_; 00079 } 00080 00081 template <typename T> 00082 ACE_INLINE 00083 typename T::_ptr_type & 00084 TAO_Pseudo_Var_T<T>::out (void) 00085 { 00086 ::CORBA::release (this->ptr_); 00087 this->ptr_ = T::_nil (); 00088 return this->ptr_; 00089 } 00090 00091 template <typename T> 00092 ACE_INLINE 00093 typename T::_ptr_type 00094 TAO_Pseudo_Var_T<T>::_retn (void) 00095 { 00096 typename T::_ptr_type val = this->ptr_; 00097 this->ptr_ = T::_nil (); 00098 return val; 00099 } 00100 00101 template <typename T> 00102 ACE_INLINE 00103 typename T::_ptr_type 00104 TAO_Pseudo_Var_T<T>::ptr (void) const 00105 { 00106 return this->ptr_; 00107 } 00108 00109 // ************************************************************* 00110 00111 template <typename T> 00112 ACE_INLINE 00113 TAO_Pseudo_Out_T<T>::TAO_Pseudo_Out_T (typename T::_ptr_type & p) 00114 : ptr_ (p) 00115 { 00116 this->ptr_ = T::_nil (); 00117 } 00118 00119 template <typename T> 00120 ACE_INLINE 00121 TAO_Pseudo_Out_T<T>::TAO_Pseudo_Out_T (typename T::_var_type & p) 00122 : ptr_ (p.out ()) 00123 { 00124 ::CORBA::release (this->ptr_); 00125 this->ptr_ = T::_nil (); 00126 } 00127 00128 template <typename T> 00129 ACE_INLINE 00130 TAO_Pseudo_Out_T<T>::TAO_Pseudo_Out_T ( 00131 const TAO_Pseudo_Out_T<T> & p 00132 ) 00133 : ptr_ (p.ptr_) 00134 {} 00135 00136 template <typename T> 00137 ACE_INLINE 00138 TAO_Pseudo_Out_T<T> & 00139 TAO_Pseudo_Out_T<T>::operator= (const TAO_Pseudo_Out_T<T> & p) 00140 { 00141 this->ptr_ = p.ptr_; 00142 return *this; 00143 } 00144 00145 template <typename T> 00146 ACE_INLINE 00147 TAO_Pseudo_Out_T<T> & 00148 TAO_Pseudo_Out_T<T>::operator= (typename T::_ptr_type p) 00149 { 00150 this->ptr_ = p; 00151 return *this; 00152 } 00153 00154 template <typename T> 00155 ACE_INLINE 00156 typename T::_ptr_type & 00157 TAO_Pseudo_Out_T<T>::ptr (void) 00158 { 00159 return this->ptr_; 00160 } 00161 00162 template <typename T> 00163 ACE_INLINE 00164 TAO_Pseudo_Out_T<T>::operator typename T::_ptr_type & () 00165 { 00166 return this->ptr_; 00167 } 00168 00169 template <typename T> 00170 ACE_INLINE 00171 typename T::_ptr_type 00172 TAO_Pseudo_Out_T<T>::operator-> (void) 00173 { 00174 return this->ptr_; 00175 } 00176 00177 TAO_END_VERSIONED_NAMESPACE_DECL