summaryrefslogtreecommitdiff
path: root/TAO/tao/CodecFactory/CDR_Encaps_Codec.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/CodecFactory/CDR_Encaps_Codec.cpp')
-rw-r--r--TAO/tao/CodecFactory/CDR_Encaps_Codec.cpp59
1 files changed, 51 insertions, 8 deletions
diff --git a/TAO/tao/CodecFactory/CDR_Encaps_Codec.cpp b/TAO/tao/CodecFactory/CDR_Encaps_Codec.cpp
index 28e8cc27453..215bac88618 100644
--- a/TAO/tao/CodecFactory/CDR_Encaps_Codec.cpp
+++ b/TAO/tao/CodecFactory/CDR_Encaps_Codec.cpp
@@ -1,8 +1,6 @@
-// -*- C++ -*-
-//
// $Id$
-#include "CDR_Encaps_Codec.h"
+#include "tao/CodecFactory/CDR_Encaps_Codec.h"
#include "tao/CDR.h"
#include "tao/OctetSeqC.h"
@@ -14,22 +12,29 @@
#include "tao/AnyTypeCode/TypeCode_Constants.h"
#include "tao/SystemException.h"
#include "tao/ORB_Constants.h"
+#include "tao/Codeset_Translator_Base.h"
#include "ace/Auto_Ptr.h"
#include "ace/OS_NS_string.h"
-ACE_RCSID (tao,
+ACE_RCSID (CodecFactory,
CDR_Encaps_Codec,
"$Id$")
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
-TAO_CDR_Encaps_Codec::TAO_CDR_Encaps_Codec (CORBA::Octet major,
- CORBA::Octet minor,
- TAO_ORB_Core * orb_core)
+TAO_CDR_Encaps_Codec::TAO_CDR_Encaps_Codec (
+ CORBA::Octet major,
+ CORBA::Octet minor,
+ TAO_ORB_Core * orb_core,
+ TAO_Codeset_Translator_Base * char_trans,
+ TAO_Codeset_Translator_Base * wchar_trans)
: major_ (major),
minor_ (minor),
- orb_core_ (orb_core)
+ orb_core_ (orb_core),
+ char_translator_ (char_trans),
+ wchar_translator_ (wchar_trans)
{
}
@@ -58,6 +63,15 @@ TAO_CDR_Encaps_Codec::encode (const CORBA::Any & data
this->major_,
this->minor_);
+ if (this->char_translator_)
+ {
+ this->char_translator_->assign (&cdr);
+ }
+ if (this->wchar_translator_)
+ {
+ this->wchar_translator_->assign (&cdr);
+ }
+
if ((cdr << TAO_OutputCDR::from_boolean (TAO_ENCAP_BYTE_ORDER))
&& (cdr << data))
{
@@ -123,6 +137,15 @@ TAO_CDR_Encaps_Codec::decode (const CORBA::OctetSeq & data
this->minor_,
this->orb_core_);
+ if (this->char_translator_)
+ {
+ this->char_translator_->assign (&cdr);
+ }
+ if (this->wchar_translator_)
+ {
+ this->wchar_translator_->assign (&cdr);
+ }
+
CORBA::Boolean byte_order;
if (cdr >> TAO_InputCDR::to_boolean (byte_order))
{
@@ -168,6 +191,15 @@ TAO_CDR_Encaps_Codec::encode_value (const CORBA::Any & data
this->major_,
this->minor_);
+ if (this->char_translator_)
+ {
+ this->char_translator_->assign (&cdr);
+ }
+ if (this->wchar_translator_)
+ {
+ this->wchar_translator_->assign (&cdr);
+ }
+
if ((cdr << TAO_OutputCDR::from_boolean (TAO_ENCAP_BYTE_ORDER)))
{
TAO::Any_Impl *impl = data.impl ();
@@ -276,6 +308,15 @@ TAO_CDR_Encaps_Codec::decode_value (const CORBA::OctetSeq & data,
this->minor_,
this->orb_core_);
+ if (this->char_translator_)
+ {
+ this->char_translator_->assign (&cdr);
+ }
+ if (this->wchar_translator_)
+ {
+ this->wchar_translator_->assign (&cdr);
+ }
+
CORBA::Boolean byte_order;
if (cdr >> TAO_InputCDR::to_boolean (byte_order))
@@ -323,3 +364,5 @@ TAO_CDR_Encaps_Codec::check_type_for_encoding (
&& typecode->equivalent (CORBA::_tc_wstring ACE_ENV_ARG_PARAMETER))
ACE_THROW (IOP::Codec::InvalidTypeForEncoding ());
}
+
+TAO_END_VERSIONED_NAMESPACE_DECL