00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef TAO_UB_STRING_ARGUMENT_T_H
00015 #define TAO_UB_STRING_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 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00026
00027 namespace TAO
00028 {
00029
00030
00031
00032
00033
00034
00035 template<typename S_var,
00036 class Insert_Policy>
00037 class In_UB_String_Argument_T : public InArgument
00038 {
00039 public:
00040 In_UB_String_Argument_T (const typename S_var::s_traits::char_type * x);
00041
00042 virtual CORBA::Boolean marshal (TAO_OutputCDR &cdr);
00043 #if TAO_HAS_INTERCEPTORS == 1
00044 virtual void interceptor_value (CORBA::Any *any) const;
00045 #endif
00046 const typename S_var::s_traits::char_type * arg (void) const;
00047
00048 protected:
00049 typename S_var::s_traits::char_type const * x_;
00050 };
00051
00052
00053
00054
00055
00056
00057
00058 template<typename S_var,
00059 class Insert_Policy>
00060 class In_UB_String_Clonable_Argument_T :
00061 public In_UB_String_Argument_T<S_var, Insert_Policy>
00062 {
00063 public:
00064 In_UB_String_Clonable_Argument_T (const typename S_var::s_traits::char_type * x);
00065 virtual ~In_UB_String_Clonable_Argument_T (void);
00066
00067 virtual Argument* clone (void);
00068
00069 private:
00070 bool is_clone_;
00071 };
00072
00073
00074
00075
00076
00077
00078
00079 template<typename S_var,
00080 class Insert_Policy>
00081 class Inout_UB_String_Argument_T : public InoutArgument
00082 {
00083 public:
00084 Inout_UB_String_Argument_T (typename S_var::s_traits::char_type *& x);
00085
00086 virtual CORBA::Boolean marshal (TAO_OutputCDR &cdr);
00087 virtual CORBA::Boolean demarshal (TAO_InputCDR &);
00088 #if TAO_HAS_INTERCEPTORS == 1
00089 virtual void interceptor_value (CORBA::Any *any) const;
00090 #endif
00091 typename S_var::s_traits::char_type *& arg (void);
00092
00093 private:
00094 typename S_var::s_traits::char_type *& x_;
00095 };
00096
00097
00098
00099
00100
00101
00102
00103 template<typename S_var,
00104 class Insert_Policy>
00105 class Out_UB_String_Argument_T : public OutArgument
00106 {
00107 public:
00108 Out_UB_String_Argument_T (typename S_var::s_traits::string_out & x);
00109
00110 virtual CORBA::Boolean demarshal (TAO_InputCDR &);
00111 #if TAO_HAS_INTERCEPTORS == 1
00112 virtual void interceptor_value (CORBA::Any *any) const;
00113 #endif
00114 typename S_var::s_traits::char_type *& arg (void);
00115
00116 private:
00117 typename S_var::s_traits::char_type *& x_;
00118 };
00119
00120
00121
00122
00123
00124
00125
00126 template<typename S_var,
00127 class Insert_Policy>
00128 class Ret_UB_String_Argument_T : public RetArgument
00129 {
00130 public:
00131 Ret_UB_String_Argument_T (void);
00132
00133 virtual CORBA::Boolean demarshal (TAO_InputCDR &);
00134 #if TAO_HAS_INTERCEPTORS == 1
00135 virtual void interceptor_value (CORBA::Any *any) const;
00136 #endif
00137 typename S_var::s_traits::char_type *& arg (void);
00138 typename S_var::s_traits::char_type * excp (void);
00139 typename S_var::s_traits::char_type * retn (void);
00140
00141 private:
00142 S_var x_;
00143 };
00144
00145
00146
00147
00148
00149
00150
00151 template<typename T_var,
00152 class Insert_Policy>
00153 struct UB_String_Arg_Traits_T
00154 {
00155 typedef typename T_var::s_traits::char_type * ret_type;
00156 typedef typename T_var::s_traits::char_type const * in_type;
00157 typedef typename T_var::s_traits::char_type *& inout_type;
00158 typedef typename T_var::s_traits::string_out out_type;
00159
00160 typedef In_UB_String_Argument_T<T_var, Insert_Policy> in_arg_val;
00161 typedef In_UB_String_Clonable_Argument_T<T_var,
00162 Insert_Policy> in_clonable_arg_val;
00163 typedef Inout_UB_String_Argument_T<T_var, Insert_Policy> inout_arg_val;
00164 typedef Out_UB_String_Argument_T<T_var, Insert_Policy> out_arg_val;
00165 typedef Ret_UB_String_Argument_T<T_var, Insert_Policy> ret_val;
00166 };
00167 }
00168
00169 TAO_END_VERSIONED_NAMESPACE_DECL
00170
00171 #if defined (__ACE_INLINE__)
00172 #include "tao/UB_String_Argument_T.inl"
00173 #endif
00174
00175 #if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
00176 #include "tao/UB_String_Argument_T.cpp"
00177 #endif
00178
00179 #if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
00180 #pragma implementation ("UB_String_Argument_T.cpp")
00181 #endif
00182
00183 #include "ace/post.h"
00184
00185 #endif