00001 // -*- C++ -*- 00002 // 00003 // $Id: Objref_VarOut_T.inl 79674 2007-09-20 09:36:06Z 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 ( 00117 TAO_Objref_Var_T<T> & p 00118 ) 00119 : ptr_ (p.out ()) 00120 { 00121 TAO::Objref_Traits<T>::release (this->ptr_); 00122 this->ptr_ = TAO::Objref_Traits<T>::nil (); 00123 } 00124 00125 template <typename T> 00126 ACE_INLINE 00127 TAO_Objref_Out_T<T>::TAO_Objref_Out_T ( 00128 const TAO_Objref_Out_T<T> & p 00129 ) 00130 : ptr_ (p.ptr_) 00131 { 00132 } 00133 00134 template <typename T> 00135 ACE_INLINE 00136 TAO_Objref_Out_T<T> & 00137 TAO_Objref_Out_T<T>::operator= ( 00138 const TAO_Objref_Out_T<T> & p 00139 ) 00140 { 00141 this->ptr_ = p.ptr_; 00142 return *this; 00143 } 00144 00145 template <typename T> 00146 ACE_INLINE 00147 TAO_Objref_Out_T<T> & 00148 TAO_Objref_Out_T<T>::operator= (T * p) 00149 { 00150 this->ptr_ = p; 00151 return *this; 00152 } 00153 00154 template <typename T> 00155 ACE_INLINE 00156 T *& 00157 TAO_Objref_Out_T<T>::ptr (void) 00158 { 00159 return this->ptr_; 00160 } 00161 00162 template <typename T> 00163 ACE_INLINE 00164 TAO_Objref_Out_T<T>::operator T *& () 00165 { 00166 return this->ptr_; 00167 } 00168 00169 template <typename T> 00170 ACE_INLINE 00171 T * 00172 TAO_Objref_Out_T<T>::operator-> (void) 00173 { 00174 return this->ptr_; 00175 } 00176 00177 TAO_END_VERSIONED_NAMESPACE_DECL 00178