diff options
author | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-02-07 02:30:40 +0000 |
---|---|---|
committer | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1999-02-07 02:30:40 +0000 |
commit | 36a0bb676e6161c52923b89dca7bb2ad1b01df99 (patch) | |
tree | 152cbd3f60bb5e872f25c218153af6a529bc364f | |
parent | 631132c123bf5e711f797be399778e3da5975d2c (diff) | |
download | ATCD-36a0bb676e6161c52923b89dca7bb2ad1b01df99.tar.gz |
ChangeLogTag:Sat Feb 6 19:56:27 1999 Carlos O'Ryan <coryan@cs.wustl.edu>
-rw-r--r-- | TAO/ChangeLog-99c | 12 | ||||
-rw-r--r-- | TAO/tao/CDR.cpp | 172 | ||||
-rw-r--r-- | TAO/tao/CDR.h | 68 | ||||
-rw-r--r-- | TAO/tao/CDR.i | 275 | ||||
-rw-r--r-- | TAO/tao/orbconf.h | 4 |
5 files changed, 332 insertions, 199 deletions
diff --git a/TAO/ChangeLog-99c b/TAO/ChangeLog-99c index 2a9b627014a..105e7cfd5fb 100644 --- a/TAO/ChangeLog-99c +++ b/TAO/ChangeLog-99c @@ -1,3 +1,15 @@ +Sat Feb 6 19:56:27 1999 Carlos O'Ryan <coryan@cs.wustl.edu> + + * tao/CDR.h: + * tao/CDR.i: + * tao/CDR.cpp: + Added << and >> operators for the TAO_*CDR classes; otherwise we + get a lot of ambiguos definitions with the ACE_*CDR versions. + + * tao/orbconf.h: + TAO_NO_COPY_OCTET_SEQUENCES is enabled always, until somebody + actually defines ACE_NO_COPY_OCTET_SEQUENCES. + Sat Feb 6 17:50:16 1999 Alexander Babu Arulanthu <alex@cs.wustl.edu> * orbsvcs/tests/Property/client.cpp: diff --git a/TAO/tao/CDR.cpp b/TAO/tao/CDR.cpp index c7674492476..a359859f9f8 100644 --- a/TAO/tao/CDR.cpp +++ b/TAO/tao/CDR.cpp @@ -131,6 +131,103 @@ TAO_OutputCDR::~TAO_OutputCDR (void) { } +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!!!! + TAO_TRY + { + CORBA::TypeCode::traverse_status status = + TAO_MARSHAL_ANY::instance ()->encode (0, + &x, + 0, + &cdr, + TAO_TRY_ENV); + TAO_CHECK_ENV; + + if (status== CORBA::TypeCode::TRAVERSE_CONTINUE) + return 1; + // else return 0 at the end of the function + } + TAO_CATCH (CORBA_Exception, ex) + { + return 0; + } + TAO_ENDTRY; + return 0; +} + +CORBA_Boolean +operator<< (TAO_OutputCDR& cdr, const CORBA::Object *x) +{ + TAO_TRY + { + // @@ 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_OBJREF::instance ()->encode (0, + &x, + 0, + &cdr, + TAO_TRY_ENV); + TAO_CHECK_ENV; + + if (status == CORBA::TypeCode::TRAVERSE_CONTINUE) + return 1; + // else return 0 at the end of the function + } + TAO_CATCH (CORBA_Exception, ex) + { + return 0; + } + TAO_ENDTRY; + return 0; +} + +CORBA_Boolean +operator<< (TAO_OutputCDR& cdr, const CORBA::TypeCode *x) +{ + TAO_TRY + { + // @@ 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, + TAO_TRY_ENV); + TAO_CHECK_ENV; + + if (status == CORBA::TypeCode::TRAVERSE_CONTINUE) + return 1; + // else return 0 at the end of the function + } + TAO_CATCH (CORBA_Exception, ex) + { + return 0; + } + TAO_ENDTRY; + return 0; +} + +CORBA::TypeCode::traverse_status +TAO_OutputCDR::append (CORBA::TypeCode_ptr tc, + TAO_InputCDR *src, + CORBA::Environment &TAO_IN_ENV) +{ + TAO_Marshal_Object *mobj = + TAO_MARSHAL_FACTORY::instance ()->make_marshal_object (tc, + TAO_IN_ENV); + TAO_CHECK_RETURN (CORBA::TypeCode::TRAVERSE_STOP); + + if (mobj == 0) + return CORBA::TypeCode::TRAVERSE_STOP; + + return mobj->append (tc, src, this, TAO_IN_ENV); +} + // **************************************************************** TAO_InputCDR::TAO_InputCDR (const char *buf, @@ -201,3 +298,78 @@ TAO_InputCDR::~TAO_InputCDR (void) { } +CORBA_Boolean +operator>> (TAO_InputCDR& cdr, CORBA::Any &x) +{ + TAO_TRY + { + CORBA::TypeCode::traverse_status status = + TAO_MARSHAL_ANY::instance ()->decode (0, + &x, + 0, + &cdr, + TAO_TRY_ENV); + TAO_CHECK_ENV; + + if (status != CORBA::TypeCode::TRAVERSE_CONTINUE) + return 0; + } + TAO_CATCH (CORBA_Exception, ex) + { + return 0; + } + TAO_ENDTRY; + + return 1; +} + +CORBA_Boolean +operator>> (TAO_InputCDR& cdr, CORBA::Object *&x) +{ + TAO_TRY + { + CORBA::TypeCode::traverse_status status = + TAO_MARSHAL_OBJREF::instance ()->decode (0, + &x, + 0, + &cdr, + TAO_TRY_ENV); + TAO_CHECK_ENV; + + if (status != CORBA::TypeCode::TRAVERSE_CONTINUE) + return 0; + } + TAO_CATCH (CORBA_Exception, ex) + { + return 0; + } + TAO_ENDTRY; + + return 1; +} + +CORBA_Boolean +operator>> (TAO_InputCDR& cdr, CORBA::TypeCode *&x) +{ + TAO_TRY + { + CORBA::TypeCode::traverse_status status = + TAO_MARSHAL_TYPECODE::instance ()->decode (0, + &x, + 0, + &cdr, + TAO_TRY_ENV); + TAO_CHECK_ENV; + + if (status != CORBA::TypeCode::TRAVERSE_CONTINUE) + return 0; + } + TAO_CATCH (CORBA_Exception, ex) + { + return 0; + } + TAO_ENDTRY; + + return 1; +} + diff --git a/TAO/tao/CDR.h b/TAO/tao/CDR.h index d2a1004e773..bd1032e3da5 100644 --- a/TAO/tao/CDR.h +++ b/TAO/tao/CDR.h @@ -220,19 +220,7 @@ public: // described by <tc>; returning any errors in <TAO_IN_ENV>. }; -#if defined(__ACE_INLINE__) -# include "tao/CDR.i" -#else - -// CDR output operators for CORBA types - -// This one must be redefined in TAO to ease some compilers' -// overload resolution difficulties in -// TAO_GIOP_Service_Context and TAO_GIOP_Invocation. -// It simply calls the ACE operator inline. -extern TAO_Export CORBA_Boolean operator<< (TAO_OutputCDR& cdr, - CORBA::ULong x); - +// This operators are too complex to be inline.... extern TAO_Export CORBA_Boolean operator<< (TAO_OutputCDR& cdr, const CORBA::Any &x); extern TAO_Export CORBA_Boolean operator<< (TAO_OutputCDR& cdr, @@ -240,15 +228,6 @@ extern TAO_Export CORBA_Boolean operator<< (TAO_OutputCDR& cdr, extern TAO_Export CORBA_Boolean operator<< (TAO_OutputCDR& cdr, const CORBA::TypeCode *x); -// CDR input operators for CORBA types - -// This one must be redefined in TAO to ease some compilers' -// overload resolution difficulties in -// TAO_GIOP_Service_Context and TAO_GIOP_Invocation. -// It simply calls the ACE operator inline. -extern TAO_Export CORBA_Boolean operator>> (TAO_InputCDR& cdr, - CORBA::ULong x); - extern TAO_Export CORBA_Boolean operator>> (TAO_InputCDR& cdr, CORBA::Any &x); extern TAO_Export CORBA_Boolean operator>> (TAO_InputCDR& cdr, @@ -256,6 +235,51 @@ extern TAO_Export CORBA_Boolean operator>> (TAO_InputCDR& cdr, extern TAO_Export CORBA_Boolean operator>> (TAO_InputCDR& cdr, CORBA::TypeCode *&x); +#if defined(__ACE_INLINE__) +# include "tao/CDR.i" +#else + +// CDR output operators for CORBA types + +extern TAO_Export CORBA::Boolean operator<< (TAO_OutputCDR &os, + CORBA::Short x); +extern TAO_Export CORBA::Boolean operator<< (TAO_OutputCDR &os, + CORBA::UShort x); +extern TAO_Export CORBA::Boolean operator<< (TAO_OutputCDR &os, + CORBA::Long x); +extern TAO_Export CORBA::Boolean operator<< (TAO_OutputCDR &os, + CORBA::ULong x); +extern TAO_Export CORBA::Boolean operator<< (TAO_OutputCDR &os, + CORBA::LongLong x); +extern TAO_Export CORBA::Boolean operator<< (TAO_OutputCDR &os, + CORBA::ULongLong x); +extern TAO_Export CORBA::Boolean operator<< (TAO_OutputCDR& os, + CORBA::LongDouble x); +extern TAO_Export CORBA::Boolean operator<< (TAO_OutputCDR &os, + CORBA::Float x); +extern TAO_Export CORBA::Boolean operator<< (TAO_OutputCDR &os, + CORBA::Double x); + +// CDR input operators for CORBA types + +extern TAO_Export CORBA::Boolean operator>> (TAO_InputCDR &is, + CORBA::Short &x); +extern TAO_Export CORBA::Boolean operator>> (TAO_InputCDR &is, + CORBA::UShort &x); +extern TAO_Export CORBA::Boolean operator>> (TAO_InputCDR &is, + CORBA::Long &x); +extern TAO_Export CORBA::Boolean operator>> (TAO_InputCDR &is, + CORBA::ULong &x); +extern TAO_Export CORBA::Boolean operator>> (TAO_InputCDR &is, + CORBA::LongLong &x); +extern TAO_Export CORBA::Boolean operator>> (TAO_InputCDR &is, + CORBA::ULongLong &x); +extern TAO_Export CORBA::Boolean operator>> (TAO_InputCDR &is, + CORBA::LongDouble &x); +extern TAO_Export CORBA::Boolean operator>> (TAO_InputCDR &is, + CORBA::Float &x); +extern TAO_Export CORBA::Boolean operator>> (TAO_InputCDR &is, + CORBA::Double &x); #endif /* __ACE_INLINE */ diff --git a/TAO/tao/CDR.i b/TAO/tao/CDR.i index 1dbf5f6e74d..bfd0e6ee840 100644 --- a/TAO/tao/CDR.i +++ b/TAO/tao/CDR.i @@ -56,187 +56,112 @@ TAO_InputCDR::skip (CORBA::TypeCode_ptr tc, // **************************************************************** -ACE_INLINE CORBA_Boolean -operator<< (TAO_OutputCDR& cdr, CORBA::ULong x) -{ - return operator<< (cdr, x); -} - -ACE_INLINE CORBA_Boolean -operator<< (TAO_OutputCDR& cdr, const CORBA::Any &x) -{ - TAO_TRY - { - CORBA::TypeCode::traverse_status status = - TAO_MARSHAL_ANY::instance ()->encode (0, - &x, - 0, - &cdr, - TAO_TRY_ENV); - TAO_CHECK_ENV; - - if (status== CORBA::TypeCode::TRAVERSE_CONTINUE) - return 1; - // else return 0 at the end of the function - } - TAO_CATCH (CORBA_Exception, ex) - { - return 0; - } - TAO_ENDTRY; - return 0; -} - -ACE_INLINE CORBA_Boolean -operator<< (TAO_OutputCDR& cdr, const CORBA::Object *x) -{ - TAO_TRY - { - CORBA::TypeCode::traverse_status status = - TAO_MARSHAL_OBJREF::instance ()->encode (0, - &x, - 0, - &cdr, - TAO_TRY_ENV); - TAO_CHECK_ENV; - - if (status == CORBA::TypeCode::TRAVERSE_CONTINUE) - return 1; - // else return 0 at the end of the function - } - TAO_CATCH (CORBA_Exception, ex) - { - return 0; - } - TAO_ENDTRY; - return 0; -} - -ACE_INLINE CORBA_Boolean -operator<< (TAO_OutputCDR& cdr, const CORBA::TypeCode *x) -{ - TAO_TRY - { - CORBA::TypeCode::traverse_status status = - TAO_MARSHAL_TYPECODE::instance ()->encode (0, - &x, - 0, - &cdr, - TAO_TRY_ENV); - TAO_CHECK_ENV; - - if (status == CORBA::TypeCode::TRAVERSE_CONTINUE) - return 1; - // else return 0 at the end of the function - } - TAO_CATCH (CORBA_Exception, ex) - { - return 0; - } - TAO_ENDTRY; - return 0; +ACE_INLINE CORBA::Boolean operator<< (TAO_OutputCDR &os, + CORBA::Short x) +{ + return ACE_static_cast(ACE_OutputCDR&,os) << x; +} + +ACE_INLINE CORBA::Boolean operator<< (TAO_OutputCDR &os, + CORBA::UShort x) +{ + return ACE_static_cast(ACE_OutputCDR&,os) << x; +} + +ACE_INLINE CORBA::Boolean operator<< (TAO_OutputCDR &os, + CORBA::Long x) +{ + return ACE_static_cast(ACE_OutputCDR&,os) << x; +} + +ACE_INLINE CORBA::Boolean operator<< (TAO_OutputCDR &os, + CORBA::ULong x) +{ + return ACE_static_cast(ACE_OutputCDR&,os) << x; +} + +ACE_INLINE CORBA::Boolean operator<< (TAO_OutputCDR &os, + CORBA::LongLong x) +{ + return ACE_static_cast(ACE_OutputCDR&,os) << x; +} + +ACE_INLINE CORBA::Boolean operator<< (TAO_OutputCDR &os, + CORBA::ULongLong x) +{ + return ACE_static_cast(ACE_OutputCDR&,os) << x; +} + +ACE_INLINE CORBA::Boolean operator<< (TAO_OutputCDR& os, + CORBA::LongDouble x) +{ + return ACE_static_cast(ACE_OutputCDR&,os) << x; +} + +ACE_INLINE CORBA::Boolean operator<< (TAO_OutputCDR &os, + CORBA::Float x) +{ + return ACE_static_cast(ACE_OutputCDR&,os) << x; +} + +ACE_INLINE CORBA::Boolean operator<< (TAO_OutputCDR &os, + CORBA::Double x) +{ + return ACE_static_cast(ACE_OutputCDR&,os) << x; } // **************************************************************** -ACE_INLINE CORBA_Boolean -operator>> (TAO_InputCDR& cdr, CORBA::ULong x) -{ - return operator>> (cdr, x); -} - -ACE_INLINE CORBA_Boolean -operator>> (TAO_InputCDR& cdr, CORBA::Any &x) -{ - TAO_TRY - { - CORBA::TypeCode::traverse_status status = - TAO_MARSHAL_ANY::instance ()->decode (0, - &x, - 0, - &cdr, - TAO_TRY_ENV); - TAO_CHECK_ENV; - - if (status != CORBA::TypeCode::TRAVERSE_CONTINUE) - return 0; - } - TAO_CATCH (CORBA_Exception, ex) - { - return 0; - } - TAO_ENDTRY; - - return 1; -} - -ACE_INLINE CORBA_Boolean -operator>> (TAO_InputCDR& cdr, CORBA::Object *&x) -{ - TAO_TRY - { - CORBA::TypeCode::traverse_status status = - TAO_MARSHAL_OBJREF::instance ()->decode (0, - &x, - 0, - &cdr, - TAO_TRY_ENV); - TAO_CHECK_ENV; - - if (status != CORBA::TypeCode::TRAVERSE_CONTINUE) - return 0; - } - TAO_CATCH (CORBA_Exception, ex) - { - return 0; - } - TAO_ENDTRY; - - return 1; -} - -ACE_INLINE CORBA_Boolean -operator>> (TAO_InputCDR& cdr, CORBA::TypeCode *&x) -{ - TAO_TRY - { - CORBA::TypeCode::traverse_status status = - TAO_MARSHAL_TYPECODE::instance ()->decode (0, - &x, - 0, - &cdr, - TAO_TRY_ENV); - TAO_CHECK_ENV; - - if (status != CORBA::TypeCode::TRAVERSE_CONTINUE) - return 0; - } - TAO_CATCH (CORBA_Exception, ex) - { - return 0; - } - TAO_ENDTRY; - - return 1; -} - -// *************************************************************************** -// We must define this method here because it uses the "read_*" inlined -// methods of the ACE_InputCDR class -// *************************************************************************** +ACE_INLINE CORBA::Boolean operator>> (TAO_InputCDR &is, + CORBA::Short &x) +{ + return ACE_static_cast(ACE_InputCDR&,is) >> x; +} + +ACE_INLINE CORBA::Boolean operator>> (TAO_InputCDR &is, + CORBA::UShort &x) +{ + return ACE_static_cast(ACE_InputCDR&,is) >> x; +} -ACE_INLINE CORBA::TypeCode::traverse_status -TAO_OutputCDR::append (CORBA::TypeCode_ptr tc, - TAO_InputCDR *src, - CORBA::Environment &TAO_IN_ENV) +ACE_INLINE CORBA::Boolean operator>> (TAO_InputCDR &is, + CORBA::Long &x) { - TAO_Marshal_Object *mobj = - TAO_MARSHAL_FACTORY::instance ()->make_marshal_object (tc, - TAO_IN_ENV); - TAO_CHECK_RETURN (CORBA::TypeCode::TRAVERSE_STOP); + return ACE_static_cast(ACE_InputCDR&,is) >> x; +} - if (mobj == 0) - return CORBA::TypeCode::TRAVERSE_STOP; +ACE_INLINE CORBA::Boolean operator>> (TAO_InputCDR &is, + CORBA::ULong &x) +{ + return ACE_static_cast(ACE_InputCDR&,is) >> x; +} - return mobj->append (tc, src, this, TAO_IN_ENV); +ACE_INLINE CORBA::Boolean operator>> (TAO_InputCDR &is, + CORBA::LongLong &x) +{ + return ACE_static_cast(ACE_InputCDR&,is) >> x; +} + +ACE_INLINE CORBA::Boolean operator>> (TAO_InputCDR &is, + CORBA::ULongLong &x) +{ + return ACE_static_cast(ACE_InputCDR&,is) >> x; +} + +ACE_INLINE CORBA::Boolean operator>> (TAO_InputCDR &is, + CORBA::LongDouble &x) +{ + return ACE_static_cast(ACE_InputCDR&,is) >> x; +} + +ACE_INLINE CORBA::Boolean operator>> (TAO_InputCDR &is, + CORBA::Float &x) +{ + return ACE_static_cast(ACE_InputCDR&,is) >> x; +} + +ACE_INLINE CORBA::Boolean operator>> (TAO_InputCDR &is, + CORBA::Double &x) +{ + return ACE_static_cast(ACE_InputCDR&,is) >> x; } diff --git a/TAO/tao/orbconf.h b/TAO/tao/orbconf.h index e2f8e656025..801e09fee06 100644 --- a/TAO/tao/orbconf.h +++ b/TAO/tao/orbconf.h @@ -161,9 +161,9 @@ // in 20+ files, define it conditionally. // The TAO_OutputCDR class uses the ACE macro, which // is defined by default. -#if defined (ACE_NO_COPY_OCTET_SEQUENCES) +//#if defined (ACE_NO_COPY_OCTET_SEQUENCES) #define TAO_NO_COPY_OCTET_SEQUENCES -#endif /* ACE_NO_COPY_OCTET_SEQUENCES */ +//#endif /* ACE_NO_COPY_OCTET_SEQUENCES */ #if defined (ACE_HAS_EXCEPTIONS) # define TAO_HAS_EXCEPTIONS |