00001 // -*- C++ -*- 00002 00003 //============================================================================= 00004 /** 00005 * @file Objref_TypeCode_Static.h 00006 * 00007 * $Id: Objref_TypeCode_Static.h 76551 2007-01-24 13:42:44Z johnnyw $ 00008 * 00009 * Header file for static 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_STATIC_H 00023 #define TAO_OBJREF_TYPECODE_STATIC_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 #include "tao/AnyTypeCode/Null_RefCount_Policy.h" 00035 00036 00037 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00038 00039 namespace TAO 00040 { 00041 namespace TypeCode 00042 { 00043 template <typename StringType, class RefCountPolicy> class Objref; 00044 00045 /** 00046 * @class Objref 00047 * 00048 * @brief @c CORBA::TypeCode implementation for an OMG IDL 00049 * @c object and object-like types. 00050 * 00051 * This class implements a @c CORBA::TypeCode for an OMG IDL 00052 * @c object (interface) and object-like types (abstract 00053 * interface, component, home, local interface and native). 00054 */ 00055 template<> 00056 class TAO_AnyTypeCode_Export Objref<char const *, TAO::Null_RefCount_Policy> 00057 : public CORBA::TypeCode, 00058 private TAO::Null_RefCount_Policy 00059 { 00060 public: 00061 00062 /// Constructor. 00063 Objref (CORBA::TCKind kind, 00064 char const * id, 00065 char const * name); 00066 00067 /** 00068 * @name TAO-specific @c CORBA::TypeCode Methods 00069 * 00070 * Methods required by TAO's implementation of the 00071 * @c CORBA::TypeCode class. 00072 * 00073 * @see @c CORBA::TypeCode 00074 */ 00075 //@{ 00076 virtual bool tao_marshal (TAO_OutputCDR & cdr, 00077 CORBA::ULong offset) const; 00078 virtual void tao_duplicate (void); 00079 virtual void tao_release (void); 00080 //@} 00081 00082 protected: 00083 00084 /** 00085 * @name @c TAO CORBA::TypeCode Template Methods 00086 * 00087 * @c tk_abstract_interface, @c tk_component, @c 00088 * tk_local_interface, @c tk_native and @c tk_objref 00089 * @c CORBA::TypeCode -specific template methods. 00090 * 00091 * @see @c CORBA::TypeCode 00092 */ 00093 //@{ 00094 virtual CORBA::Boolean equal_i (CORBA::TypeCode_ptr tc) const; 00095 virtual CORBA::Boolean equivalent_i (CORBA::TypeCode_ptr tc) const; 00096 virtual CORBA::TypeCode_ptr get_compact_typecode_i (void) const; 00097 virtual char const * id_i (void) const; 00098 virtual char const * name_i (void) const; 00099 00100 protected: 00101 00102 /// Base attributes (@c id and @c name). 00103 Base_Attributes<char const *> attributes_; 00104 00105 }; 00106 00107 } // End namespace TypeCode 00108 } // End namespace TAO 00109 00110 TAO_END_VERSIONED_NAMESPACE_DECL 00111 00112 #ifdef __ACE_INLINE__ 00113 # include "tao/AnyTypeCode/Objref_TypeCode_Static.inl" 00114 #endif /* __ACE_INLINE__ */ 00115 00116 #include /**/ "ace/post.h" 00117 00118 #endif /* TAO_OBJREF_TYPECODE_STATIC_H */