TAO::TypeCode::Case< StringType, TypeCodeType > Class Template Reference

Abstract base class for that represents an IDL union case/member. More...

#include <TypeCode_Case_Base_T.h>

Inheritance diagram for TAO::TypeCode::Case< StringType, TypeCodeType >:

Inheritance graph
[legend]
Collaboration diagram for TAO::TypeCode::Case< StringType, TypeCodeType >:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 Case (char const *name, TypeCodeType tc)
 Constructor.
 Case (void)
 Constructor.
virtual ~Case (void)
 Destructor.
virtual Caseclone (void) const =0
 Cloning/copying operation.
virtual CORBA::Anylabel (ACE_ENV_SINGLE_ARG_DECL) const =0
char const * name (void) const
 Get the name of the union case/member.
void name (char const *the_name)
 Set the name of the union case/member.
CORBA::TypeCode_ptr type (void) const
 Get the CORBA::TypeCode of the union case/member.
void type (CORBA::TypeCode_ptr tc)
 Set the CORBA::TypeCode of the union case/member.
bool marshal (TAO_OutputCDR &cdr, CORBA::ULong offset) const
bool equal (CORBA::ULong index, CORBA::TypeCode_ptr tc ACE_ENV_ARG_DECL) const
bool equivalent (CORBA::ULong index, CORBA::TypeCode_ptr tc ACE_ENV_ARG_DECL) const

Protected Member Functions

virtual bool marshal_label (TAO_OutputCDR &cdr) const =0
virtual bool equal_label (CORBA::ULong index, CORBA::TypeCode_ptr tc ACE_ENV_ARG_DECL) const =0
 Verify equality of member labels.

Private Attributes

StringType name_
 The name of the case.
TypeCodeType type_
 Pointer to the CORBA::TypeCode of the case.

Detailed Description

template<typename StringType, typename TypeCodeType>
class TAO::TypeCode::Case< StringType, TypeCodeType >

Abstract base class for that represents an IDL union case/member.

This class hides the actual IDL union member label value from the TAO::TypeCode::Union class by relying on a CORBA::Any return value that corresponds to the CORBA::TypeCode::member_label() return type. It also allows the TAO::TypeCode::Union class to marshal the member label values into a CDR stream without knowledge of the underlying member label values.


Constructor & Destructor Documentation

template<typename StringType, typename TypeCodeType>
TAO_BEGIN_VERSIONED_NAMESPACE_DECL ACE_INLINE TAO::TypeCode::Case< StringType, TypeCodeType >::Case ( char const *  name,
TypeCodeType  tc 
)

Constructor.

Constructor used when creating static union TypeCodes.

template<typename StringType, typename TypeCodeType>
ACE_INLINE TAO::TypeCode::Case< StringType, TypeCodeType >::Case ( void   ) 

Constructor.

Constructor used when creating dynamic union TypeCodes.

template<typename StringType, typename TypeCodeType>
TAO_BEGIN_VERSIONED_NAMESPACE_DECL TAO::TypeCode::Case< StringType, TypeCodeType >::~Case ( void   )  [virtual]

Destructor.


Member Function Documentation

template<typename StringType, typename TypeCodeType>
virtual Case* TAO::TypeCode::Case< StringType, TypeCodeType >::clone ( void   )  const [pure virtual]

Cloning/copying operation.

Implemented in TAO::TypeCode::Case_Enum_T< StringType, TypeCodeType >, and TAO::TypeCode::Case_T< DiscriminatorType, StringType, TypeCodeType >.

template<typename StringType, typename TypeCodeType>
bool TAO::TypeCode::Case< StringType, TypeCodeType >::equal ( CORBA::ULong  index,
CORBA::TypeCode_ptr tc  ACE_ENV_ARG_DECL 
) const

Check for equality of the case attributes contained by this class and the corresponding member attributes at index "index" in the given TypeCode tc.

