Revert "Minor modernization of DynamicAny code"
[ACE_TAO.git] / TAO / tao / VarOut_T.inl
blob752f519ff6f4c918e96ff02e43b11a9d773aaae7
1 // -*- C++ -*-
2 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
4 template<typename T>
5 ACE_INLINE
6 TAO_Var_Base_T<T>::TAO_Var_Base_T ()
7   : ptr_ (nullptr)
8 {}
10 template<typename T>
11 ACE_INLINE
12 TAO_Var_Base_T<T>::TAO_Var_Base_T (T * p)
13   : ptr_ (p)
16 template<typename T>
17 ACE_INLINE
18 TAO_Var_Base_T<T>::~TAO_Var_Base_T ()
20   delete this->ptr_;
23 template<typename T>
24 ACE_INLINE
25 const T *
26 TAO_Var_Base_T<T>::operator-> () const
28   return this->ptr_;
31 template<typename T>
32 ACE_INLINE
33 T *
34 TAO_Var_Base_T<T>::operator-> ()
36   return this->ptr_;
39 template<typename T>
40 ACE_INLINE
41 const T &
42 TAO_Var_Base_T<T>::in () const
44   return *this->ptr_;
47 template<typename T>
48 ACE_INLINE
49 T &
50 TAO_Var_Base_T<T>::inout ()
52   return *this->ptr_;
55 template<typename T>
56 ACE_INLINE
57 T *
58 TAO_Var_Base_T<T>::ptr () const
60   return this->ptr_;
63 template<typename T>
64 ACE_INLINE
65 TAO_Var_Base_T<T>::operator T *& ()
67   return this->ptr_;
70 // *************************************************************
72 template<typename T>
73 ACE_INLINE
74 TAO_Fixed_Var_T<T>::TAO_Fixed_Var_T ()
77 template<typename T>
78 ACE_INLINE
79 TAO_Fixed_Var_T<T>::TAO_Fixed_Var_T (T * p)
80   : TAO_Var_Base_T<T> (p)
83 template<typename T>
84 ACE_INLINE
85 TAO_Fixed_Var_T<T>::TAO_Fixed_Var_T (const TAO_Fixed_Var_T<T> & p)
86   : TAO_Var_Base_T<T> (p)
89 // Fixed-size types only.
90 template<typename T>
91 ACE_INLINE
92 TAO_Fixed_Var_T<T>::TAO_Fixed_Var_T (const T & p)
94   ACE_NEW (this->ptr_,
95            T (p));
98 template<typename T>
99 ACE_INLINE
100 TAO_Fixed_Var_T<T> &
101 TAO_Fixed_Var_T<T>::operator= (T * p)
103   delete this->ptr_;
104   this->ptr_ = p;
105   return *this;
108 template<typename T>
109 ACE_INLINE
110 TAO_Fixed_Var_T<T>::operator const T & () const
112   return *this->ptr_;
115 template<typename T>
116 ACE_INLINE
117 TAO_Fixed_Var_T<T>::operator T & ()
119   // Use plain new, using the ACE_NEW macros will mean we dereference a
120   // nil pointer and crash which is more bad then plain new which could
121   // lead to a bad_alloc exception
122   if (!this->ptr_)
123   {
124     this->ptr_ = new T;
125   }
127   return *this->ptr_;
130 template<typename T>
131 ACE_INLINE
132 TAO_Fixed_Var_T<T>::operator T & () const
134   return *this->ptr_;
137 // Mapping for fixed size.
138 template<typename T>
139 ACE_INLINE
140 T &
141 TAO_Fixed_Var_T<T>::out ()
143   // Use plain new, using the ACE_NEW macros will mean we dereference a
144   // nil pointer and crash which is more bad then plain new which could
145   // lead to a bad_alloc exception
146   if (!this->ptr_)
147   {
148     this->ptr_ = new T;
149   }
151   return *this->ptr_;
154 template<typename T>
155 ACE_INLINE
157 TAO_Fixed_Var_T<T>::_retn ()
159   return *this->ptr_;
162 // *************************************************************
164 template<typename T>
165 ACE_INLINE
166 TAO_Var_Var_T<T>::TAO_Var_Var_T ()
169 template<typename T>
170 ACE_INLINE
171 TAO_Var_Var_T<T>::TAO_Var_Var_T (T * p)
172   : TAO_Var_Base_T<T> (p)
175 template<typename T>
176 ACE_INLINE
177 TAO_Var_Var_T<T>::TAO_Var_Var_T (const TAO_Var_Var_T<T> & p)
178   : TAO_Var_Base_T<T> (p)
181 template<typename T>
182 ACE_INLINE
183 TAO_Var_Var_T<T> &
184 TAO_Var_Var_T<T>::operator= (T * p)
186   delete this->ptr_;
187   this->ptr_ = p;
188   return *this;
191 template<typename T>
192 ACE_INLINE
193 TAO_Var_Var_T<T>::operator const T & () const
195   return *this->ptr_;
198 template<typename T>
199 ACE_INLINE
200 TAO_Var_Var_T<T>::operator T & ()
202   return *this->ptr_;
205 template<typename T>
206 ACE_INLINE
207 TAO_Var_Var_T<T>::operator T & () const
209   return *this->ptr_;
212 // Mapping for variable size.
213 template<typename T>
214 ACE_INLINE
215 T *&
216 TAO_Var_Var_T<T>::out ()
218   delete this->ptr_;
219   this->ptr_ = nullptr;
220   return this->ptr_;
223 template<typename T>
224 ACE_INLINE
225 T *
226 TAO_Var_Var_T<T>::_retn ()
228   T * tmp = this->ptr_;
229   this->ptr_ = nullptr;
230   return tmp;
233 // *************************************************************
235 template<typename T>
236 ACE_INLINE
237 TAO_Out_T<T>::TAO_Out_T (T *& p)
238   : ptr_ (p)
240   this->ptr_ = nullptr;
243 template<typename T>
244 ACE_INLINE
245 TAO_Out_T<T>::TAO_Out_T (T_var & p)
246   : ptr_ (p.out ())
248   delete this->ptr_;
249   this->ptr_ = nullptr;
252 template<typename T>
253 ACE_INLINE
254 TAO_Out_T<T>::TAO_Out_T (const TAO_Out_T<T> & p)
255   : ptr_ (p.ptr_)
258 template<typename T>
259 ACE_INLINE
260 TAO_Out_T<T> &
261 TAO_Out_T<T>::operator= (const TAO_Out_T<T> & p)
263   this->ptr_ = p.ptr_;
264   return *this;
267 template<typename T>
268 ACE_INLINE
269 TAO_Out_T<T> &
270 TAO_Out_T<T>::operator= (T * p)
272   this->ptr_ = p;
273   return *this;
276 template<typename T>
277 ACE_INLINE
278 TAO_Out_T<T>::operator T *& ()
280   return this->ptr_;
283 template<typename T>
284 ACE_INLINE
285 T *&
286 TAO_Out_T<T>::ptr ()
288   return this->ptr_;
291 template<typename T>
292 ACE_INLINE
293 T *
294 TAO_Out_T<T>::operator-> ()
296   return this->ptr_;
299 TAO_END_VERSIONED_NAMESPACE_DECL