00001 // -*- C++ -*- 00002 00003 //============================================================================= 00004 /** 00005 * @file Objref_TypeCode.h 00006 * 00007 * $Id: Objref_TypeCode.h 76551 2007-01-24 13:42:44Z johnnyw $ 00008 * 00009 * Header file for 00010 * @c tk_abstract_interface, 00011 * @c tk_component, 00012 * @c tk_home, 00013 * @c tk_local_interface, 00014 * @c tk_native and 00015 * @c tk_objref 00016 * @c CORBA::TypeCodes. 00017 * 00018 * @author Ossama Othman <ossama@dre.vanderbilt.edu> 00019 */ 00020 //============================================================================= 00021 00022 #ifndef TAO_OBJREF_TYPECODE_H 00023 #define TAO_OBJREF_TYPECODE_H 00024 00025 #include /**/ "ace/pre.h" 00026 00027 #include "tao/AnyTypeCode/TypeCode.h" 00028 00029 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00030 # pragma once 00031 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00032 00033 #include "tao/AnyTypeCode/TypeCode_Base_Attributes.h" 00034 00035 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00036 00037 namespace TAO 00038 { 00039 namespace TypeCode 00040 { 00041 /** 00042 * @class Objref_Base 00043 * 00044 * @brief @c CORBA::TypeCode implementation for an OMG IDL 00045 * @c object and object-like types. 00046 * 00047 * This class implements a @c CORBA::TypeCode for an OMG IDL 00048 * @c object (interface) and object-like types (abstract 00049 * interface, component, home, local interface and native). 00050 */ 00051 template <typename StringType, class RefCountPolicy> 00052 class Objref 00053 : public CORBA::TypeCode, 00054 private RefCountPolicy 00055 { 00056 public: 00057 00058 /// Constructor. 00059 Objref (CORBA::TCKind kind, 00060 char const * id, 00061 char const * name); 00062 00063 /** 00064 * @name TAO-specific @c CORBA::TypeCode Methods 00065 * 00066 * Methods required by TAO's implementation of the 00067 * @c CORBA::TypeCode class. 00068 * 00069 * @see @c CORBA::TypeCode 00070 */ 00071 //@{ 00072 virtual bool tao_marshal (TAO_OutputCDR & cdr, 00073 CORBA::ULong offset) const; 00074 virtual void tao_duplicate (void); 00075 virtual void tao_release (void); 00076 //@} 00077 00078 protected: 00079 00080 /** 00081 * @name @c TAO CORBA::TypeCode Template Methods 00082 * 00083 * @c tk_abstract_interface, @c tk_component, @c 00084 * tk_local_interface, @c tk_native and @c tk_objref 00085 * @c CORBA::TypeCode -specific template methods. 00086 * 00087 * @see @c CORBA::TypeCode 00088 */ 00089 //@{ 00090 virtual CORBA::Boolean equal_i (CORBA::TypeCode_ptr tc 00091 ) const; 00092 virtual CORBA::Boolean equivalent_i (CORBA::TypeCode_ptr tc 00093 ) const; 00094 virtual CORBA::TypeCode_ptr get_compact_typecode_i ( 00095 void) const; 00096 virtual char const * id_i (void) const; 00097 virtual char const * name_i (void) const; 00098 00099 protected: 00100 00101 /// Base attributes (@c id and @c name). 00102 Base_Attributes<StringType> attributes_; 00103 00104 }; 00105 00106 } // End namespace TypeCode 00107 } // End namespace TAO 00108 00109 TAO_END_VERSIONED_NAMESPACE_DECL 00110 00111 #ifdef __ACE_INLINE__ 00112 # include "tao/AnyTypeCode/Objref_TypeCode.inl" 00113 #endif /* __ACE_INLINE__ */ 00114 00115 #ifdef ACE_TEMPLATES_REQUIRE_SOURCE 00116 # include "tao/AnyTypeCode/Objref_TypeCode.cpp" 00117 #endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ 00118 00119 #ifdef ACE_TEMPLATES_REQUIRE_PRAGMA 00120 # pragma implementation ("Objref_TypeCode.cpp") 00121 #endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ 00122 00123 #include /**/ "ace/post.h" 00124 00125 #endif /* TAO_OBJREF_TYPECODE_H */