template<typename StringType, typename TypeCodeType>
virtual bool TAO::TypeCode::Case< StringType, TypeCodeType >::equal_label ( CORBA::ULong  index,
CORBA::TypeCode_ptr tc  ACE_ENV_ARG_DECL 
) const [protected, pure virtual]

Verify equality of member labels.

Performing member label equality comparisons in the Case subclass allows us to avoid performing interpretive extraction of the value from the Any returned from the "right hand side" operand TypeCode since the Case subclass already knows what type and value should be extracted from the Any.

Parameters:
index Member index of given TypeCode tc being tested.
tc The TypeCode whose member "@a index" label is being tested.

Implemented in TAO::TypeCode::Case_Enum_T< StringType, TypeCodeType >, and TAO::TypeCode::Case_T< DiscriminatorType, StringType, TypeCodeType >.

template<typename StringType, typename TypeCodeType>
bool TAO::TypeCode::Case< StringType, TypeCodeType >::equivalent ( CORBA::ULong  index,
CORBA::TypeCode_ptr tc  ACE_ENV_ARG_DECL 
) const

Check for equivalence of the case attributes contained by this class and the corresponding member attributes at index "@a index" in the given TypeCode tc.

template<typename StringType, typename TypeCodeType>
virtual CORBA::Any* TAO::TypeCode::Case< StringType, TypeCodeType >::label ( ACE_ENV_SINGLE_ARG_DECL   )  const [pure virtual]

Return the IDL union case label value embedded within a CORBA::Any.

template<typename StringType, typename TypeCodeType>
ACE_INLINE bool TAO::TypeCode::Case< StringType, TypeCodeType >::marshal ( TAO_OutputCDR cdr,
CORBA::ULong  offset 
) const

Marshal this IDL union member into the given output CDR stream.

template<typename StringType, typename TypeCodeType>
virtual bool TAO::TypeCode::Case< StringType, TypeCodeType >::marshal_label ( TAO_OutputCDR cdr  )  const [protected, pure virtual]

Marshal the IDL union case label value into the given output CDR stream.

Implemented in TAO::TypeCode::Case_Enum_T< StringType, TypeCodeType >, and TAO::TypeCode::Case_T< DiscriminatorType, StringType, TypeCodeType >.

template<typename StringType, typename TypeCodeType>
ACE_INLINE void TAO::TypeCode::Case< StringType, TypeCodeType >::name ( char const *  the_name  ) 

Set the name of the union case/member.

template<typename StringType, typename TypeCodeType>
ACE_INLINE char const * TAO::TypeCode::Case< StringType, TypeCodeType >::name ( void   )  const

Get the name of the union case/member.

template<typename StringType, typename TypeCodeType>
ACE_INLINE void TAO::TypeCode::Case< StringType, TypeCodeType >::type ( CORBA::TypeCode_ptr  tc  ) 

Set the CORBA::TypeCode of the union case/member.

Note:
CORBA::TypeCode::_duplicate() is called on the TypeCode tc.

template<typename StringType, typename TypeCodeType>
ACE_INLINE CORBA::TypeCode_ptr TAO::TypeCode::Case< StringType, TypeCodeType >::type ( void   )  const

Get the CORBA::TypeCode of the union case/member.

Note:
The reference count is not manipulated by this method, i.e., ownership is retained by this class.


Member Data Documentation

template<typename StringType, typename TypeCodeType>
StringType TAO::TypeCode::Case< StringType, TypeCodeType >::name_ [private]

The name of the case.

template<typename StringType, typename TypeCodeType>
TypeCodeType TAO::TypeCode::Case< StringType, TypeCodeType >::type_ [private]

Pointer to the CORBA::TypeCode of the case.

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 Case statically at compile-time, hence the indirection.

Note:
This TypeCode is released upon destruction of this Case.


The documentation for this class was generated from the following files:
Generated on Fri Oct 6 15:43:35 2006 for TAO_AnyTypeCode by  doxygen 1.4.7-1