3 //=============================================================================
9 //=============================================================================
11 #ifndef TAO_VAROUT_T_H
12 #define TAO_VAROUT_T_H
14 #include /**/ "ace/pre.h"
16 #include /**/ "tao/Versioned_Namespace.h"
18 #include "ace/OS_Memory.h"
20 #if !defined (ACE_LACKS_PRAGMA_ONCE)
22 #endif /* ACE_LACKS_PRAGMA_ONCE */
24 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
27 * @class TAO_Var_Base_T
29 * @brief Parametrized implementation of _var base class for structs,
30 * unions and exceptions.
38 TAO_Var_Base_T (const TAO_Var_Base_T
<T
> &);
43 const T
* operator-> () const;
45 typedef const T
& _in_type
;
46 typedef T
& _inout_type
;
48 // Common mapping for fixed and variable size types.
61 * @class TAO_Fixed_Var_T
63 * @brief Parametrized implementation of _var class for structs, unions,
64 * and exceptions with members of fixed size.
67 class TAO_Fixed_Var_T
: public TAO_Var_Base_T
<T
>
71 TAO_Fixed_Var_T (T
*);
72 TAO_Fixed_Var_T (const TAO_Fixed_Var_T
<T
> &);
74 // Fixed-size types only.
75 TAO_Fixed_Var_T (const T
&);
77 TAO_Fixed_Var_T
& operator= (T
*);
78 TAO_Fixed_Var_T
& operator= (const TAO_Fixed_Var_T
<T
> &);
80 // Fixed-size types only.
81 TAO_Fixed_Var_T
& operator= (const T
&);
83 operator const T
& () const;
85 operator T
& () const;
87 typedef T
& _out_type
;
90 // Mapping for fixed size types.
96 * @class TAO_Var_Var_T
98 * @brief Parametrized implementation of _var class for structs, unions,
99 * and exceptions with members of variable size.
102 class TAO_Var_Var_T
: public TAO_Var_Base_T
<T
>
107 TAO_Var_Var_T (const TAO_Var_Var_T
<T
> &);
109 TAO_Var_Var_T
& operator= (T
*);
110 TAO_Var_Var_T
& operator= (const TAO_Var_Var_T
<T
> &);
112 operator const T
& () const;
114 operator T
& () const;
116 typedef T
*& _out_type
;
117 typedef T
* _retn_type
;
119 // Mapping for variable size types.
127 * @brief Parametrized implementation of _out class for structs, unions
134 typedef typename
T::_var_type T_var
;
138 TAO_Out_T (const TAO_Out_T
<T
> &);
140 TAO_Out_T
&operator= (const TAO_Out_T
<T
> &);
141 TAO_Out_T
&operator= (T
*);
150 /// Assignment from T_var not allowed.
151 void operator= (const T_var
&);
154 TAO_END_VERSIONED_NAMESPACE_DECL
156 #if defined (__ACE_INLINE__)
157 #include "tao/VarOut_T.inl"
158 #endif /* __ACE_INLINE__ */
160 #include "tao/VarOut_T.cpp"
162 #include /**/ "ace/post.h"
164 #endif /* TAO_VAROUT_T_H */