00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
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 
00024 
00025 
00026 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00027 
00028 namespace TAO
00029 {
00030 
00031 
00032 
00033 
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 
00049     S const & arg (void) const;
00050 
00051   private:
00052     S x_;
00053   };
00054 
00055 
00056 
00057 
00058 
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 
00075     S & arg (void);
00076 
00077   private:
00078     S x_;
00079   };
00080 
00081 
00082 
00083 
00084 
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 
00100     S & arg (void);
00101 
00102   private:
00103     S x_;
00104   };
00105 
00106 
00107 
00108 
00109 
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 
00125     S & arg (void);
00126 
00127   private:
00128     S x_;
00129   };
00130 
00131 
00132 
00133 
00134 
00135 
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     
00152     
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 
00166 
00167 #if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
00168 #include "tao/PortableServer/Special_Basic_SArgument_T.cpp"
00169 #endif 
00170 
00171 #if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
00172 #pragma implementation ("Special_Basic_SArgument_T.cpp")
00173 #endif 
00174 
00175 #include  "ace/post.h"
00176 
00177 #endif