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.
1.7.0