CDR_Size.cpp File Reference

#include "ace/CDR_Size.h"
#include "ace/SString.h"
#include "ace/OS_Memory.h"
#include "ace/Truncate.h"
Include dependency graph for CDR_Size.cpp:

Go to the source code of this file.

Functions

 ACE_RCSID (ace, CDR_Size,"$Id: CDR_Size.cpp 82559 2008-08-07 20:23:07Z parsons $") 1 ACE_CDR
ACE_CDR::Boolean operator<< (ACE_SizeCDR &ss, const ACE_CString &x)

Function Documentation

ACE_RCSID ( ace  ,
CDR_Size  ,
"$Id: CDR_Size.cpp 82559 2008-08-07 20:23:07Z parsons $"   
)

Definition at line 10 of file CDR_Size.cpp.

00012                : CDR_Size.cpp 82559 2008-08-07 20:23:07Z parsons $")
00013 
00014 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00015 
00016 ACE_CDR::Boolean
00017 ACE_SizeCDR::write_wchar (ACE_CDR::WChar x)
00018 {
00019   // Note: translator framework is not supported.
00020   //
00021   if (ACE_OutputCDR::wchar_maxbytes () == 0)
00022     {
00023       errno = EACCES;
00024       return (this->good_bit_ = false);
00025     }
00026     
00027   if (static_cast<ACE_CDR::Short> (major_version_) == 1
00028           && static_cast<ACE_CDR::Short> (minor_version_) == 2)
00029     {
00030       ACE_CDR::Octet len =
00031         static_cast<ACE_CDR::Octet> (ACE_OutputCDR::wchar_maxbytes ());
00032         
00033       if (this->write_1 (&len))
00034         {
00035           if (ACE_OutputCDR::wchar_maxbytes () == sizeof(ACE_CDR::WChar))
00036             {
00037               return
00038                 this->write_octet_array (
00039                   reinterpret_cast<const ACE_CDR::Octet*> (&x),
00040                   static_cast<ACE_CDR::ULong> (len));
00041             }
00042           else
00043             {
00044               if (ACE_OutputCDR::wchar_maxbytes () == 2)
00045                 {
00046                   ACE_CDR::Short sx = static_cast<ACE_CDR::Short> (x);
00047                   return
00048                     this->write_octet_array (
00049                       reinterpret_cast<const ACE_CDR::Octet*> (&sx),
00050                       static_cast<ACE_CDR::ULong> (len));
00051                 }
00052               else
00053                 {
00054                   ACE_CDR::Octet ox = static_cast<ACE_CDR::Octet> (x);
00055                   return
00056                     this->write_octet_array (
00057                       reinterpret_cast<const ACE_CDR::Octet*> (&ox),
00058                       static_cast<ACE_CDR::ULong> (len));
00059                 }
00060             }
00061         }
00062     }
00063   else if (static_cast<ACE_CDR::Short> (minor_version_) == 0)
00064     { // wchar is not allowed with GIOP 1.0.
00065       errno = EINVAL;
00066       return (this->good_bit_ = false);
00067     }
00068     
00069   if (ACE_OutputCDR::wchar_maxbytes () == sizeof (ACE_CDR::WChar))
00070     {
00071       const void *temp = &x;
00072       return this->write_4 (reinterpret_cast<const ACE_CDR::ULong *> (temp));
00073     }
00074   else if (ACE_OutputCDR::wchar_maxbytes () == 2)
00075     {
00076       ACE_CDR::Short sx = static_cast<ACE_CDR::Short> (x);
00077       return this->write_2 (reinterpret_cast<const ACE_CDR::UShort *> (&sx));
00078     }
00079     
00080   ACE_CDR::Octet ox = static_cast<ACE_CDR::Octet> (x);
00081   return this->write_1 (reinterpret_cast<const ACE_CDR::Octet *> (&ox));
00082 }

ACE_CDR::Boolean operator<< ( ACE_SizeCDR ss,
const ACE_CString x 
)

Definition at line 256 of file CDR_Size.cpp.

00257 {
00258   ss.write_string (x);
00259   return ss.good_bit ();
00260 }

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on Sun Nov 22 23:10:02 2009 for ACE by  doxygen 1.6.1