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