[Kst] branches/work/kst/kst1kde4/kst/src/libkst
Barth Netterfield
netterfield at astro.utoronto.ca
Fri Nov 20 15:31:59 CET 2009
http://labs.trolltech.com/blogs/2009/08/25/count-with-me-how-many-smart-
pointer-classes-does-qt-have/
I *think* we are OK with QSharedPointer for Kst::Object as long as we make
sure that every Kst::Object that gets created is only pointed to by a
QSharedPointer (and never a normal pointer). And this is good policy anyway.
In this case, we would never call delete on a Kst::Object - QSharedPointer
takes care of that for us.
The QExplicitlySharedPtr class is used for sharing data, not pointers. I
don't see any use case for copy-on-write for Kst::Object (in fact, copy
contstuctors aren't even defined). So in principle, they would work - but I
think at this point we will be much happier with QSharedPointers, as long as
we follow the simple rule: No Kst::Object *s anywhere!
This won't work for Kst::ViewItem, unfortunately, since these are all held by
the QGraphicsItem class as plain pointers... so, no smart pointers for
Kst::ViewItems at this point.
cbn
On Thursday 19 November 2009 12:49:12 Peter Kümmel wrote:
> Barth Netterfield wrote:
> > On November 19, 2009 11:43:27 am Peter Kümmel wrote:
> >> do we need the 'Explicitly' version?
> >
> > Explicitly shared objects inherit from a class which keeps track of their
> > usage counts internally. With QShared, the pointer itself keeps tack of
> > usage - which is harder to manage.
> >
> > cbn
>
> I know the Qt's classes where QSharedData is used to implement
> shared data classes.
> Implicit or "copy on write" classes, like most of Qt's classes, use
> QSharedDataPointer internally, classes which do not support "copy
> on write" and
> where you have to detach manually (explicit) uses
> QExplicitlySharedDataPointer internally:
> http://doc.qt.nokia.com/4.6-snapshot/qshareddata.html
>
> For reference counting there is QSharedPointer.
>
> We should map kst's classes to Qt's classes, and therefore the
> question:
> Do we need shared data objects where we have to call detach() or
> is "copy on write"
> enough. "copy on write" is less error prone because you could not
> forget to call
> detach.
>
> Peter
> _______________________________________________
> Kst mailing list
> Kst at kde.org
> https://mail.kde.org/mailman/listinfo/kst
>
More information about the Kst
mailing list