3 //=============================================================================
5 * @file Object_Argument_T.h
7 * @authors Jeff Parsons and Carlos O'Ryan
9 //=============================================================================
12 #ifndef TAO_OBJECT_ARGUMENT_T_H
13 #define TAO_OBJECT_ARGUMENT_T_H
15 #include /**/ "ace/pre.h"
17 #include "tao/Argument.h"
19 #if !defined (ACE_LACKS_PRAGMA_ONCE)
21 #endif /* ACE_LACKS_PRAGMA_ONCE */
23 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
28 * @class In_Object_Argument_T
30 * @brief Template class for IN object argument.
33 template<typename S_ptr
,
34 template <typename
> class Insert_Policy
>
35 class In_Object_Argument_T
: public InArgument
38 In_Object_Argument_T (S_ptr x
);
40 virtual CORBA::Boolean
marshal (TAO_OutputCDR
&cdr
);
41 #if TAO_HAS_INTERCEPTORS == 1
42 virtual void interceptor_value (CORBA::Any
*any
) const;
43 #endif /* TAO_HAS_INTERCEPTORS == 1 */
50 template<typename S_ptr
>
51 struct In_Object_Argument_Cloner_T
53 static void duplicate(S_ptr objref
);
54 static void release(S_ptr objref
);
58 * @class In_Object_Clonable_Argument_T
60 * @brief Template class for IN object argument.
63 template<typename S_ptr
,
64 template <typename
> class Insert_Policy
>
65 class In_Object_Clonable_Argument_T
:
66 public In_Object_Argument_T
<S_ptr
, Insert_Policy
>
69 In_Object_Clonable_Argument_T (S_ptr x
);
70 virtual ~In_Object_Clonable_Argument_T ();
72 virtual Argument
* clone ();
79 * @class Inout_Object_Argument_T
81 * @brief Template class for INOUT object argument.
84 template<typename S_ptr
,
86 template <typename
> class Insert_Policy
>
87 class Inout_Object_Argument_T
: public InoutArgument
90 Inout_Object_Argument_T (S_ptr
& x
);
92 virtual CORBA::Boolean
marshal (TAO_OutputCDR
&cdr
);
93 virtual CORBA::Boolean
demarshal (TAO_InputCDR
&cdr
);
94 #if TAO_HAS_INTERCEPTORS == 1
95 virtual void interceptor_value (CORBA::Any
*any
) const;
96 #endif /* TAO_HAS_INTERCEPTORS == 1 */
104 * @class Out_Object_Argument_T
106 * @brief Template class for OUT object argument.
109 template<typename S_ptr
,
111 template <typename
> class Insert_Policy
>
112 class Out_Object_Argument_T
: public OutArgument
115 Out_Object_Argument_T (S_out
& x
);
117 virtual CORBA::Boolean
demarshal (TAO_InputCDR
&cdr
);
118 #if TAO_HAS_INTERCEPTORS == 1
119 virtual void interceptor_value (CORBA::Any
*any
) const;
120 #endif /* TAO_HAS_INTERCEPTORS == 1 */
128 * @class Ret_Object_Argument_T
130 * @brief Template class for return stub value of object argument.
133 template<typename S_ptr
,
135 template <typename
> class Insert_Policy
>
136 class Ret_Object_Argument_T
: public RetArgument
139 Ret_Object_Argument_T ();
141 virtual CORBA::Boolean
demarshal (TAO_InputCDR
&);
142 #if TAO_HAS_INTERCEPTORS == 1
143 virtual void interceptor_value (CORBA::Any
*any
) const;
144 #endif /* TAO_HAS_INTERCEPTORS == 1 */
155 * @struct Object_Arg_Traits_T
157 * @brief Template class for stub argument traits of objects.
159 template<typename T_ptr
,
163 template <typename
> class Insert_Policy
>
164 struct Object_Arg_Traits_T
166 typedef T_ptr ret_type
;
167 typedef T_ptr in_type
;
168 typedef T_ptr
& inout_type
;
169 typedef T_out out_type
;
171 typedef In_Object_Argument_T
<T_ptr
,
172 Insert_Policy
> in_arg_val
;
173 typedef In_Object_Clonable_Argument_T
<T_ptr
,
174 Insert_Policy
> in_clonable_arg_val
;
175 typedef Inout_Object_Argument_T
<T_ptr
,
177 Insert_Policy
> inout_arg_val
;
178 typedef Out_Object_Argument_T
<T_ptr
,
180 Insert_Policy
> out_arg_val
;
181 typedef Ret_Object_Argument_T
<T_ptr
,
183 Insert_Policy
> ret_val
;
187 TAO_END_VERSIONED_NAMESPACE_DECL
189 #if defined (__ACE_INLINE__)
190 #include "tao/Object_Argument_T.inl"
191 #endif /* __ACE_INLINE__ */
193 #include "tao/Object_Argument_T.cpp"
195 #include /**/ "ace/post.h"
197 #endif /* TAO_OBJECT_ARGUMENT_T_H */