UB_String_Argument_T.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 
00003 //=============================================================================
00004 /**
00005  *  @file    UB_String_Argument_T.h
00006  *
00007  *  $Id: UB_String_Argument_T.h 74007 2006-08-14 12:50:21Z elliott_c $
00008  *
00009  *  @author Jeff Parsons
00010  *  @author Carlos O'Ryan
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 /* ACE_LACKS_PRAGMA_ONCE */
00024 
00025 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00026 
00027 namespace TAO
00028 {
00029   /**
00030    * @class In_UB_String_Argument_T
00031    *
00032    * @brief Template class for IN unbounded (w)string argument.
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 /* TAO_HAS_INTERCEPTORS == 1 */
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    * @class In_UB_String_Clonable_Argument_T
00054    *
00055    * @brief Template class for IN unbounded (w)string argument.
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    * @class Inout_UB_String_Argument_T
00075    *
00076    * @brief Template class for INOUT unbounded (w)string argument.
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 /* TAO_HAS_INTERCEPTORS == 1 */
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    * @class Out_UB_String_Argument_T
00099    *
00100    * @brief Template class for OUT unbounded (w)string argument.
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 /* TAO_HAS_INTERCEPTORS == 1 */
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    * @class Ret_UB_String_Argument_T
00122    *
00123    * @brief Template class for return stub value of ub (w)string argument.
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 /* TAO_HAS_INTERCEPTORS == 1 */
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    * @struct UB_String_Arg_Traits_T
00147    *
00148    * @brief Template class for argument traits of unbounded (w)strings.
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 /* __ACE_INLINE__ */
00174 
00175 #if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
00176 #include "tao/UB_String_Argument_T.cpp"
00177 #endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
00178 
00179 #if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
00180 #pragma implementation ("UB_String_Argument_T.cpp")
00181 #endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
00182 
00183 #include /**/ "ace/post.h"
00184 
00185 #endif /* TAO_UB_STRING_ARGUMENT_T_H */

Generated on Tue Feb 2 17:37:53 2010 for TAO by  doxygen 1.4.7