00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef TAO_SPECIAL_BASIC_ARGUMENT_T_H
00015 #define TAO_SPECIAL_BASIC_ARGUMENT_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_Argument_T : public InArgument
00041 {
00042 public:
00043 In_Special_Basic_Argument_T (S const &);
00044
00045 virtual CORBA::Boolean marshal (TAO_OutputCDR &cdr);
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 protected:
00052 S const & 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 In_Special_Basic_Clonable_Argument_T :
00066 public In_Special_Basic_Argument_T<S, to_S, from_S, Insert_Policy>
00067 {
00068 public:
00069 In_Special_Basic_Clonable_Argument_T (S const &);
00070 virtual ~In_Special_Basic_Clonable_Argument_T (void);
00071
00072 virtual Argument* clone (void);
00073
00074 private:
00075 bool is_clone_;
00076 };
00077
00078
00079
00080
00081
00082
00083
00084 template<typename S,
00085 typename to_S,
00086 typename from_S,
00087 class Insert_Policy>
00088 class Inout_Special_Basic_Argument_T : public InoutArgument
00089 {
00090 public:
00091 Inout_Special_Basic_Argument_T (S & x);
00092
00093 virtual CORBA::Boolean marshal (TAO_OutputCDR &cdr);
00094 virtual CORBA::Boolean demarshal (TAO_InputCDR &);
00095 #if TAO_HAS_INTERCEPTORS == 1
00096 virtual void interceptor_value (CORBA::Any *any) const;
00097 #endif
00098 S & arg (void);
00099
00100 private:
00101 S & x_;
00102 };
00103
00104
00105
00106
00107
00108
00109
00110 template<typename S,
00111 typename to_S,
00112 typename from_S,
00113 class Insert_Policy>
00114 class Out_Special_Basic_Argument_T : public OutArgument
00115 {
00116 public:
00117 Out_Special_Basic_Argument_T (S & x);
00118
00119 virtual CORBA::Boolean demarshal (TAO_InputCDR &);
00120 #if TAO_HAS_INTERCEPTORS == 1
00121 virtual void interceptor_value (CORBA::Any *any) const;
00122 #endif
00123 S & arg (void);
00124
00125 private:
00126 S & x_;
00127 };
00128
00129
00130
00131
00132
00133
00134
00135 template<typename S,
00136 typename to_S,
00137 typename from_S,
00138 class Insert_Policy>
00139 class Ret_Special_Basic_Argument_T : public RetArgument
00140 {
00141 public:
00142 Ret_Special_Basic_Argument_T (void);
00143
00144 virtual CORBA::Boolean demarshal (TAO_InputCDR &);
00145 #if TAO_HAS_INTERCEPTORS == 1
00146 virtual void interceptor_value (CORBA::Any *any) const;
00147 #endif
00148 S & arg (void);
00149
00150 S excp (void);
00151 S retn (void);
00152
00153 private:
00154 S x_;
00155 };
00156
00157
00158
00159
00160
00161
00162
00163 struct TAO_Export Special_Basic_Tag {};
00164
00165
00166
00167
00168
00169
00170
00171 template<typename T,
00172 typename to_T,
00173 typename from_T,
00174 class Insert_Policy>
00175 struct Special_Basic_Arg_Traits_T
00176 {
00177 typedef T ret_type;
00178 typedef T in_type;
00179 typedef T & inout_type;
00180 typedef T & out_type;
00181
00182 typedef In_Special_Basic_Argument_T<T,to_T,from_T,Insert_Policy> in_arg_val;
00183 typedef In_Special_Basic_Clonable_Argument_T<T,to_T,from_T,Insert_Policy>
00184 in_clonable_arg_val;
00185 typedef Inout_Special_Basic_Argument_T<T,to_T,from_T,Insert_Policy> inout_arg_val;
00186 typedef Out_Special_Basic_Argument_T<T,to_T,from_T,Insert_Policy> out_arg_val;
00187 typedef Ret_Special_Basic_Argument_T<T,to_T,from_T,Insert_Policy> ret_val;
00188
00189 typedef Special_Basic_Tag idl_tag;
00190 };
00191 }
00192
00193 TAO_END_VERSIONED_NAMESPACE_DECL
00194
00195 #if defined (__ACE_INLINE__)
00196 #include "tao/Special_Basic_Argument_T.inl"
00197 #endif
00198
00199 #if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
00200 #include "tao/Special_Basic_Argument_T.cpp"
00201 #endif
00202
00203 #if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
00204 #pragma implementation ("Special_Basic_Argument_T.cpp")
00205 #endif
00206
00207 #include "ace/post.h"
00208
00209 #endif