Var_Array_Argument_T.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 
00003 //=============================================================================
00004 /**
00005  *  @file    Var_Array_Argument_T.h
00006  *
00007  *  Var_Array_Argument_T.h,v 1.13 2006/06/27 06:22:00 jwillemsen Exp
00008  *
00009  *  @authors Jeff Parsons and Carlos O'Ryan
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 /* ACE_LACKS_PRAGMA_ONCE */
00023 
00024 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00025 
00026 namespace TAO
00027 {
00028   /**
00029    * @class In_Var_Array_Argument_T
00030    *
00031    * @brief IN stub argument of variable size element array.
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 /* 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_Var_Array_Argument_T
00053    *
00054    * @brief INOUT stub argument of variable size element array.
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 /* 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_Var_Array_Argument_T
00077    *
00078    * @brief OUT stub argument of variable size element array.
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 /* TAO_HAS_INTERCEPTORS == 1 */
00093     typename S_forany::_slice_type *& arg (void);
00094 
00095   private:
00096     typename S_forany::_slice_type *& x_;
00097   };
00098 
00099   /**
00100    * @class Ret_Var_Array_Argument_T
00101    *
00102    * @brief Return stub value of variable size element array.
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 /* TAO_HAS_INTERCEPTORS == 1 */
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    * @struct Var_Array_Arg_Traits_T
00128    *
00129    * @brief Argument traits of variable size element array.
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 /* __ACE_INLINE__ */
00160 
00161 #if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
00162 #include "tao/Var_Array_Argument_T.cpp"
00163 #endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
00164 
00165 #if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
00166 #pragma implementation ("Var_Array_Argument_T.cpp")
00167 #endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
00168 
00169 #include /**/ "ace/post.h"
00170 
00171 #endif /* TAO_VAR_ARRAY_ARGUMENT_T_H */

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