diff options
Diffstat (limited to 'TAO/tao/TypeCode/TypeCode_Case.inl')
-rw-r--r-- | TAO/tao/TypeCode/TypeCode_Case.inl | 52 |
1 files changed, 46 insertions, 6 deletions
diff --git a/TAO/tao/TypeCode/TypeCode_Case.inl b/TAO/tao/TypeCode/TypeCode_Case.inl index 7a8f7e665bc..b5e23148d6b 100644 --- a/TAO/tao/TypeCode/TypeCode_Case.inl +++ b/TAO/tao/TypeCode/TypeCode_Case.inl @@ -2,14 +2,54 @@ // // $Id$ -template <typename DISCRIMINATOR_TYPE, typename STRING_TYPE> +#include "tao/CDR.h" + + +template <typename STRING_TYPE> ACE_INLINE char const * -TAO::TypeCode::Case<DISCRIMINATOR_TYPE, STRING_TYPE>::Case ( - DISCRIMINATOR_TYPE member_label, +TAO::TypeCode::Case<STRING_TYPE>::Case ( char const * member_name, CORBA::TypeCode_ptr * member_type) - : Case_Base<STRING_TYPE> (member_name, - member_type) - , label_ (member_label) + : name_ (member_name) + , type_ (member_type) +{ +} + +template <typename STRING_TYPE> +ACE_INLINE char const * +TAO::TypeCode::Case<STRING_TYPE>::name (void) const +{ + return this->name_; +} + +template <typename STRING_TYPE> +ACE_INLINE CORBA::TypeCode_ptr +TAO::TypeCode::Case<STRING_TYPE>::type (void) const +{ + return *this->type_; +} + +template <typename STRING_TYPE> +ACE_INLINE bool +TAO::TypeCode::Case<STRING_TYPE>::marshal ( + TAO_OutputCDR & cdr) const +{ + return + this->marshal_label () + && (cdr << this->name ()) + && (cdr << this->type ()); +} + + +// ----------------------------------------------------------------- +// Some compilers exhibit warnings about better conversion sequence +// from a CORBA::String_var to a char const *. This member +// specialization works around them by performing explicit +// conversions. +// ----------------------------------------------------------------- + +ACE_INLINE char const * +TAO::TypeCode::Case<CORBA::String_var>::name (void) const { + return this->name_.in (); } |