Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

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

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

`#include <TypeCode_Case.h>`

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

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

[legend]
List of all members.

## Public Member Functions
| Case (char const *name, TypeCodeType tc)
| Constructor.
| Case (void)
| Constructor.
virtual | ~Case (void)
| Destructor.
virtual Case * | clone (void) const =0
| Cloning/copying operation.
virtual CORBA::Any * | label (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>
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::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_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_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`. Implemented in TAO::TypeCode::Case_T< DiscriminatorType, StringType, TypeCodeType >.

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_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:

- TypeCode_Case.h
- TypeCode_Case.cpp
- TypeCode_Case.inl