00001 // This may look like C, but it's really -*- C++ -*- 00002 00003 //============================================================================= 00004 /** 00005 * @file Any_Impl_T.h 00006 * 00007 * $Id: Any_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_IMPL_T_H 00015 #define TAO_ANY_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 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00026 00027 namespace CORBA 00028 { 00029 class Any; 00030 } 00031 00032 namespace TAO 00033 { 00034 /** 00035 * @class Any_Impl_T 00036 * 00037 * @brief Template Any class for pointer types. 00038 * 00039 * Used for interfaces and typecodes 00040 */ 00041 template<typename T> 00042 class Any_Impl_T : public Any_Impl 00043 { 00044 public: 00045 Any_Impl_T (_tao_destructor destructor, 00046 CORBA::TypeCode_ptr, 00047 T * const); 00048 virtual ~Any_Impl_T (void); 00049 00050 static void insert (CORBA::Any &, 00051 _tao_destructor destructor, 00052 CORBA::TypeCode_ptr, 00053 T * const); 00054 static CORBA::Boolean extract (const CORBA::Any &, 00055 _tao_destructor, 00056 CORBA::TypeCode_ptr, 00057 T *&); 00058 00059 virtual CORBA::Boolean to_object (CORBA::Object_ptr &) const; 00060 virtual CORBA::Boolean to_value (CORBA::ValueBase *&) const; 00061 virtual CORBA::Boolean to_abstract_base (CORBA::AbstractBase_ptr &) const; 00062 00063 virtual CORBA::Boolean marshal_value (TAO_OutputCDR &); 00064 CORBA::Boolean demarshal_value (TAO_InputCDR &); 00065 virtual void _tao_decode (TAO_InputCDR & ); 00066 virtual const void *value (void) const; 00067 virtual void free_value (void); 00068 00069 private: 00070 T * value_; 00071 }; 00072 } 00073 00074 TAO_END_VERSIONED_NAMESPACE_DECL 00075 00076 #if defined (__ACE_INLINE__) 00077 # include "tao/AnyTypeCode/Any_Impl_T.inl" 00078 00079 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00080 # pragma once 00081 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00082 00083 #endif /* __ACE_INLINE__ */ 00084 00085 #if defined (ACE_TEMPLATES_REQUIRE_SOURCE) 00086 #include "tao/AnyTypeCode/Any_Impl_T.cpp" 00087 #endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ 00088 00089 #if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) 00090 #pragma implementation ("Any_Impl_T.cpp") 00091 #endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ 00092 00093 #include /**/ "ace/post.h" 00094 00095 #endif /* TAO_ANY_IMPL_T_H */