00001 // -*- C++ -*- 00002 // 00003 // $Id: Seq_Var_T.inl 74154 2006-08-21 18:40:48Z johnnyw $ 00004 00005 #include "ace/OS_Memory.h" 00006 00007 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00008 00009 template<typename T> 00010 ACE_INLINE 00011 TAO_Seq_Var_Base_T<T>::TAO_Seq_Var_Base_T (void) 00012 : ptr_ (0) 00013 {} 00014 00015 template<typename T> 00016 ACE_INLINE 00017 TAO_Seq_Var_Base_T<T>::TAO_Seq_Var_Base_T (T * p) 00018 : ptr_ (p) 00019 {} 00020 00021 template<typename T> 00022 ACE_INLINE 00023 TAO_Seq_Var_Base_T<T>::~TAO_Seq_Var_Base_T (void) 00024 { 00025 delete this->ptr_; 00026 } 00027 00028 template<typename T> 00029 ACE_INLINE 00030 const T * 00031 TAO_Seq_Var_Base_T<T>::operator-> (void) const 00032 { 00033 return this->ptr_; 00034 } 00035 00036 template<typename T> 00037 ACE_INLINE 00038 T * 00039 TAO_Seq_Var_Base_T<T>::operator-> (void) 00040 { 00041 return this->ptr_; 00042 } 00043 00044 template<typename T> 00045 ACE_INLINE 00046 TAO_Seq_Var_Base_T<T>::operator const T & () const 00047 { 00048 return *this->ptr_; 00049 } 00050 00051 template<typename T> 00052 ACE_INLINE 00053 TAO_Seq_Var_Base_T<T>::operator T & () 00054 { 00055 return *this->ptr_; 00056 } 00057 00058 template<typename T> 00059 ACE_INLINE 00060 TAO_Seq_Var_Base_T<T>::operator T & () const 00061 { 00062 return *this->ptr_; 00063 } 00064 00065 template<typename T> 00066 ACE_INLINE 00067 const T & 00068 TAO_Seq_Var_Base_T<T>::in (void) const 00069 { 00070 return *this->ptr_; 00071 } 00072 00073 template<typename T> 00074 ACE_INLINE 00075 T & 00076 TAO_Seq_Var_Base_T<T>::inout (void) 00077 { 00078 return *this->ptr_; 00079 } 00080 00081 template<typename T> 00082 ACE_INLINE 00083 T *& 00084 TAO_Seq_Var_Base_T<T>::out (void) 00085 { 00086 delete this->ptr_; 00087 this->ptr_ = 0; 00088 return this->ptr_; 00089 } 00090 00091 template<typename T> 00092 ACE_INLINE 00093 T * 00094 TAO_Seq_Var_Base_T<T>::_retn (void) 00095 { 00096 T * tmp = this->ptr_; 00097 this->ptr_ = 0; 00098 return tmp; 00099 } 00100 00101 template<typename T> 00102 ACE_INLINE 00103 T * 00104 TAO_Seq_Var_Base_T<T>::ptr (void) const 00105 { 00106 return this->ptr_; 00107 } 00108 00109 // *************************************************************** 00110 00111 template<typename T> 00112 ACE_INLINE 00113 TAO_FixedSeq_Var_T<T>::TAO_FixedSeq_Var_T (void) 00114 {} 00115 00116 template<typename T> 00117 ACE_INLINE 00118 TAO_FixedSeq_Var_T<T>::TAO_FixedSeq_Var_T (T * p) 00119 : TAO_Seq_Var_Base_T<T> (p) 00120 {} 00121 00122 template<typename T> 00123 TAO_FixedSeq_Var_T<T>::TAO_FixedSeq_Var_T ( 00124 const TAO_FixedSeq_Var_T<T> & p 00125 ) 00126 : TAO_Seq_Var_Base_T<T> (p) 00127 { 00128 } 00129 00130 // Fixed-size base types only. 00131 template<typename T> 00132 ACE_INLINE 00133 TAO_FixedSeq_Var_T<T>::TAO_FixedSeq_Var_T (const T & p) 00134 { 00135 ACE_NEW (this->ptr_, 00136 T (p)); 00137 } 00138 00139 template<typename T> 00140 ACE_INLINE 00141 TAO_FixedSeq_Var_T<T> & 00142 TAO_FixedSeq_Var_T<T>::operator= (T * p) 00143 { 00144 delete this->ptr_; 00145 this->ptr_ = p; 00146 return *this; 00147 } 00148 00149 template<typename T> 00150 ACE_INLINE 00151 typename TAO_FixedSeq_Var_T<T>::T_elem 00152 TAO_FixedSeq_Var_T<T>::operator[] (CORBA::ULong index) 00153 { 00154 return this->ptr_->operator[] (index); 00155 } 00156 00157 template<typename T> 00158 ACE_INLINE 00159 typename TAO_FixedSeq_Var_T<T>::T_const_elem 00160 TAO_FixedSeq_Var_T<T>::operator[] (CORBA::ULong index) const 00161 { 00162 return this->ptr_->operator[] (index); 00163 } 00164 00165 // *************************************************************** 00166 00167 template<typename T> 00168 ACE_INLINE 00169 TAO_VarSeq_Var_T<T>::TAO_VarSeq_Var_T (void) 00170 { 00171 } 00172 00173 template<typename T> 00174 ACE_INLINE 00175 TAO_VarSeq_Var_T<T>::TAO_VarSeq_Var_T (T * p) 00176 : TAO_Seq_Var_Base_T<T> (p) 00177 { 00178 } 00179 00180 template<typename T> 00181 TAO_VarSeq_Var_T<T>::TAO_VarSeq_Var_T ( 00182 const TAO_VarSeq_Var_T<T> & p) 00183 : TAO_Seq_Var_Base_T<T> (p) 00184 { 00185 } 00186 00187 template<typename T> 00188 ACE_INLINE 00189 TAO_VarSeq_Var_T<T> & 00190 TAO_VarSeq_Var_T<T>::operator= (T * p) 00191 { 00192 delete this->ptr_; 00193 this->ptr_ = p; 00194 return *this; 00195 } 00196 00197 // Variable-size types only. 00198 template<typename T> 00199 ACE_INLINE 00200 TAO_VarSeq_Var_T<T>::operator T *& () 00201 { 00202 return this->ptr_; 00203 } 00204 00205 template<typename T> 00206 ACE_INLINE 00207 typename TAO_VarSeq_Var_T<T>::T_elem 00208 TAO_VarSeq_Var_T<T>::operator[] (CORBA::ULong index) 00209 { 00210 return this->ptr_->operator[] (index); 00211 } 00212 00213 template<typename T> 00214 ACE_INLINE 00215 typename TAO_VarSeq_Var_T<T>::T_const_elem 00216 TAO_VarSeq_Var_T<T>::operator[] (CORBA::ULong index) const 00217 { 00218 return this->ptr_->operator[] (index); 00219 } 00220 00221 00222 TAO_END_VERSIONED_NAMESPACE_DECL