You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by "Michael Yoder (JIRA)" <tu...@ws.apache.org> on 2007/08/07 22:51:59 UTC

[jira] Updated: (TUSCANY-1376) C++ SDO spec portability: RefCountingPointer

     [ https://issues.apache.org/jira/browse/TUSCANY-1376?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Michael Yoder updated TUSCANY-1376:
-----------------------------------

    Attachment: TUSCANY-1376.txt

This patch removes the implicit conversion to dumb pointer in RefCountingPointer (still available via the helper function getRawPointer()). It also adds some additional operators and helper functions, including a safe conversion to bool for use with if expressions. Some addition unit tests are added, and some smart pointer cleanup is included.

> C++ SDO spec portability: RefCountingPointer
> --------------------------------------------
>
>                 Key: TUSCANY-1376
>                 URL: https://issues.apache.org/jira/browse/TUSCANY-1376
>             Project: Tuscany
>          Issue Type: Bug
>          Components: C++ SDO, C++ Specification
>    Affects Versions: Cpp-M3
>         Environment: all platforms
>            Reporter: Michael Yoder
>             Fix For: Cpp-Next
>
>         Attachments: TUSCANY-1376.txt
>
>
> Tuscany  C++ SDO class RefCounting pointer has the member function:
> operator T*() {return pointee;}
> which expose the raw dumb pointer for SDO classes (for the common use of smart pointers). This member function is used by SCA, and raises undesirable object lifetime and allowed operation issues. The member function should be replaced with a safe (referenced in the below -email thread) conversion to bool member function.
> -----Original Message-----
> From: Pete Robbins [mailto:robbinspg@googlemail.com] 
> Sent: Friday, June 22, 2007 6:16 AM
> To: tuscany-dev@ws.apache.org
> Subject: Re: C++ SDO spec portability: RefCountingPointer
> Michael, I strongly suspect that the operator T*() ws put in for a good reason. It may be a good idea to remove this but it may be non-trivial.
> The ostream operator << is very useful and there is a default implementation in RefCountingObject so that objects inheriting from RefCounting object do not need to implement anything... but they can if appropriate.
> You are raising a lot if issues which is great and it would be excellent to get Tuscany SDO up to 2.1 spec level. I suspect there will be hundreds of issues some of which may require large re-writes/refactoring of the Tuscany SDO Code!! Raising these as Jiras is the best thing to do so we can track them. Helping fix them by submitting patches would be even better ;-)
> Cheers,
> On 22/06/07, Michael Yoder <yo...@roguewave.com> wrote:
> >
> > Hi,
> >
> > In looking at C++ SDO portabilty, we found the the Tuscany C++ SDO 
> > class RefCountingPointer has functions used externally by SCA:
> >
> >        operator T*() {return pointee;}
> >        friend std::ostream& operator<< (std::ostream &os, const 
> > RefCountingPointer<T>& ptr)
> >
> > It looks like the conversion to T* function may have been put in 
> > originally as a porting alternative to a member function template, but 
> > may not be needed any more since the member template is now included 
> > outside the #ifdef.
> >
> > Exposing the dumb pointer is undesirable since it raises object 
> > lifetime issues and allows other unwanted operations. Having a 
> > conversion to bool is convenient however, and can be implemented 
> > safely using a member function pointer trick (see:
> > http://www.artima.com/cppsource/safebool.html).
> >
> > The shift operator also seems undesireable since it places a burden on 
> > all classes which use smart pointers to implement toString 
> > functionality.
> >
> > How does it sound to raise a Jira to have these member functions 
> > removed?
> >
> > Thanks,
> > Michael Yoder
> > Rogue Wave Software - yoder@roguewave.com Software Developer - 
> > HydraSDO
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
> > For additional commands, e-mail: tuscany-dev-help@ws.apache.org
> >
> >
> --
> Pete

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org