Any_Dual_Impl_T.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 
00003 //=============================================================================
00004 /**
00005  *  @file    Any_Dual_Impl_T.h
00006  *
00007  *  $Id: Any_Dual_Impl_T.h 76551 2007-01-24 13:42:44Z johnnyw $
00008  *
00009  *  @authors  Carlos O'Ryan and Jeff Parsons
00010  */
00011 //=============================================================================
00012 
00013 
00014 #ifndef TAO_ANY_DUAL_IMPL_T_H
00015 #define TAO_ANY_DUAL_IMPL_T_H
00016 
00017 #include /**/ "ace/pre.h"
00018 
00019 #include "tao/AnyTypeCode/Any_Impl.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 Any_Dual_Impl_T
00032    *
00033    * @brief Template Any class for IDL types with 2 modes of insertion
00034    *
00035    * Used for the IDL types that have copying and non-copying insertion,
00036    * but which are not (de)marshaled as pointers - struct, union, sequence,
00037    * and exception.
00038    */
00039   template<typename T>
00040   class Any_Dual_Impl_T : public Any_Impl
00041   {
00042   public:
00043     Any_Dual_Impl_T (_tao_destructor destructor,
00044                      CORBA::TypeCode_ptr,
00045                      T * const);
00046     Any_Dual_Impl_T (_tao_destructor destructor,
00047                      CORBA::TypeCode_ptr,
00048                      const T &);
00049     Any_Dual_Impl_T (CORBA::TypeCode_ptr);
00050     virtual ~Any_Dual_Impl_T (void);
00051 
00052     static void insert (CORBA::Any &,
00053                         _tao_destructor,
00054                         CORBA::TypeCode_ptr,
00055                         T * const);
00056     static void insert_copy (CORBA::Any &,
00057                              _tao_destructor destructor,
00058                              CORBA::TypeCode_ptr,
00059                              const T &);
00060     static CORBA::Boolean extract (const CORBA::Any &,
00061                                    _tao_destructor,
00062                                    CORBA::TypeCode_ptr,
00063                                    const T *&);
00064 
00065     virtual CORBA::Boolean marshal_value (TAO_OutputCDR &);
00066     CORBA::Boolean demarshal_value (TAO_InputCDR &);
00067     virtual void _tao_decode (TAO_InputCDR &);
00068 
00069     virtual const void *value (void) const;
00070     virtual void free_value (void);
00071 
00072   protected:
00073     void value (const T &);
00074 
00075     T * value_;
00076   };
00077 }
00078 
00079 TAO_END_VERSIONED_NAMESPACE_DECL
00080 
00081 #if defined (__ACE_INLINE__)
00082 # include "tao/AnyTypeCode/Any_Dual_Impl_T.inl"
00083 #endif /* __ACE_INLINE__ */
00084 
00085 #if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
00086 #include "tao/AnyTypeCode/Any_Dual_Impl_T.cpp"
00087 #endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
00088 
00089 #if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
00090 #pragma implementation ("Any_Dual_Impl_T.cpp")
00091 #endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
00092 
00093 #include /**/ "ace/post.h"
00094 
00095 #endif /* TAO_ANY_DUAL_IMPL_T_H */
00096 

Generated on Sun Jan 27 13:21:06 2008 for TAO_AnyTypeCode by doxygen 1.3.6