diff options
-rw-r--r-- | TAO/ChangeLog-98c | 20 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_interface.cpp | 3 | ||||
-rw-r--r-- | TAO/tao/Any.cpp | 158 | ||||
-rw-r--r-- | TAO/tao/POAS.cpp | 14 |
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) { |