Fixed_Array_SArgument_T.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 
00003 //=============================================================================
00004 /**
00005  *  @file    Fixed_Array_SArgument_T.h
00006  *
00007  *  $Id: Fixed_Array_SArgument_T.h 73302 2006-06-27 14:47:20Z jwillemsen $
00008  *
00009  *  @authors Jeff Parsons, Carlos O'Ryan and Ossama Othman
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 /* ACE_LACKS_PRAGMA_ONCE */
00024 
00025 
00026 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00027 
00028 namespace TAO
00029 {
00030   /**
00031    * @class In_Fixed_Array_SArgument_T
00032    *
00033    * @brief IN skeleton argument of fixed size element array.
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 /* TAO_HAS_INTERCEPTORS == 1 */
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    * @class Inout_Fixed_Array_SArgument_T
00055    *
00056    * @brief INOUT skeleton argument of fixed size element array.
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 /* TAO_HAS_INTERCEPTORS == 1 */
00070     typename S_forany::_slice_type * arg (void);
00071 
00072   private:
00073     mutable typename S_forany::_array_type x_;
00074   };
00075 
00076   /**
00077    * @class Out_Fixed_Array_SArgument_T
00078    *
00079    * @brief OUT skeleton argument of fixed size element array.
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 /* TAO_HAS_INTERCEPTORS == 1 */
00092     typename S_forany::_slice_type * arg (void);
00093 
00094   private:
00095     mutable typename S_forany::_array_type x_;
00096   };
00097 
00098   /**
00099    * @class Ret_Fixed_Array_SArgument_T
00100    *
00101    * @brief Skeleton 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_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 /* TAO_HAS_INTERCEPTORS == 1 */
00116     typename S_forany::_slice_type *& arg (void);
00117 
00118   private:
00119     S_var x_;
00120   };
00121 
00122   /**
00123    * @struct Fixed_Array_Arg_Traits_T
00124    *
00125    * @brief Argument traits of fixed size element array.
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     // Typedefs corresponding to return value of arg() method in both
00149     // the client and server side argument class templates.
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 /* __ACE_INLINE__ */
00162 
00163 #if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
00164 #include "tao/PortableServer/Fixed_Array_SArgument_T.cpp"
00165 #endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
00166 
00167 #if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
00168 #pragma implementation ("Fixed_Array_SArgument_T.cpp")
00169 #endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
00170 
00171 #include /**/ "ace/post.h"
00172 
00173 #endif /* TAO_FIXED_ARRAY_SARGUMENT_T_H */

Generated on Tue Feb 2 17:40:54 2010 for TAO_PortableServer by  doxygen 1.4.7