00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef TAO_VAR_ARRAY_ARGUMENT_T_H
00014 #define TAO_VAR_ARRAY_ARGUMENT_T_H
00015
00016 #include "ace/pre.h"
00017
00018 #include "tao/Argument.h"
00019
00020 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00021 # pragma once
00022 #endif
00023
00024 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00025
00026 namespace TAO
00027 {
00028
00029
00030
00031
00032
00033
00034 template<typename S_forany,
00035 class Insert_Policy>
00036 class In_Var_Array_Argument_T : public InArgument
00037 {
00038 public:
00039 In_Var_Array_Argument_T (const typename S_forany::_slice_type * x);
00040
00041 virtual CORBA::Boolean marshal (TAO_OutputCDR &cdr);
00042 #if TAO_HAS_INTERCEPTORS == 1
00043 virtual void interceptor_value (CORBA::Any *any) const;
00044 #endif
00045 typename S_forany::_slice_type const * arg (void) const;
00046
00047 private:
00048 S_forany x_;
00049 };
00050
00051
00052
00053
00054
00055
00056
00057 template<typename S_forany,
00058 class Insert_Policy>
00059 class Inout_Var_Array_Argument_T : public InoutArgument
00060 {
00061 public:
00062 Inout_Var_Array_Argument_T (typename S_forany::_slice_type *&x);
00063
00064 virtual CORBA::Boolean marshal (TAO_OutputCDR &cdr);
00065 virtual CORBA::Boolean demarshal (TAO_InputCDR &);
00066 #if TAO_HAS_INTERCEPTORS == 1
00067 virtual void interceptor_value (CORBA::Any *any) const;
00068 #endif
00069 typename S_forany::_slice_type * arg (void);
00070
00071 private:
00072 S_forany x_;
00073 };
00074
00075
00076
00077
00078
00079
00080
00081 template<typename S_out,
00082 typename S_forany,
00083 class Insert_Policy>
00084 class Out_Var_Array_Argument_T : public OutArgument
00085 {
00086 public:
00087 Out_Var_Array_Argument_T (S_out x);
00088
00089 virtual CORBA::Boolean demarshal (TAO_InputCDR &);
00090 #if TAO_HAS_INTERCEPTORS == 1
00091 virtual void interceptor_value (CORBA::Any *any) const;
00092 #endif
00093 typename S_forany::_slice_type *& arg (void);
00094
00095 private:
00096 typename S_forany::_slice_type *& x_;
00097 };
00098
00099
00100
00101
00102
00103
00104
00105 template<typename S_var,
00106 typename S_forany,
00107 class Insert_Policy>
00108 class Ret_Var_Array_Argument_T : public RetArgument
00109 {
00110 public:
00111 Ret_Var_Array_Argument_T (void);
00112
00113 virtual CORBA::Boolean demarshal (TAO_InputCDR &);
00114 #if TAO_HAS_INTERCEPTORS == 1
00115 virtual void interceptor_value (CORBA::Any *any) const;
00116 #endif
00117 typename S_forany::_slice_type *& arg (void);
00118
00119 typename S_forany::_slice_type * excp (void);
00120 typename S_forany::_slice_type * retn (void);
00121
00122 private:
00123 S_var x_;
00124 };
00125
00126
00127
00128
00129
00130
00131
00132 template<typename T_out,
00133 typename T_forany,
00134 class Insert_Policy>
00135 struct Var_Array_Arg_Traits_T
00136 {
00137 typedef typename T_forany::_slice_type * ret_type;
00138 typedef const typename T_forany::_array_type in_type;
00139 typedef typename T_forany::_array_type inout_type;
00140 typedef T_out out_type;
00141
00142 typedef In_Var_Array_Argument_T<T_forany,
00143 Insert_Policy> in_arg_val;
00144 typedef Inout_Var_Array_Argument_T<T_forany,
00145 Insert_Policy> inout_arg_val;
00146 typedef Out_Var_Array_Argument_T<T_out,
00147 T_forany,
00148 Insert_Policy> out_arg_val;
00149 typedef Ret_Var_Array_Argument_T<typename T_out::_var_type,
00150 T_forany,
00151 Insert_Policy> ret_val;
00152 };
00153 }
00154
00155 TAO_END_VERSIONED_NAMESPACE_DECL
00156
00157 #if defined (__ACE_INLINE__)
00158 #include "tao/Var_Array_Argument_T.inl"
00159 #endif
00160
00161 #if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
00162 #include "tao/Var_Array_Argument_T.cpp"
00163 #endif
00164
00165 #if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
00166 #pragma implementation ("Var_Array_Argument_T.cpp")
00167 #endif
00168
00169 #include "ace/post.h"
00170
00171 #endif