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