[Kst] branches/work/kst/kst1kde4/kst/src/libkst

Peter Kümmel syntheticpp at gmx.net
Fri Nov 20 18:49:06 CET 2009


Replacing sharedptr.h by

#include <QSharedPointer>
#define SharedPtr QSharedPointer

and removing all inheritance from Shared kills really much.
The whole hierarchy is in question.

Peter


Peter Kümmel wrote:
> Now I realize, sharedptr.h is only to implement a thread save smart pointer,
> with the disadvantage that a class which SharedPtr points to must inherit from
> Shared. So sharedptr.h could be completely replaced by QSharedPointer.
> 
> I also have the impression often the only feature used from Object is the
> memory management, so I wonder if we couldn't remove inheritance of Object
> at several classes, because QSharedPointer works with any class.
> 
> Peter
> 
> 
> Barth Netterfield wrote:
>> 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
>>>
>> _______________________________________________
>> Kst mailing list
>> Kst at kde.org
>> https://mail.kde.org/mailman/listinfo/kst
>>
> _______________________________________________
> Kst mailing list
> Kst at kde.org
> https://mail.kde.org/mailman/listinfo/kst
> 


More information about the Kst mailing list