diff options
Diffstat (limited to 'TAO/tao/CDR.cpp')
-rw-r--r-- | TAO/tao/CDR.cpp | 335 |
1 files changed, 0 insertions, 335 deletions
diff --git a/TAO/tao/CDR.cpp b/TAO/tao/CDR.cpp deleted file mode 100644 index b16c3708661..00000000000 --- a/TAO/tao/CDR.cpp +++ /dev/null @@ -1,335 +0,0 @@ -// $Id$ - -// Portions of this file are: -// Copyright 1994-1995 by Sun Microsystems Inc. -// All Rights Reserved - -// CDR: Encode/Decode basic machine data types -// -// Implementation of OMG "Common Data Representation" (CDR) ... there -// are one routine each for byte/halfword/word/doubleword put/get, -// which adjust to establish "natural" alignment (the bulk of the -// code) and then put or get with byteswapping as needed. -// -// The implementation knows that native data formats are conformant -// with OMG-IDL's (and hence CDR's) size requirements, and relies on -// the fact that (for example) CORBA_Long is always four bytes long -// even if the environment's "int" is a different size. -// -// char, octet 8 bits (1 byte) -// short, unsigned short 16 bits (2 bytes) -// long, unsigned long, float 32 bits (4 bytes) -// double, (unsigned) long long 64 bits (8 bytes) -// long double 128 bits (16 bytes) -// -// Moreover, this "knows" that the native 'char' represents ISO -// Latin/1 characters (an ASCII superset addressing Western European -// characters) and that "double" and "float" comply with the IEEE -// standards. (The "long double" may not be a native data type, -// though.) -// -// THREADING NOTE: "CDR" is a data structure which must be protected -// by external critical sections. - -#include "tao/Timeprobe.h" -#include "tao/CDR.h" -#include "tao/ORB_Core.h" -#include "tao/singletons.h" -#include "tao/Environment.h" - -#if !defined (__ACE_INLINE__) -# include "tao/CDR.i" -#endif /* ! __ACE_INLINE__ */ - -ACE_RCSID(tao, CDR, "$Id$") - -#if defined (ACE_ENABLE_TIMEPROBES) - -static const char *TAO_CDR_Timeprobe_Description[] = -{ - "OutputCDR::ctor[1] - enter", - "OutputCDR::ctor[1] - leave", - "OutputCDR::ctor[2] - enter", - "OutputCDR::ctor[2] - leave", - "OutputCDR::ctor[3] - enter", - "OutputCDR::ctor[3] - leave" -}; - -enum -{ - TAO_OUTPUT_CDR_CTOR1_ENTER = 2000, - TAO_OUTPUT_CDR_CTOR1_LEAVE, - TAO_OUTPUT_CDR_CTOR2_ENTER, - TAO_OUTPUT_CDR_CTOR2_LEAVE, - TAO_OUTPUT_CDR_CTOR3_ENTER, - TAO_OUTPUT_CDR_CTOR3_LEAVE -}; - -// Setup Timeprobes -ACE_TIMEPROBE_EVENT_DESCRIPTIONS (TAO_CDR_Timeprobe_Description, - TAO_OUTPUT_CDR_CTOR1_ENTER); - -#endif /* ACE_ENABLE_TIMEPROBES */ - -TAO_OutputCDR::TAO_OutputCDR (size_t size, - int byte_order, - ACE_Allocator *buffer_allocator, - ACE_Allocator *data_block_allocator, - size_t memcpy_tradeoff, - ACE_Char_Codeset_Translator *char_translator, - ACE_WChar_Codeset_Translator *wchar_translator) - : ACE_OutputCDR (size, - byte_order, - buffer_allocator, - data_block_allocator, - memcpy_tradeoff) -{ - ACE_FUNCTION_TIMEPROBE (TAO_OUTPUT_CDR_CTOR1_ENTER); - this->char_translator_ = char_translator; - this->wchar_translator_ = wchar_translator; -} - -TAO_OutputCDR::TAO_OutputCDR (char *data, - size_t size, - int byte_order, - ACE_Allocator *buffer_allocator, - ACE_Allocator *data_block_allocator, - size_t memcpy_tradeoff, - ACE_Char_Codeset_Translator *char_translator, - ACE_WChar_Codeset_Translator *wchar_translator) - : ACE_OutputCDR (data, - size, - byte_order, - buffer_allocator, - data_block_allocator, - memcpy_tradeoff) -{ - ACE_FUNCTION_TIMEPROBE (TAO_OUTPUT_CDR_CTOR2_ENTER); - this->char_translator_ = char_translator; - this->wchar_translator_ = wchar_translator; -} - -TAO_OutputCDR::TAO_OutputCDR (ACE_Message_Block *data, - int byte_order, - size_t memcpy_tradeoff, - ACE_Char_Codeset_Translator *char_translator, - ACE_WChar_Codeset_Translator *wchar_translator) - : ACE_OutputCDR (data, - byte_order, - memcpy_tradeoff) -{ - ACE_FUNCTION_TIMEPROBE (TAO_OUTPUT_CDR_CTOR3_ENTER); - this->char_translator_ = char_translator; - this->wchar_translator_ = wchar_translator; -} - -CORBA::TypeCode::traverse_status -TAO_OutputCDR::encode (CORBA::TypeCode_ptr tc, - const void *data, - const void *data2, - CORBA::Environment &ACE_TRY_ENV) -{ - TAO_Marshal_Object *mobj = - TAO_MARSHAL_FACTORY::instance ()->make_marshal_object - (tc, ACE_TRY_ENV); - ACE_CHECK_RETURN (CORBA::TypeCode::TRAVERSE_STOP); - - if (!mobj) - return CORBA::TypeCode::TRAVERSE_STOP; - - return mobj->encode (tc, - data, - data2, - this, - ACE_TRY_ENV); -} - -CORBA::Boolean -operator<< (TAO_OutputCDR& cdr, - const CORBA::Any &x) -{ - // @@ This function should *not* use the interpreter, there must be - // a way to do this with just CDR operations!!!! - ACE_TRY_NEW_ENV - { - CORBA::TypeCode::traverse_status status = - TAO_MARSHAL_ANY::instance ()->encode (0, - &x, - 0, - &cdr, - ACE_TRY_ENV); - ACE_TRY_CHECK; - - if (status== CORBA::TypeCode::TRAVERSE_CONTINUE) - return 1; - // else return 0 at the end of the function - } - ACE_CATCH (CORBA_Exception, ex) - { - return 0; - } - ACE_ENDTRY; - return 0; -} - -CORBA::Boolean -operator<< (TAO_OutputCDR& cdr, const CORBA::TypeCode *x) -{ - ACE_TRY_NEW_ENV - { - // @@ This function should *not* use the interpreter, there must - // be a way to do this with just CDR operations!!!! - CORBA::TypeCode::traverse_status status = - TAO_MARSHAL_TYPECODE::instance ()->encode (0, - &x, - 0, - &cdr, - ACE_TRY_ENV); - ACE_TRY_CHECK; - - if (status == CORBA::TypeCode::TRAVERSE_CONTINUE) - return 1; - // else return 0 at the end of the function - } - ACE_CATCH (CORBA_Exception, ex) - { - return 0; - } - ACE_ENDTRY; - return 0; -} - -CORBA::TypeCode::traverse_status -TAO_OutputCDR::append (CORBA::TypeCode_ptr tc, - TAO_InputCDR *src, - CORBA::Environment &ACE_TRY_ENV) -{ - TAO_Marshal_Object *mobj = - TAO_MARSHAL_FACTORY::instance ()->make_marshal_object (tc, - ACE_TRY_ENV); - ACE_CHECK_RETURN (CORBA::TypeCode::TRAVERSE_STOP); - - if (mobj == 0) - return CORBA::TypeCode::TRAVERSE_STOP; - - return mobj->append (tc, src, this, ACE_TRY_ENV); -} - -// **************************************************************** - -TAO_InputCDR::TAO_InputCDR (const TAO_OutputCDR& rhs, - ACE_Allocator* buffer_allocator, - ACE_Allocator* data_block_allocator, - TAO_ORB_Core* orb_core) - : ACE_InputCDR (rhs, - buffer_allocator - ? buffer_allocator - : (orb_core ? orb_core->output_cdr_buffer_allocator () : 0), - data_block_allocator - ? data_block_allocator - : (orb_core ? orb_core->output_cdr_dblock_allocator () : - 0)), - orb_core_ (orb_core) -{ - this->init_translators (); -} - -void -TAO_InputCDR::init_translators (void) -{ - if (this->orb_core_ != 0) - { - this->char_translator_ = this->orb_core_->from_iso8859 (); - this->wchar_translator_ = this->orb_core_->from_unicode (); - } -} - -CORBA::TypeCode::traverse_status -TAO_InputCDR::decode (CORBA::TypeCode_ptr tc, - const void *data, - const void *data2, - CORBA::Environment &ACE_TRY_ENV) -{ - TAO_Marshal_Object *mobj = - TAO_MARSHAL_FACTORY::instance ()->make_marshal_object - (tc, ACE_TRY_ENV); - - ACE_CHECK_RETURN (CORBA::TypeCode::TRAVERSE_STOP); - - if (!mobj) - return CORBA::TypeCode::TRAVERSE_STOP; - - return mobj->decode (tc, - data, - data2, - this, - ACE_TRY_ENV); -} - -CORBA::TypeCode::traverse_status -TAO_InputCDR::skip (CORBA::TypeCode_ptr tc, - CORBA::Environment &ACE_TRY_ENV) -{ - TAO_Marshal_Object *mobj = - TAO_MARSHAL_FACTORY::instance ()->make_marshal_object - (tc, ACE_TRY_ENV); - ACE_CHECK_RETURN (CORBA::TypeCode::TRAVERSE_STOP); - - if (mobj == 0) - return CORBA::TypeCode::TRAVERSE_STOP; - - return mobj->skip (tc, - this, - ACE_TRY_ENV); -} - -CORBA::Boolean -operator>> (TAO_InputCDR &cdr, - CORBA::Any &x) -{ - ACE_TRY_NEW_ENV - { - CORBA::TypeCode::traverse_status status = - TAO_MARSHAL_ANY::instance ()->decode (0, - &x, - 0, - &cdr, - ACE_TRY_ENV); - ACE_TRY_CHECK; - - if (status != CORBA::TypeCode::TRAVERSE_CONTINUE) - return 0; - } - ACE_CATCH (CORBA_Exception, ex) - { - return 0; - } - ACE_ENDTRY; - - return 1; -} - -CORBA::Boolean -operator>> (TAO_InputCDR& cdr, CORBA::TypeCode *&x) -{ - ACE_TRY_NEW_ENV - { - CORBA::TypeCode::traverse_status status = - TAO_MARSHAL_TYPECODE::instance ()->decode (0, - &x, - 0, - &cdr, - ACE_TRY_ENV); - ACE_TRY_CHECK; - - if (status != CORBA::TypeCode::TRAVERSE_CONTINUE) - return 0; - } - ACE_CATCH (CORBA_Exception, ex) - { - return 0; - } - ACE_ENDTRY; - - return 1; -} |