summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-02-07 02:30:40 +0000
committercoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-02-07 02:30:40 +0000
commit36a0bb676e6161c52923b89dca7bb2ad1b01df99 (patch)
tree152cbd3f60bb5e872f25c218153af6a529bc364f
parent631132c123bf5e711f797be399778e3da5975d2c (diff)
downloadATCD-36a0bb676e6161c52923b89dca7bb2ad1b01df99.tar.gz
ChangeLogTag:Sat Feb 6 19:56:27 1999 Carlos O'Ryan <coryan@cs.wustl.edu>
-rw-r--r--TAO/ChangeLog-99c12
-rw-r--r--TAO/tao/CDR.cpp172
-rw-r--r--TAO/tao/CDR.h68
-rw-r--r--TAO/tao/CDR.i275
-rw-r--r--TAO/tao/orbconf.h4
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