+20 years ago, the (good) Taligent crossplatform project, in its guideline, 
proposed:

adopt() aka "take ownership"

orphan() aka "release ownership"

Philippe

On Fri, 19 Jan 2018 16:09:21 +0000
Jaroslaw Kobus <jaroslaw.ko...@qt.io> wrote:

> "give" may be confused with "get", which is usually an accessor. I may also 
> think "Am I giving (to QCoreApplication)" or "The QCoreApplication is giving 
> (me)". Maybe it is just a matter of the other verb? Absorb, hand over, hand 
> on, suck in, swallow...
>  
>  
>  Jarek
>  
>  
>  
> ------------------------------------------------------------
> From: Development <development-bounces+jaroslaw.kobus=qt...@qt-project.org> 
> on behalf of Jesus Fernandez <jesus.fernan...@qt.io>
>  Sent: Friday, January 19, 2018 4:15:52 PM
>  To: development@qt-project.org
>  Subject: [Development] Setters: Clarifying the ownership 
>  
>  
>  Hi all!
>  
>  I always found something annoying in the Qt API. The problem comes with the 
> setters of our properties. When I want to pass an object to a property I 
> never know if I need to take care of the object or relay on parenting system 
> to avoid memory leaks.
>  To know if the object is going to be reparented, I open the assistant and 
> look for the setter to try to find the famous "takes ownership of" in the 
> function description. 
>  
>  Mårten Nordheim and I were talking about possible solutions to this problem. 
> Typical things came to the discussion:
>  - adding a macro like Q_TAKES_OWNERSHIP to the function that expands to 
> nothing
>  - wrapping the parameters with a template class (gsl::owner<T>)
>  - ...
>  
>  After some discussion he came with the idea of add a different "verb" to the 
> setter, replace "set" with "give". So when we are giving the ownership of an 
> object to instead of setSomething(&object); we will write 
> giveSomething(&object); I really like this solution, it will improve a lot 
> the readability of the client (and internal) code.
>  
>  For example: QCoreApplication::setEventDispatcher will be 
> QCoreApplication::giveEventDispatcher. 
>  Of course at the beginning this will be a new function and the old set* 
> functions will be kept, but marked as deprecated.
>  
>  
>  -- 
>  Best regards,
>  Jesús
>  


_______________________________________________
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to