Thread: [orbitcpp-list] Re: orbitcpp-list digest, Vol 1 #177 - 1 msg
Status: Beta
Brought to you by:
philipd
From: John L. <jk...@lu...> - 2001-03-07 23:06:30
|
> Message: 1 > Date: Wed, 7 Mar 2001 14:23:46 +0100 > From: MHL...@t-... (Martin Schulze) > To: orb...@li... > Subject: Re: [orbitcpp-list] support for sequence<any> broken in orbitcpp-0.30 > Reply-To: orb...@li... [...] > inline void operator<<=(CORBA::Any& the_any, ::CorbaSigC::Slot_ptr* val) { > the_any.insert_simple( (CORBA::TypeCode_ptr)&::_orbitcpp::c::TC_CorbaSigC_Slot_struct, > val, CORBA_FALSE); > } > > inline void operator<<=(CORBA::Any& the_any, ::CorbaSigC::Slot_ptr val) { > the_any.insert_simple( (CORBA::TypeCode_ptr)&::_orbitcpp::c::TC_CorbaSigC_Slot_struct, > &val); > } > > inline CORBA::Boolean operator>>=(const CORBA::Any& the_any, > ::CorbaSigC::Slot_ptr& val) { > return the_any.extract( (CORBA::TypeCode_ptr)&::_orbitcpp::c::TC_CorbaSigC_Slot_struct, > val); > } > [...] > I attached a simple patch for orbitcpp-0.30 that lets > orbitcpp create the latter code. Please check whether it's > okay and if so feel free to commit to cvs. > > Cu, > > Martin. > Hey everybody. About a month ago I took a job with Handheld Products, A Welch Allyn Affiliate so with that and personal issues I have been unable to do anything with orbitcpp :-(. Anyway, I believe the code as it stands is correct. Referring to page 1-52 to 1-54 of the CORBA C++ spec, there must be a copying and a non-copying form of inserter. The non-copying form means that the Any assumes ownership of the object reference, or structure, and the caller of the inserter should not use the structure ever again, so this implies the use of a non-const pointer. In fact, an Any implementation can destroy the passed structure and recreate it somewhere else if it so desires. Making this emit const* would violate compliance I believe. John |
From: <MHL...@t-...> - 2001-03-08 10:48:25
|
On Don, 08 Mär 2001 00:09:39 John Luebs wrote: > > > Message: 1 > > Date: Wed, 7 Mar 2001 14:23:46 +0100 > > From: MHL...@t-... (Martin Schulze) > > To: orb...@li... > > Subject: Re: [orbitcpp-list] support for sequence<any> broken in > orbitcpp-0.30 > > Reply-To: orb...@li... > [...] > > inline void operator<<=(CORBA::Any& the_any, ::CorbaSigC::Slot_ptr* > val) { > > the_any.insert_simple( (CORBA::TypeCode_ptr)&::_orbitcpp::c::TC_CorbaSigC_Slot_struct, > > val, CORBA_FALSE); > > } > > > > inline void operator<<=(CORBA::Any& the_any, ::CorbaSigC::Slot_ptr val) > { > > the_any.insert_simple( (CORBA::TypeCode_ptr)&::_orbitcpp::c::TC_CorbaSigC_Slot_struct, > > &val); > > } > > > > inline CORBA::Boolean operator>>=(const CORBA::Any& the_any, > > ::CorbaSigC::Slot_ptr& val) { > > return the_any.extract( (CORBA::TypeCode_ptr)&::_orbitcpp::c::TC_CorbaSigC_Slot_struct, > > val); > > } > > [...] > > I attached a simple patch for orbitcpp-0.30 that lets > > orbitcpp create the latter code. Please check whether it's > > okay and if so feel free to commit to cvs. > > > > Cu, > > > > Martin. > > > > Hey everybody. > About a month ago I took a job with Handheld Products, A Welch Allyn > Affiliate so with that and personal issues I have been unable to do > anything with orbitcpp :-(. > Anyway, I believe the code as it stands is correct. Referring to page > 1-52 to 1-54 of the CORBA C++ spec, there must be a copying and a > non-copying form of inserter. The non-copying form means that the Any > assumes ownership of the object reference, or structure, and the caller > of the inserter should not use the structure ever again, so this implies > the use of > a non-const pointer. In fact, an Any implementation can destroy the > passed structure and recreate it somewhere else if it so desires. > Making this emit const* would violate compliance I believe. > > John > Oh I'm sorry. Of course the specs always win ... DON'T APPLY THE PATCH ! What do the specs say about the namespace the inserters should be in or not ? My compiler doesn't find them when I try to use them implicitly inside the namespace I think they belong, i.e. the module the structures/interfaces are defined in. I simply can't imagine that they have to be in the global namespace ?! Cu, Martin |
From: <MHL...@t-...> - 2001-03-12 09:58:05
Attachments:
orbitcpp_opany.diff
|
Hi all! Since I didn't get a response to my last mail, here is my second try: The attached patch just inserts one line into file pass_xlate.cc that causes the any inserters and hmhm (language problem: hmhm=opposite of inserter :-)) for structs and interfaces to be placed in the namespace of the module. This was the case in orbitcpp 0.29 and I suppose this is correct. Putting them into the global namespace as orbitcpp 0.30 does at the moment, seems totally unlogical for my compiler and me. Unfortunately I have no idea where to look up the specs quick and what the specs say about my problem. Again please anybody who knows: please check the patch first. Have fun, Martin. On Don, 08 Mär 2001 11:50:47 Martin Schulze wrote: > On Don, 08 Mär 2001 00:09:39 John Luebs wrote: > > > > > Message: 1 > > > Date: Wed, 7 Mar 2001 14:23:46 +0100 > > > From: MHL...@t-... (Martin Schulze) > > > To: orb...@li... > > > Subject: Re: [orbitcpp-list] support for sequence<any> broken in > > orbitcpp-0.30 > > > Reply-To: orb...@li... > > [...] > > > inline void operator<<=(CORBA::Any& the_any, ::CorbaSigC::Slot_ptr* > > val) { > > > the_any.insert_simple( (CORBA::TypeCode_ptr)&::_orbitcpp::c::TC_CorbaSigC_Slot_struct, > > > val, CORBA_FALSE); > > > } > > > > > > inline void operator<<=(CORBA::Any& the_any, ::CorbaSigC::Slot_ptr > val) > > { > > > the_any.insert_simple( (CORBA::TypeCode_ptr)&::_orbitcpp::c::TC_CorbaSigC_Slot_struct, > > > &val); > > > } > > > > > > inline CORBA::Boolean operator>>=(const CORBA::Any& the_any, > > > ::CorbaSigC::Slot_ptr& val) { > > > return the_any.extract( (CORBA::TypeCode_ptr)&::_orbitcpp::c::TC_CorbaSigC_Slot_struct, > > > val); > > > } > > > [...] > > > I attached a simple patch for orbitcpp-0.30 that lets > > > orbitcpp create the latter code. Please check whether it's > > > okay and if so feel free to commit to cvs. > > > > > > Cu, > > > > > > Martin. > > > > > > > Hey everybody. > > About a month ago I took a job with Handheld Products, A Welch Allyn > > Affiliate so with that and personal issues I have been unable to do > > anything with orbitcpp :-(. > > Anyway, I believe the code as it stands is correct. Referring to page > > 1-52 to 1-54 of the CORBA C++ spec, there must be a copying and a > > non-copying form of inserter. The non-copying form means that the Any > > assumes ownership of the object reference, or structure, and the caller > > of the inserter should not use the structure ever again, so this > implies > > the use of > > a non-const pointer. In fact, an Any implementation can destroy the > > passed structure and recreate it somewhere else if it so desires. > > Making this emit const* would violate compliance I believe. > > > > John > > > > Oh I'm sorry. Of course the specs always win ... DON'T APPLY THE PATCH ! > > What do the specs say about the namespace the inserters should be > in or not ? My compiler doesn't find them when I try to use them > implicitly inside the namespace I think they belong, i.e. the module > the structures/interfaces are defined in. I simply can't imagine that > they have to be in the global namespace ?! > > Cu, > > Martin > > > _______________________________________________ > orbitcpp-list mailing list > orb...@li... > http://lists.sourceforge.net/lists/listinfo/orbitcpp-list > |