Fixed_Array_Argument_T.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 
00003 //=============================================================================
00004 /**
00005  *  @file    Fixed_Array_Argument_T.h
00006  *
00007  *  Fixed_Array_Argument_T.h,v 1.11 2006/06/27 06:22:13 jwillemsen Exp
00008  *
00009  *  @authors Jeff Parsons and Carlos O'Ryan
00010  */
00011 //=============================================================================
00012 
00013 
00014 #ifndef TAO_FIXED_ARRAY_ARGUMENT_T_H
00015 #define TAO_FIXED_ARRAY_ARGUMENT_T_H
00016 
00017 #include /**/ "ace/pre.h"
00018 #include "tao/Argument.h"
00019 
00020 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00021 # pragma once
00022 #endif /* ACE_LACKS_PRAGMA_ONCE */
00023 
00024 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00025 
00026 namespace TAO
00027 {
00028   /**
00029    * @class In_Fixed_Array_Argument_T
00030    *
00031    * @brief IN stub argument of fixed size element array.
00032    *
00033    */
00034   template<typename S_forany,
00035            class Insert_Policy>
00036   class In_Fixed_Array_Argument_T : public InArgument
00037   {
00038   public:
00039     In_Fixed_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 /* TAO_HAS_INTERCEPTORS == 1 */
00045     typename S_forany::_slice_type const * arg (void) const;
00046 
00047   private:
00048     S_forany x_;
00049   };
00050 
00051   /**
00052    * @class Inout_Fixed_Array_Argument_T
00053    *
00054    * @brief INOUT stub argument of fixed size element array.
00055    *
00056    */
00057   template<typename S_forany,
00058            class Insert_Policy>
00059   class Inout_Fixed_Array_Argument_T : public InoutArgument
00060   {
00061   public:
00062     Inout_Fixed_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 /* TAO_HAS_INTERCEPTORS == 1 */
00069     typename S_forany::_slice_type * arg (void);
00070 
00071   private:
00072     S_forany x_;
00073   };
00074 
00075   /**
00076    * @class Out_Fixed_Array_Argument_T
00077    *
00078    * @brief OUT stub argument of fixed size element array.
00079    *
00080    */
00081   template<typename S_forany,
00082            class Insert_Policy>
00083   class Out_Fixed_Array_Argument_T : public OutArgument
00084   {
00085   public:
00086     Out_Fixed_Array_Argument_T (typename S_forany::_slice_type *& x);
00087 
00088     virtual CORBA::Boolean demarshal (TAO_InputCDR &);
00089 #if TAO_HAS_INTERCEPTORS == 1
00090     virtual void interceptor_value (CORBA::Any *any) const;
00091 #endif /* TAO_HAS_INTERCEPTORS == 1 */
00092     typename S_forany::_slice_type *& arg (void);
00093 
00094   private:
00095     S_forany x_;
00096   };
00097 
00098   /**
00099    * @class Ret_Fixed_Array_Argument_T
00100    *
00101    * @brief Return stub value of fixed size element array.
00102    *
00103    */
00104   template<typename S_var,
00105            typename S_forany,
00106            class Insert_Policy>
00107   class Ret_Fixed_Array_Argument_T : public RetArgument
00108   {
00109   public:
00110     Ret_Fixed_Array_Argument_T (void);
00111 
00112     virtual CORBA::Boolean demarshal (TAO_InputCDR &);
00113 #if TAO_HAS_INTERCEPTORS == 1
00114     virtual void interceptor_value (CORBA::Any *any) const;
00115 #endif /* TAO_HAS_INTERCEPTORS == 1 */
00116     typename S_forany::_slice_type *& arg (void);
00117 
00118     typename S_forany::_slice_type * excp (void);
00119     typename S_forany::_slice_type * retn (void);
00120 
00121   private:
00122     S_var x_;
00123   };
00124 
00125   /**
00126    * @struct Fixed_Array_Arg_Traits_T
00127    *
00128    * @brief Argument traits of fixed size element array.
00129    *
00130    */
00131   template<typename T_var,
00132            typename T_forany,
00133            class Insert_Policy>
00134   struct Fixed_Array_Arg_Traits_T
00135   {
00136     typedef typename T_forany::_slice_type *            ret_type;
00137     typedef typename T_forany::_array_type const        in_type;
00138     typedef typename T_forany::_array_type              inout_type;
00139     typedef typename T_forany::_array_type              out_type;
00140 
00141     typedef In_Fixed_Array_Argument_T<T_forany,
00142                                       Insert_Policy>         in_arg_val;
00143     typedef Inout_Fixed_Array_Argument_T<T_forany,
00144                                          Insert_Policy>      inout_arg_val;
00145     typedef Out_Fixed_Array_Argument_T<T_forany,
00146                                        Insert_Policy>        out_arg_val;
00147     typedef Ret_Fixed_Array_Argument_T<T_var,
00148                                        T_forany,
00149                                        Insert_Policy>        ret_val;
00150   };
00151 }
00152 
00153 TAO_END_VERSIONED_NAMESPACE_DECL
00154 
00155 #if defined (__ACE_INLINE__)
00156 #include "tao/Fixed_Array_Argument_T.inl"
00157 #endif /* __ACE_INLINE__ */
00158 
00159 #if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
00160 #include "tao/Fixed_Array_Argument_T.cpp"
00161 #endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
00162 
00163 #if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
00164 #pragma implementation ("Fixed_Array_Argument_T.cpp")
00165 #endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
00166 
00167 #include /**/ "ace/post.h"
00168 
00169 #endif /* TAO_FIXED_ARRAY_ARGUMENT_T_H */

Generated on Thu Nov 9 11:54:11 2006 for TAO by doxygen 1.3.6