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
140 Ret_Object_Argument_T ();
142 virtual CORBA::Boolean
demarshal (TAO_InputCDR
&);
143 #if TAO_HAS_INTERCEPTORS == 1
144 virtual void interceptor_value (CORBA::Any
*any
) const;
145 #endif /* TAO_HAS_INTERCEPTORS == 1 */
156 * @struct Object_Arg_Traits_T
158 * @brief Template class for stub argument traits of objects.
160 template<typename T_ptr
,
164 template <typename
> class Insert_Policy
>
165 struct Object_Arg_Traits_T
167 typedef T_ptr ret_type
;
168 typedef T_ptr in_type
;
169 typedef T_ptr
& inout_type
;
170 typedef T_out out_type
;
172 typedef In_Object_Argument_T
<T_ptr
,
173 Insert_Policy
> in_arg_val
;
174 typedef In_Object_Clonable_Argument_T
<T_ptr
,
175 Insert_Policy
> in_clonable_arg_val
;
176 typedef Inout_Object_Argument_T
<T_ptr
,
178 Insert_Policy
> inout_arg_val
;
179 typedef Out_Object_Argument_T
<T_ptr
,
181 Insert_Policy
> out_arg_val
;
182 typedef Ret_Object_Argument_T
<T_ptr
,
184 Insert_Policy
> ret_val
;
188 TAO_END_VERSIONED_NAMESPACE_DECL
190 #if defined (__ACE_INLINE__)
191 #include "tao/Object_Argument_T.inl"
192 #endif /* __ACE_INLINE__ */
194 #if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
195 #include "tao/Object_Argument_T.cpp"
196 #endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
198 #if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
199 #pragma implementation ("Object_Argument_T.cpp")
200 #endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
202 #include /**/ "ace/post.h"
204 #endif /* TAO_OBJECT_ARGUMENT_T_H */