summaryrefslogtreecommitdiff
path: root/TAO/tao/TypeCode/TypeCode_Case.inl
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/TypeCode/TypeCode_Case.inl')
-rw-r--r--TAO/tao/TypeCode/TypeCode_Case.inl52
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 ();
}