summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TAO/ChangeLog-98c20
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface.cpp3
-rw-r--r--TAO/tao/Any.cpp158
-rw-r--r--TAO/tao/POAS.cpp14
4 files changed, 160 insertions, 35 deletions
diff --git a/TAO/ChangeLog-98c b/TAO/ChangeLog-98c
index 6aca206aa76..17464246e2b 100644
--- a/TAO/ChangeLog-98c
+++ b/TAO/ChangeLog-98c
@@ -1,8 +1,26 @@
+Thu Apr 16 10:31:53 1998 Aniruddha Gokhale <gokhale@mambo.cs.wustl.edu>
+
+ * TAO_IDL/be/be_visitor_interface.cpp: I had forgotten to generate
+ a "return TRUE" statement in the code for the >>= operator on
+ interfaces.
+
+ * TAO/tao/Any.cpp: All the basic >>= operators were using plain
+ casts. However, according to the new strategy, if the Any owns the
+ value, then it is a CDR stream. So we make this distinction in the
+ code.
+
+ * TAO/tao/POAS.cpp: In the initialization section of a number of
+ skeleton class constructors, we were initializing
+ _tao_collocated_Policy without specifying its fully scoped name
+ which happens to be POA_CORBA::_tao_collated_Policy. g++ was
+ complaining. However, it remains to be seen if MSVC++ accepts this
+ new style.
+
Thu Apr 16 10:10:16 1998 Michael Kircher <mk1@cs.wustl.edu>
* tests\Quoter\Quoter_Impl.cpp: Improved the move operation
* tests\Quoter\client.{h,cpp}: Using the move operation
- Status: Bootstraping and moving of Lifecycle Objects works.
+ Status: Bootstraping and moving of Lifecycle Objects works.
Thu Apr 16 08:36:16 1998 David L. Levine <levine@cs.wustl.edu>
diff --git a/TAO/TAO_IDL/be/be_visitor_interface.cpp b/TAO/TAO_IDL/be/be_visitor_interface.cpp
index 5d391f6766b..b8f13291a1d 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface.cpp
@@ -1017,7 +1017,8 @@ be_visitor_interface_cs::visit_interface (be_interface *node)
<< be_nl
<< "CORBA::release (_tao_obj);" << be_nl
<< "if (_tao_env.exception ()) return 0; // narrow failed" << be_uidt_nl
- << "}" << be_uidt_nl
+ << "}" << be_nl
+ << "return 1;" << be_uidt_nl
<< "}\n\n";
os->indent ();
diff --git a/TAO/tao/Any.cpp b/TAO/tao/Any.cpp
index eca416a0bc1..e40adc54d3a 100644
--- a/TAO/tao/Any.cpp
+++ b/TAO/tao/Any.cpp
@@ -290,8 +290,16 @@ CORBA_Any::operator>>= (CORBA::Short &s) const
if (this->type_->equal (CORBA::_tc_short, env))
{
- s = *(CORBA::Short *) this->value_;
- return CORBA::B_TRUE;
+ if (this->any_owns_data_)
+ {
+ TAO_InputCDR stream ((ACE_Message_Block *) this->value_);
+ return stream.read_short (s);
+ }
+ else
+ {
+ s = *(CORBA::Short *) this->value_;
+ return CORBA::B_TRUE;
+ }
}
else
return CORBA::B_FALSE;
@@ -304,8 +312,16 @@ CORBA_Any::operator>>= (CORBA::UShort &s) const
if (this->type_->equal (CORBA::_tc_ushort, env))
{
- s = *(CORBA::UShort *) this->value_;
- return CORBA::B_TRUE;
+ if (this->any_owns_data_)
+ {
+ TAO_InputCDR stream ((ACE_Message_Block *) this->value_);
+ return stream.read_ushort (s);
+ }
+ else
+ {
+ s = *(CORBA::UShort *) this->value_;
+ return CORBA::B_TRUE;
+ }
}
else
return CORBA::B_FALSE;
@@ -318,8 +334,16 @@ CORBA_Any::operator>>= (CORBA::Long &l) const
if (this->type_->equal (CORBA::_tc_long, env))
{
- l = *(CORBA::Long *) this->value_;
- return CORBA::B_TRUE;
+ if (this->any_owns_data_)
+ {
+ TAO_InputCDR stream ((ACE_Message_Block *) this->value_);
+ return stream.read_long (l);
+ }
+ else
+ {
+ l = *(CORBA::Long *) this->value_;
+ return CORBA::B_TRUE;
+ }
}
else
return CORBA::B_FALSE;
@@ -332,8 +356,16 @@ CORBA_Any::operator>>= (CORBA::ULong &l) const
if (this->type_->equal (CORBA::_tc_ulong, env))
{
- l = *(CORBA::ULong *) this->value_;
- return CORBA::B_TRUE;
+ if (this->any_owns_data_)
+ {
+ TAO_InputCDR stream ((ACE_Message_Block *) this->value_);
+ return stream.read_ulong (l);
+ }
+ else
+ {
+ l = *(CORBA::ULong *) this->value_;
+ return CORBA::B_TRUE;
+ }
}
else
return CORBA::B_FALSE;
@@ -346,8 +378,16 @@ CORBA_Any::operator>>= (CORBA::Float &f) const
if (this->type_->equal (CORBA::_tc_float, env))
{
- f = *(CORBA::Float *) this->value_;
- return CORBA::B_TRUE;
+ if (this->any_owns_data_)
+ {
+ TAO_InputCDR stream ((ACE_Message_Block *) this->value_);
+ return stream.read_float (f);
+ }
+ else
+ {
+ f = *(CORBA::Float *) this->value_;
+ return CORBA::B_TRUE;
+ }
}
else
return CORBA::B_FALSE;
@@ -360,8 +400,16 @@ CORBA_Any::operator>>= (CORBA::Double &d) const
if (this->type_->equal (CORBA::_tc_double, env))
{
- d = *(CORBA::Double *) this->value_;
- return CORBA::B_TRUE;
+ if (this->any_owns_data_)
+ {
+ TAO_InputCDR stream ((ACE_Message_Block *) this->value_);
+ return stream.read_double (d);
+ }
+ else
+ {
+ d = *(CORBA::Double *) this->value_;
+ return CORBA::B_TRUE;
+ }
}
else
return CORBA::B_FALSE;
@@ -374,8 +422,17 @@ CORBA_Any::operator>>= (CORBA::Any &a) const
if (this->type_->equal (CORBA::_tc_any, env))
{
- a = *(CORBA::Any *) this->value_;
- return CORBA::B_TRUE;
+ if (this->any_owns_data_)
+ {
+ TAO_InputCDR stream ((ACE_Message_Block *) this->value_);
+ return (stream.decode (CORBA::_tc_any, &a, 0, env)
+ == CORBA::TypeCode::TRAVERSE_CONTINUE) ? 1 : 0;
+ }
+ else
+ {
+ a = *(CORBA::Any *) this->value_;
+ return CORBA::B_TRUE;
+ }
}
else
return CORBA::B_FALSE;
@@ -388,8 +445,16 @@ CORBA_Any::operator>>= (char *&s) const
if (this->type_->equal (CORBA::_tc_string, env))
{
- s = *(char **) this->value_;
- return CORBA::B_TRUE;
+ if (this->any_owns_data_)
+ {
+ TAO_InputCDR stream ((ACE_Message_Block *) this->value_);
+ return stream.read_string (s);
+ }
+ else
+ {
+ s = *(char **) this->value_;
+ return CORBA::B_TRUE;
+ }
}
else
return CORBA::B_FALSE;
@@ -404,8 +469,16 @@ CORBA_Any::operator>>= (to_boolean b) const
if (this->type_->equal (CORBA::_tc_boolean, env))
{
- b.ref_ = *(CORBA::Boolean *) this->value_;
- return CORBA::B_TRUE;
+ if (this->any_owns_data_)
+ {
+ TAO_InputCDR stream ((ACE_Message_Block *) this->value_);
+ return stream.read_boolean (b.ref_);
+ }
+ else
+ {
+ b.ref_ = *(CORBA::Boolean *) this->value_;
+ return CORBA::B_TRUE;
+ }
}
else
return CORBA::B_FALSE;
@@ -418,8 +491,16 @@ CORBA_Any::operator>>= (to_octet o) const
if (this->type_->equal (CORBA::_tc_octet, env))
{
- o.ref_ = *(CORBA::Octet *) this->value_;
- return CORBA::B_TRUE;
+ if (this->any_owns_data_)
+ {
+ TAO_InputCDR stream ((ACE_Message_Block *) this->value_);
+ return stream.read_octet (o.ref_);
+ }
+ else
+ {
+ o.ref_ = *(CORBA::Octet *) this->value_;
+ return CORBA::B_TRUE;
+ }
}
else
return CORBA::B_FALSE;
@@ -432,8 +513,16 @@ CORBA_Any::operator>>= (to_char c) const
if (this->type_->equal (CORBA::_tc_char, env))
{
- c.ref_ = *(CORBA::Char *) this->value_;
- return CORBA::B_TRUE;
+ if (this->any_owns_data_)
+ {
+ TAO_InputCDR stream ((ACE_Message_Block *) this->value_);
+ return stream.read_char (c.ref_);
+ }
+ else
+ {
+ c.ref_ = *(CORBA::Char *) this->value_;
+ return CORBA::B_TRUE;
+ }
}
else
return CORBA::B_FALSE;
@@ -452,8 +541,16 @@ CORBA_Any::operator>>= (to_string s) const
CORBA::ULong bound = this->type_->length (env);
if (s.bound_ == bound) // bounds are same
{
- s.val_ = *(char **) this->value_;
- return CORBA::B_TRUE;
+ if (this->any_owns_data_)
+ {
+ TAO_InputCDR stream ((ACE_Message_Block *) this->value_);
+ return stream.read_string (s.val_);
+ }
+ else
+ {
+ s.val_ = *(char **) this->value_;
+ return CORBA::B_TRUE;
+ }
}
}
@@ -468,8 +565,17 @@ CORBA_Any::operator>>= (to_object obj) const
if (this->type_->equal (CORBA::_tc_Object, env))
{
- obj.ref_ = *(CORBA::Object_ptr *) this->value_;
- return CORBA::B_TRUE;
+ if (this->any_owns_data_)
+ {
+ TAO_InputCDR stream ((ACE_Message_Block *) this->value_);
+ return (stream.decode (CORBA::_tc_Object, &obj.ref_, 0, env)
+ == CORBA::TypeCode::TRAVERSE_CONTINUE) ? 1 : 0;
+ }
+ else
+ {
+ obj.ref_ = *(CORBA::Object_ptr *) this->value_;
+ return CORBA::B_TRUE;
+ }
}
else
return CORBA::B_FALSE;
diff --git a/TAO/tao/POAS.cpp b/TAO/tao/POAS.cpp
index b4f087d5356..c7c9968b68b 100644
--- a/TAO/tao/POAS.cpp
+++ b/TAO/tao/POAS.cpp
@@ -278,7 +278,7 @@ POA_PortableServer::_tao_collocated_ThreadPolicy::_tao_collocated_ThreadPolicy (
STUB_Object *stub
)
: ACE_NESTED_CLASS (PortableServer, ThreadPolicy) (stub, servant, CORBA::B_TRUE),
- _tao_collocated_Policy (servant, stub),
+ POA_CORBA::_tao_collocated_Policy (servant, stub),
CORBA_Object (stub, servant, CORBA::B_TRUE),
servant_ (servant)
{
@@ -480,7 +480,7 @@ POA_PortableServer::_tao_collocated_LifespanPolicy::_tao_collocated_LifespanPoli
STUB_Object *stub
)
: ACE_NESTED_CLASS (PortableServer, LifespanPolicy) (stub, servant, CORBA::B_TRUE),
- _tao_collocated_Policy (servant, stub),
+ POA_CORBA::_tao_collocated_Policy (servant, stub),
CORBA_Object (stub, servant, CORBA::B_TRUE),
servant_ (servant)
{
@@ -681,7 +681,7 @@ POA_PortableServer::_tao_collocated_IdUniquenessPolicy::_tao_collocated_IdUnique
STUB_Object *stub
)
: ACE_NESTED_CLASS (PortableServer, IdUniquenessPolicy) (stub, servant, CORBA::B_TRUE),
- _tao_collocated_Policy (servant, stub),
+ POA_CORBA::_tao_collocated_Policy (servant, stub),
CORBA_Object (stub, servant, CORBA::B_TRUE),
servant_ (servant)
{
@@ -882,7 +882,7 @@ POA_PortableServer::_tao_collocated_IdAssignmentPolicy::_tao_collocated_IdAssign
STUB_Object *stub
)
: ACE_NESTED_CLASS (PortableServer, IdAssignmentPolicy) (stub, servant, CORBA::B_TRUE),
- _tao_collocated_Policy (servant, stub),
+ POA_CORBA::_tao_collocated_Policy (servant, stub),
CORBA_Object (stub, servant, CORBA::B_TRUE),
servant_ (servant)
{
@@ -1083,7 +1083,7 @@ POA_PortableServer::_tao_collocated_ImplicitActivationPolicy::_tao_collocated_Im
STUB_Object *stub
)
: ACE_NESTED_CLASS (PortableServer, ImplicitActivationPolicy) (stub, servant, CORBA::B_TRUE),
- _tao_collocated_Policy (servant, stub),
+ POA_CORBA::_tao_collocated_Policy (servant, stub),
CORBA_Object (stub, servant, CORBA::B_TRUE),
servant_ (servant)
{
@@ -1284,7 +1284,7 @@ POA_PortableServer::_tao_collocated_ServantRetentionPolicy::_tao_collocated_Serv
STUB_Object *stub
)
: ACE_NESTED_CLASS (PortableServer, ServantRetentionPolicy) (stub, servant, CORBA::B_TRUE),
- _tao_collocated_Policy (servant, stub),
+ POA_CORBA::_tao_collocated_Policy (servant, stub),
CORBA_Object (stub, servant, CORBA::B_TRUE),
servant_ (servant)
{
@@ -1485,7 +1485,7 @@ POA_PortableServer::_tao_collocated_RequestProcessingPolicy::_tao_collocated_Req
STUB_Object *stub
)
: ACE_NESTED_CLASS (PortableServer, RequestProcessingPolicy) (stub, servant, CORBA::B_TRUE),
- _tao_collocated_Policy (servant, stub),
+ POA_CORBA::_tao_collocated_Policy (servant, stub),
CORBA_Object (stub, servant, CORBA::B_TRUE),
servant_ (servant)
{