Special_Basic_SArgument_T.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 
00003 //=============================================================================
00004 /**
00005  *  @file    Special_Basic_SArgument_T.h
00006  *
00007  *  $Id: Special_Basic_SArgument_T.h 73268 2006-06-27 06:23:42Z jwillemsen $
00008  *
00009  *  @authors Jeff Parsons, Carlos O'Ryan and Ossama Othman
00010  */
00011 //=============================================================================
00012 
00013 
00014 #ifndef TAO_SPECIAL_BASIC_SARGUMENT_T_H
00015 #define TAO_SPECIAL_BASIC_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_Special_Basic_SArgument_T
00032    *
00033    * @brief Template class for IN skeleton argument of (w)char/boolean/octet.
00034    *
00035    */
00036   template<typename S,
00037            typename to_S,
00038            typename from_S,
00039            class Insert_Policy>
00040   class In_Special_Basic_SArgument_T : public InArgument
00041   {
00042   public:
00043     In_Special_Basic_SArgument_T (void);
00044 
00045     virtual CORBA::Boolean demarshal (TAO_InputCDR &);
00046 #if TAO_HAS_INTERCEPTORS == 1
00047     virtual void interceptor_value (CORBA::Any *any) const;
00048 #endif /* TAO_HAS_INTERCEPTORS == 1 */
00049     S const & arg (void) const;
00050 
00051   private:
00052     S x_;
00053   };
00054 
00055   /**
00056    * @class Inout_Special_Basic_SArgument_T
00057    *
00058    * @brief Template class for INOUT (w)char/boolean/octet skeleton argument.
00059    *
00060    */
00061   template<typename S,
00062            typename to_S,
00063            typename from_S,
00064            class Insert_Policy>
00065   class Inout_Special_Basic_SArgument_T : public InoutArgument
00066   {
00067   public:
00068     Inout_Special_Basic_SArgument_T (void);
00069 
00070     virtual CORBA::Boolean marshal (TAO_OutputCDR &cdr);
00071     virtual CORBA::Boolean demarshal (TAO_InputCDR &);
00072 #if TAO_HAS_INTERCEPTORS == 1
00073     virtual void interceptor_value (CORBA::Any *any) const;
00074 #endif /* TAO_HAS_INTERCEPTORS == 1 */
00075     S & arg (void);
00076 
00077   private:
00078     S x_;
00079   };
00080 
00081   /**
00082    * @class Out_Special_Basic_SArgument_T
00083    *
00084    * @brief Template class for OUT skeleton argument of (w)char/boolean/octet.
00085    *
00086    */
00087   template<typename S,
00088            typename to_S,
00089            typename from_S,
00090            class Insert_Policy>
00091   class Out_Special_Basic_SArgument_T : public OutArgument
00092   {
00093   public:
00094     Out_Special_Basic_SArgument_T (void);
00095 
00096     virtual CORBA::Boolean marshal (TAO_OutputCDR &cdr);
00097 #if TAO_HAS_INTERCEPTORS == 1
00098     virtual void interceptor_value (CORBA::Any *any) const;
00099 #endif /* TAO_HAS_INTERCEPTORS == 1 */
00100     S & arg (void);
00101 
00102   private:
00103     S x_;
00104   };
00105 
00106   /**
00107    * @class Ret_Basic_SArgument_T
00108    *
00109    * @brief Template class for return skeleton value of (w)char/boolean/octet.
00110    *
00111    */
00112   template<typename S,
00113            typename to_S,
00114            typename from_S,
00115            class Insert_Policy>
00116   class Ret_Special_Basic_SArgument_T : public RetArgument
00117   {
00118   public:
00119     Ret_Special_Basic_SArgument_T (void);
00120 
00121     virtual CORBA::Boolean marshal (TAO_OutputCDR &cdr);
00122 #if TAO_HAS_INTERCEPTORS == 1
00123     virtual void interceptor_value (CORBA::Any *any) const;
00124 #endif /* TAO_HAS_INTERCEPTORS == 1 */
00125     S & arg (void);
00126 
00127   private:
00128     S x_;
00129   };
00130 
00131   /**
00132    * @struct Special_Basic_SArg_Traits_T
00133    *
00134    * @brief Template class for skeleton argument traits
00135    *  of (w)char/boolean/octet.
00136    *
00137    */
00138   template<typename T, typename to_T, typename from_T, class Insert_Policy>
00139   struct Special_Basic_SArg_Traits_T
00140   {
00141     typedef T                                               ret_type;
00142     typedef T                                               in_type;
00143     typedef T &                                             inout_type;
00144     typedef T &                                             out_type;
00145 
00146     typedef In_Special_Basic_SArgument_T<T,to_T,from_T,Insert_Policy>     in_arg_val;
00147     typedef Inout_Special_Basic_SArgument_T<T,to_T,from_T,Insert_Policy>  inout_arg_val;
00148     typedef Out_Special_Basic_SArgument_T<T,to_T,from_T,Insert_Policy>    out_arg_val;
00149     typedef Ret_Special_Basic_SArgument_T<T,to_T,from_T,Insert_Policy>    ret_val;
00150 
00151     // Typedefs corresponding to return value of arg() method in both
00152     // the client and server side argument class templates.
00153     typedef T const &                                       in_arg_type;
00154     typedef inout_type                                      inout_arg_type;
00155     typedef out_type                                        out_arg_type;
00156     typedef out_type                                        ret_arg_type;
00157 
00158   };
00159 }
00160 
00161 TAO_END_VERSIONED_NAMESPACE_DECL
00162 
00163 #if defined (__ACE_INLINE__)
00164 #include "tao/PortableServer/Special_Basic_SArgument_T.inl"
00165 #endif /* __ACE_INLINE__ */
00166 
00167 #if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
00168 #include "tao/PortableServer/Special_Basic_SArgument_T.cpp"
00169 #endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
00170 
00171 #if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
00172 #pragma implementation ("Special_Basic_SArgument_T.cpp")
00173 #endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
00174 
00175 #include /**/ "ace/post.h"
00176 
00177 #endif /* TAO_SPECIAL_BASIC_SARGUMENT_T_H */

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