TypeCode_Case_Base_T.inl

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 //
00003 // $Id: TypeCode_Case_Base_T.inl 69182 2005-11-03 17:38:46Z ossama $
00004 
00005 #include "tao/CDR.h"
00006 #include "tao/AnyTypeCode/TypeCode_Traits.h"
00007 
00008 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00009 
00010 template <typename StringType, typename TypeCodeType>
00011 ACE_INLINE
00012 TAO::TypeCode::Case<StringType, TypeCodeType>::Case (
00013   char const * member_name,
00014   TypeCodeType member_type)
00015   : name_ (member_name)
00016   , type_ (member_type)
00017 {
00018 }
00019 
00020 template <typename StringType, typename TypeCodeType>
00021 ACE_INLINE
00022 TAO::TypeCode::Case<StringType, TypeCodeType>::Case (void)
00023   : name_ ()
00024   , type_ ()
00025 {
00026   // Only used when StringType and TypeCodeType are CORBA::String_var
00027   // and CORBA::TypeCode_var, respectively.
00028 }
00029 
00030 template <typename StringType, typename TypeCodeType>
00031 ACE_INLINE bool
00032 TAO::TypeCode::Case<StringType, TypeCodeType>::marshal (
00033   TAO_OutputCDR & cdr,
00034   CORBA::ULong offset) const
00035 {
00036   return
00037     this->marshal_label (cdr)
00038     && (cdr << TAO_OutputCDR::from_string (
00039          Traits<StringType>::get_string (this->name_), 0))
00040     && TAO::TypeCode::marshal (cdr,
00041                                Traits<StringType>::get_typecode (this->type_),
00042                                offset + cdr.total_length ());
00043 }
00044 
00045 template <typename StringType, typename TypeCodeType>
00046 ACE_INLINE char const *
00047 TAO::TypeCode::Case<StringType, TypeCodeType>::name (void) const
00048 {
00049   return
00050     Traits<StringType>::get_string (this->name_);
00051 }
00052 
00053 template <typename StringType, typename TypeCodeType>
00054 ACE_INLINE void
00055 TAO::TypeCode::Case<StringType, TypeCodeType>::name (
00056   char const * the_name)
00057 {
00058   this->name_ = the_name;
00059 }
00060 
00061 template <typename StringType, typename TypeCodeType>
00062 ACE_INLINE CORBA::TypeCode_ptr
00063 TAO::TypeCode::Case<StringType, TypeCodeType>::type (void) const
00064 {
00065   return
00066     Traits<StringType>::get_typecode (this->type_);
00067 }
00068 
00069 template <typename StringType, typename TypeCodeType>
00070 ACE_INLINE void
00071 TAO::TypeCode::Case<StringType, TypeCodeType>::type (CORBA::TypeCode_ptr tc)
00072 {
00073   // This assignment works since it is only used when TypeCodeType is
00074   // "CORBA::TypeCode_var", not in the "CORBA::TypeCode_ptr const *"
00075   // case.
00076   this->type_ = CORBA::TypeCode::_duplicate (tc);
00077 }
00078 
00079 TAO_END_VERSIONED_NAMESPACE_DECL

Generated on Sun Jan 27 13:21:07 2008 for TAO_AnyTypeCode by doxygen 1.3.6