CORBA::TypeCode
implementation for an OMG IDL typedef
.
More...
#include <Alias_TypeCode.h>
Public Member Functions | |
Alias (CORBA::TCKind kind, char const *id, char const *name, TypeCodeType const &tc) | |
Constructor. | |
TAO-specific @c CORBA::TypeCode Methods | |
Methods required by TAO's implementation of the
| |
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. | |
@c TAO CORBA::TypeCode Template Methods | |
| |
Base_Attributes< StringType > | attributes_ |
TypeCodeType const | content_type_ |
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 |
virtual CORBA::TypeCode_ptr | content_type_i (void) const |
CORBA::TypeCode
implementation for an OMG IDL typedef
.
This class implements a CORBA::TypeCode
for an OMG IDL typedef
.
Definition at line 48 of file Alias_TypeCode.h.
TAO::TypeCode::Alias< StringType, TypeCodeType, RefCountPolicy >::Alias | ( | CORBA::TCKind | kind, | |
char const * | id, | |||
char const * | name, | |||
TypeCodeType const & | tc | |||
) |
Constructor.
Definition at line 13 of file Alias_TypeCode.inl.
: ::CORBA::TypeCode (kind) , RefCountPolicy () , attributes_ (id, name) , content_type_ (tc) { }
CORBA::TypeCode_ptr TAO::TypeCode::Alias< StringType, TypeCodeType, RefCountPolicy >::content_type_i | ( | void | ) | const [protected, virtual] |
Base attributes for this TypeCode
containing the repository ID and name of the typedef
.
Reimplemented from CORBA::TypeCode.
Definition at line 181 of file Alias_TypeCode.cpp.
{ return CORBA::TypeCode::_duplicate ( Traits<StringType>::get_typecode (this->content_type_)); }
CORBA::Boolean TAO::TypeCode::Alias< StringType, TypeCodeType, RefCountPolicy >::equal_i | ( | CORBA::TypeCode_ptr | tc | ) | const [protected, virtual] |
Base attributes for this TypeCode
containing the repository ID and name of the typedef
.
Implements CORBA::TypeCode.
Definition at line 86 of file Alias_TypeCode.cpp.
{ // The CORBA::TypeCode base class already verified equality of the // base attributes (id and name). Perform an equality comparison of // the content. CORBA::TypeCode_var rhs_content_type = tc->content_type (); return Traits<StringType>::get_typecode (this->content_type_)->equal ( rhs_content_type.in ()); }
CORBA::Boolean TAO::TypeCode::Alias< StringType, TypeCodeType, RefCountPolicy >::equivalent_i | ( | CORBA::TypeCode_ptr | tc | ) | const [protected, virtual] |
Base attributes for this TypeCode
containing the repository ID and name of the typedef
.
Implements CORBA::TypeCode.
Definition at line 105 of file Alias_TypeCode.cpp.
{ // Equivalence already verified in the base class // CORBA::TypeCode::equivalent() method. return true; }
CORBA::TypeCode_ptr TAO::TypeCode::Alias< StringType, TypeCodeType, RefCountPolicy >::get_compact_typecode_i | ( | void | ) | const [protected, virtual] |
Base attributes for this TypeCode
containing the repository ID and name of the typedef
.
Implements CORBA::TypeCode.
Definition at line 119 of file Alias_TypeCode.cpp.
{ TAO_TypeCodeFactory_Adapter * const adapter = ACE_Dynamic_Service<TAO_TypeCodeFactory_Adapter>::instance ( TAO_ORB_Core::typecodefactory_adapter_name () ); if (adapter == 0) { throw ::CORBA::INITIALIZE (); } CORBA::TypeCode_var compact_content_type = Traits<StringType>::get_typecode ( this->content_type_)->get_compact_typecode (); if (this->kind_ == CORBA::tk_alias) { return adapter->create_alias_tc (this->attributes_.id (), "", /* empty name */ compact_content_type.in ()); } else { return adapter->create_value_box_tc (this->attributes_.id (), "", /* empty name */ compact_content_type.in ()); } }
char const * TAO::TypeCode::Alias< StringType, TypeCodeType, RefCountPolicy >::id_i | ( | void | ) | const [protected, virtual] |
Base attributes for this TypeCode
containing the repository ID and name of the typedef
.
Reimplemented from CORBA::TypeCode.
Definition at line 155 of file Alias_TypeCode.cpp.
{ // Ownership is retained by the TypeCode, as required by the C++ // mapping. return this->attributes_.id (); }
char const * TAO::TypeCode::Alias< StringType, TypeCodeType, RefCountPolicy >::name_i | ( | void | ) | const [protected, virtual] |
Base attributes for this TypeCode
containing the repository ID and name of the typedef
.
Reimplemented from CORBA::TypeCode.
Definition at line 168 of file Alias_TypeCode.cpp.
{ // Ownership is retained by the TypeCode, as required by the C++ // mapping. return this->attributes_.name (); }
void TAO::TypeCode::Alias< StringType, TypeCodeType, RefCountPolicy >::tao_duplicate | ( | void | ) | [virtual] |
Increase the reference count on this TypeCode
.
Implements CORBA::TypeCode.
Definition at line 64 of file Alias_TypeCode.cpp.
{ this->RefCountPolicy::add_ref (); }
bool TAO::TypeCode::Alias< StringType, TypeCodeType, 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.Implements CORBA::TypeCode.
Definition at line 27 of file Alias_TypeCode.cpp.
{ // A tk_alias TypeCode has a "complex" parameter list type (see // Table 15-2 in Section 15.3.5.1 "TypeCode" in the CDR section of // the CORBA specification), meaning that it must be marshaled into // a CDR encapsulation. // Create a CDR encapsulation. TAO_OutputCDR enc; // Account for the encoded CDR encapsulation length and byte order. // // Aligning on an octet since the next value after the CDR // encapsulation length will always be the byte order octet/boolean // in this case. offset = ACE_align_binary (offset + 4, ACE_CDR::OCTET_ALIGN); return enc << TAO_OutputCDR::from_boolean (TAO_ENCAP_BYTE_ORDER) && enc << TAO_OutputCDR::from_string (this->attributes_.id (), 0) && enc << TAO_OutputCDR::from_string (this->attributes_.name (), 0) && marshal (enc, Traits<StringType>::get_typecode (this->content_type_), offset + enc.total_length ()) && cdr << static_cast<CORBA::ULong> (enc.total_length ()) && cdr.write_octet_array_mb (enc.begin ()); }
void TAO::TypeCode::Alias< StringType, TypeCodeType, RefCountPolicy >::tao_release | ( | void | ) | [virtual] |
Decrease the reference count on this object.
Implements CORBA::TypeCode.
Definition at line 75 of file Alias_TypeCode.cpp.
{ this->RefCountPolicy::remove_ref (); }
Base_Attributes<StringType> TAO::TypeCode::Alias< StringType, TypeCodeType, RefCountPolicy >::attributes_ [private] |
Base attributes for this TypeCode
containing the repository ID and name of the typedef
.
Definition at line 97 of file Alias_TypeCode.h.
TypeCodeType const TAO::TypeCode::Alias< StringType, TypeCodeType, RefCountPolicy >::content_type_ [private] |
The TypeCode
corresponding to the original type upon which the IDL typedef
was made. A pointer to the CORBA::TypeCode_ptr
rather than the CORBA::TypeCode_ptr
itself is stored since that address is well-defined. We may not know the value of the CORBA::TypeCode_ptr
when creating this Field
statically at compile-time, hence the indirection.
TypeCode
is released upon destruction of this TypeCode::Alias
. Definition at line 111 of file Alias_TypeCode.h.