00001 // -*- C++ -*- 00002 // 00003 // VarOut_T.inl,v 1.6 2006/06/20 06:03:07 jwillemsen Exp 00004 00005 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00006 00007 template<typename T> 00008 ACE_INLINE 00009 TAO_Var_Base_T<T>::TAO_Var_Base_T (void) 00010 : ptr_ (0) 00011 {} 00012 00013 template<typename T> 00014 ACE_INLINE 00015 TAO_Var_Base_T<T>::TAO_Var_Base_T (T * p) 00016 : ptr_ (p) 00017 {} 00018 00019 template<typename T> 00020 ACE_INLINE 00021 TAO_Var_Base_T<T>::~TAO_Var_Base_T (void) 00022 { 00023 delete this->ptr_; 00024 } 00025 00026 template<typename T> 00027 ACE_INLINE 00028 const T * 00029 TAO_Var_Base_T<T>::operator-> (void) const 00030 { 00031 return this->ptr_; 00032 } 00033 00034 template<typename T> 00035 ACE_INLINE 00036 T * 00037 TAO_Var_Base_T<T>::operator-> (void) 00038 { 00039 return this->ptr_; 00040 } 00041 00042 template<typename T> 00043 ACE_INLINE 00044 TAO_Var_Base_T<T>::operator const T & () const 00045 { 00046 return *this->ptr_; 00047 } 00048 00049 template<typename T> 00050 ACE_INLINE 00051 TAO_Var_Base_T<T>::operator T & () 00052 { 00053 return *this->ptr_; 00054 } 00055 00056 template<typename T> 00057 ACE_INLINE 00058 TAO_Var_Base_T<T>::operator T & () const 00059 { 00060 return *this->ptr_; 00061 } 00062 00063 template<typename T> 00064 ACE_INLINE 00065 const T & 00066 TAO_Var_Base_T<T>::in (void) const 00067 { 00068 return *this->ptr_; 00069 } 00070 00071 template<typename T> 00072 ACE_INLINE 00073 T & 00074 TAO_Var_Base_T<T>::inout (void) 00075 { 00076 return *this->ptr_; 00077 } 00078 00079 template<typename T> 00080 ACE_INLINE 00081 T * 00082 TAO_Var_Base_T<T>::ptr (void) const 00083 { 00084 return this->ptr_; 00085 } 00086 // ************************************************************* 00087 00088 template<typename T> 00089 ACE_INLINE 00090 TAO_Fixed_Var_T<T>::TAO_Fixed_Var_T (void) 00091 {} 00092 00093 template<typename T> 00094 ACE_INLINE 00095 TAO_Fixed_Var_T<T>::TAO_Fixed_Var_T (T * p) 00096 : TAO_Var_Base_T<T> (p) 00097 {} 00098 00099 template<typename T> 00100 ACE_INLINE 00101 TAO_Fixed_Var_T<T>::TAO_Fixed_Var_T (const TAO_Fixed_Var_T<T> & p) 00102 : TAO_Var_Base_T<T> (p) 00103 {} 00104 00105 // Fixed-size types only. 00106 template<typename T> 00107 ACE_INLINE 00108 TAO_Fixed_Var_T<T>::TAO_Fixed_Var_T (const T & p) 00109 { 00110 ACE_NEW (this->ptr_, 00111 T (p)); 00112 } 00113 00114 template<typename T> 00115 ACE_INLINE 00116 TAO_Fixed_Var_T<T> & 00117 TAO_Fixed_Var_T<T>::operator= (T * p) 00118 { 00119 delete this->ptr_; 00120 this->ptr_ = p; 00121 return *this; 00122 } 00123 00124 // Mapping for fixed size. 00125 template<typename T> 00126 ACE_INLINE 00127 T & 00128 TAO_Fixed_Var_T<T>::out (void) 00129 { 00130 return *this->ptr_; 00131 } 00132 00133 template<typename T> 00134 ACE_INLINE 00135 T 00136 TAO_Fixed_Var_T<T>::_retn (void) 00137 { 00138 return *this->ptr_; 00139 } 00140 00141 // ************************************************************* 00142 00143 template<typename T> 00144 ACE_INLINE 00145 TAO_Var_Var_T<T>::TAO_Var_Var_T (void) 00146 {} 00147 00148 template<typename T> 00149 ACE_INLINE 00150 TAO_Var_Var_T<T>::TAO_Var_Var_T (T * p) 00151 : TAO_Var_Base_T<T> (p) 00152 {} 00153 00154 template<typename T> 00155 ACE_INLINE 00156 TAO_Var_Var_T<T>::TAO_Var_Var_T (const TAO_Var_Var_T<T> & p) 00157 : TAO_Var_Base_T<T> (p) 00158 {} 00159 00160 template<typename T> 00161 ACE_INLINE 00162 TAO_Var_Var_T<T> & 00163 TAO_Var_Var_T<T>::operator= (T * p) 00164 { 00165 delete this->ptr_; 00166 this->ptr_ = p; 00167 return *this; 00168 } 00169 00170 // Variable-size types only. 00171 template<typename T> 00172 ACE_INLINE 00173 TAO_Var_Var_T<T>::operator T *& () 00174 { 00175 return this->ptr_; 00176 } 00177 00178 // Mapping for variable size. 00179 template<typename T> 00180 ACE_INLINE 00181 T *& 00182 TAO_Var_Var_T<T>::out (void) 00183 { 00184 delete this->ptr_; 00185 this->ptr_ = 0; 00186 return this->ptr_; 00187 } 00188 00189 template<typename T> 00190 ACE_INLINE 00191 T * 00192 TAO_Var_Var_T<T>::_retn (void) 00193 { 00194 T * tmp = this->ptr_; 00195 this->ptr_ = 0; 00196 return tmp; 00197 } 00198 00199 // ************************************************************* 00200 00201 template<typename T> 00202 ACE_INLINE 00203 TAO_Out_T<T>::TAO_Out_T (T *& p) 00204 : ptr_ (p) 00205 { 00206 this->ptr_ = 0; 00207 } 00208 00209 template<typename T> 00210 ACE_INLINE 00211 TAO_Out_T<T>::TAO_Out_T (T_var & p) 00212 : ptr_ (p.out ()) 00213 { 00214 delete this->ptr_; 00215 this->ptr_ = 0; 00216 } 00217 00218 template<typename T> 00219 ACE_INLINE 00220 TAO_Out_T<T>::TAO_Out_T (const TAO_Out_T<T> & p) 00221 : ptr_ (p.ptr_) 00222 {} 00223 00224 template<typename T> 00225 ACE_INLINE 00226 TAO_Out_T<T> & 00227 TAO_Out_T<T>::operator= (const TAO_Out_T<T> & p) 00228 { 00229 this->ptr_ = p.ptr_; 00230 return *this; 00231 } 00232 00233 template<typename T> 00234 ACE_INLINE 00235 TAO_Out_T<T> & 00236 TAO_Out_T<T>::operator= (T * p) 00237 { 00238 this->ptr_ = p; 00239 return *this; 00240 } 00241 00242 template<typename T> 00243 ACE_INLINE 00244 TAO_Out_T<T>::operator T *& () 00245 { 00246 return this->ptr_; 00247 } 00248 00249 template<typename T> 00250 ACE_INLINE 00251 T *& 00252 TAO_Out_T<T>::ptr (void) 00253 { 00254 return this->ptr_; 00255 } 00256 00257 template<typename T> 00258 ACE_INLINE 00259 T * 00260 TAO_Out_T<T>::operator-> (void) 00261 { 00262 return this->ptr_; 00263 } 00264 00265 TAO_END_VERSIONED_NAMESPACE_DECL