CORBA::TypeCode
implementation for an OMG IDL object
and object-like types.
More...
#include <Objref_TypeCode.h>
Inheritance diagram for TAO::TypeCode::Objref< StringType, RefCountPolicy >:
@c TAO CORBA::TypeCode Template Methods | |
tk_abstract_interface , tk_component , tk_local_interface , tk_native and tk_objref CORBA::TypeCode -specific template methods.
| |
virtual CORBA::Boolean | equal_i (CORBA::TypeCode_ptr tc) const |
virtual CORBA::Boolean | equivalent_i (CORBA::TypeCode_ptr tc) const |
virtual CORBA::TypeCode_ptr | get_compact_typecode_i (void) const |
virtual char const * | id_i (void) const |
virtual char const * | name_i (void) const |
Base_Attributes< StringType > | attributes_ |
Base attributes (id and name ). | |
Public Member Functions | |
Objref (CORBA::TCKind kind, char const *id, char const *name) | |
Constructor. | |
TAO-specific @c CORBA::TypeCode Methods | |
virtual bool | tao_marshal (TAO_OutputCDR &cdr, CORBA::ULong offset) const |
Marshal this TypeCode into a CDR output stream. | |
virtual void | tao_duplicate (void) |
Increase the reference count on this TypeCode . | |
virtual void | tao_release (void) |
Decrease the reference count on this object. |
CORBA::TypeCode
implementation for an OMG IDL object
and object-like types.
This class implements a CORBA::TypeCode
for an OMG IDL object
(interface) and object-like types (abstract interface, component, home, local interface and native).
Definition at line 52 of file Objref_TypeCode.h.
TAO_BEGIN_VERSIONED_NAMESPACE_DECL ACE_INLINE TAO::TypeCode::Objref< StringType, RefCountPolicy >::Objref | ( | CORBA::TCKind | kind, | |
char const * | id, | |||
char const * | name | |||
) |
Constructor.
Definition at line 9 of file Objref_TypeCode.inl.
00013 : ::CORBA::TypeCode (kind) 00014 , RefCountPolicy () 00015 , attributes_ (id, name) 00016 { 00017 }
CORBA::Boolean TAO::TypeCode::Objref< StringType, RefCountPolicy >::equal_i | ( | CORBA::TypeCode_ptr | tc | ) | const [protected, virtual] |
Implements CORBA::TypeCode.
Definition at line 57 of file Objref_TypeCode.cpp.
00059 { 00060 // Equality has already been established in the 00061 // CORBA::TypeCode base class. 00062 00063 return true; 00064 }
CORBA::Boolean TAO::TypeCode::Objref< StringType, RefCountPolicy >::equivalent_i | ( | CORBA::TypeCode_ptr | tc | ) | const [protected, virtual] |
Implements CORBA::TypeCode.
Definition at line 68 of file Objref_TypeCode.cpp.
00070 { 00071 // Equivalence already verified in the base class 00072 // CORBA::TypeCode::equivalent() method. 00073 00074 return true; 00075 }
CORBA::TypeCode_ptr TAO::TypeCode::Objref< StringType, RefCountPolicy >::get_compact_typecode_i | ( | void | ) | const [protected, virtual] |
Implements CORBA::TypeCode.
Definition at line 80 of file Objref_TypeCode.cpp.
References CORBA::tk_abstract_interface, CORBA::tk_component, CORBA::tk_home, CORBA::tk_local_interface, CORBA::tk_native, and TAO_ORB_Core::typecodefactory_adapter_name().
00081 { 00082 TAO_TypeCodeFactory_Adapter * const adapter = 00083 ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance ( 00084 TAO_ORB_Core::typecodefactory_adapter_name () 00085 ); 00086 00087 if (adapter == 0) 00088 { 00089 throw ::CORBA::INTERNAL (); 00090 } 00091 00092 if (this->kind_ == CORBA::tk_abstract_interface) 00093 { 00094 return adapter->create_abstract_interface_tc (this->attributes_.id (), 00095 "" /* empty name */); 00096 } 00097 else if (this->kind_ == CORBA::tk_component) 00098 { 00099 return adapter->create_component_tc (this->attributes_.id (), 00100 "" /* empty name */); 00101 } 00102 else if (this->kind_ == CORBA::tk_home) 00103 { 00104 return adapter->create_home_tc (this->attributes_.id (), 00105 "" /* empty name */); 00106 } 00107 else if (this->kind_ == CORBA::tk_local_interface) 00108 { 00109 return adapter->create_local_interface_tc (this->attributes_.id (), 00110 "" /* empty name */); 00111 00112 } 00113 else if (this->kind_ == CORBA::tk_native) 00114 { 00115 return adapter->create_native_tc (this->attributes_.id (), 00116 "" /* empty name */); 00117 } 00118 else // CORBA::tk_objref 00119 { 00120 return adapter->create_interface_tc (this->attributes_.id (), 00121 "" /* empty name */); 00122 } 00123 }
char const * TAO::TypeCode::Objref< StringType, RefCountPolicy >::id_i | ( | void | ) | const [protected, virtual] |
Reimplemented from CORBA::TypeCode.
Definition at line 127 of file Objref_TypeCode.cpp.
References TAO::TypeCode::Objref< StringType, RefCountPolicy >::attributes_, and TAO::TypeCode::Base_Attributes< STRING_TYPE >::id().
00128 { 00129 // Ownership is retained by the TypeCode, as required by the C++ 00130 // mapping. 00131 return this->attributes_.id (); 00132 }
char const * TAO::TypeCode::Objref< StringType, RefCountPolicy >::name_i | ( | void | ) | const [protected, virtual] |
Reimplemented from CORBA::TypeCode.
Definition at line 136 of file Objref_TypeCode.cpp.
References TAO::TypeCode::Objref< StringType, RefCountPolicy >::attributes_, and TAO::TypeCode::Base_Attributes< STRING_TYPE >::name().
00137 { 00138 // Ownership is retained by the TypeCode, as required by the C++ 00139 // mapping. 00140 return this->attributes_.name (); 00141 }
void TAO::TypeCode::Objref< StringType, RefCountPolicy >::tao_duplicate | ( | void | ) | [virtual] |
Increase the reference count on this TypeCode
.
Implements CORBA::TypeCode.
Definition at line 43 of file Objref_TypeCode.cpp.
TAO_BEGIN_VERSIONED_NAMESPACE_DECL bool TAO::TypeCode::Objref< StringType, RefCountPolicy >::tao_marshal | ( | TAO_OutputCDR & | cdr, | |
CORBA::ULong | offset | |||
) | const [virtual] |
Marshal this TypeCode
into a CDR output stream.
Marshal this TypeCode
into the cdr output CDR stream, excluding the TypeCode
kind. Existing cdr contents will not be altered. The marshaled TypeCode
will be appended to the given cdr CDR output stream.
cdr | Output CDR stream into which the TypeCode will be marshaled. | |
offset | Number of bytes currently in the output CDR stream, including the top-level TypeCode TCKind . This argument is useful for recursive TypeCodes . TypeCodes that contain other TypeCodes should pass an updated offset value to the marshaling operation for those contained TypeCodes . |
true
if marshaling was successful.CORBA::TypeCode
interface.If this method returns false, the contents of the cdr output CDR stream are undefined.
Implements CORBA::TypeCode.
Definition at line 21 of file Objref_TypeCode.cpp.
References ACE_OutputCDR::begin(), TAO_ENCAP_BYTE_ORDER, ACE_OutputCDR::total_length(), and ACE_OutputCDR::write_octet_array_mb().
00024 { 00025 // A tk_objref TypeCode has a "complex" parameter list type (see 00026 // Table 15-2 in Section 15.3.5.1 "TypeCode" in the CDR section of 00027 // the CORBA specification), meaning that it must be marshaled into 00028 // a CDR encapsulation. 00029 00030 // Create a CDR encapsulation. 00031 TAO_OutputCDR enc; 00032 00033 return 00034 enc << TAO_OutputCDR::from_boolean (TAO_ENCAP_BYTE_ORDER) 00035 && enc << TAO_OutputCDR::from_string (this->attributes_.id (), 0) 00036 && enc << TAO_OutputCDR::from_string (this->attributes_.name (), 0) 00037 && cdr << static_cast<CORBA::ULong> (enc.total_length ()) 00038 && cdr.write_octet_array_mb (enc.begin ()); 00039 }
void TAO::TypeCode::Objref< StringType, RefCountPolicy >::tao_release | ( | void | ) | [virtual] |
Decrease the reference count on this object.
Implements CORBA::TypeCode.
Definition at line 50 of file Objref_TypeCode.cpp.
Base_Attributes<StringType> TAO::TypeCode::Objref< StringType, RefCountPolicy >::attributes_ [protected] |
Base attributes (id
and name
).
Definition at line 102 of file Objref_TypeCode.h.
Referenced by TAO::TypeCode::Objref< char const *, TAO::Null_RefCount_Policy >::id_i(), TAO::TypeCode::Objref< StringType, RefCountPolicy >::id_i(), TAO::TypeCode::Objref< char const *, TAO::Null_RefCount_Policy >::name_i(), and TAO::TypeCode::Objref< StringType, RefCountPolicy >::name_i().