Thread overview
Smart pointers, RAII and custom deleters
Nov 10, 2004
Adi Shavit
Nov 10, 2004
Pablo Aguilar
Nov 11, 2004
Matthew
Dec 14, 2004
Matthew
Mar 01, 2005
Matthew
November 10, 2004
Hi,


Though not exactly related to STLSoft (yet?) I'm posting this here after posting it to c++mod, maybe you'll have some insights for me.

  I frequently find myself having to use C based APIs to allocate and
deallocated resources. Using these APIs requires remembering to
deallocate all the resources through special deallocation functions
(not to mention exception safety). I would really like a general
"smart pointer/resource" or raii_ptr<> class that I can access as a
regular pointer and that accepts a custom deallocator.

Though boost::shared_ptr might suffice, it seems to convay the wrong message since these resources are generally noncopyable nor sharable. All I really need is scope_ptr with a custom deleter.


I was wondering why boost::scoped_ptr does not support custom deleters. Is there a rational behind this?


In this article (http://www.artima.com/cppsource/bigtwo3.html#refs), Bjorn Karlsson and Matthew Wilson propose such a hypothetical RAII class for demonstration purposes. Does anyone know of a more production-level implementation of such an idea?


Thanks,
Adi


November 10, 2004
I asked something along these lines some time ago here...

I remember two things:
1) Loki's SmartPtr has a StoragePolicy, which, when customized allows you to
also cutomize the deallocation process
2) Matthew said he'd do his lightweight compiler-friendly version some time
in the future though he's always lacking time...

Someone else said he'd come up with a quick way to do it using Loki's SmartPtr, though I can't seem to find the post in the newsgroup, sorry...


"Adi Shavit" <adish@gentech.co.il> wrote in message news:cmtsrp$1cm$1@digitaldaemon.com...
> Hi,
>
>
> Though not exactly related to STLSoft (yet?) I'm posting this here after posting it to c++mod, maybe you'll have some insights for me.
>
>  I frequently find myself having to use C based APIs to allocate and
> deallocated resources. Using these APIs requires remembering to
> deallocate all the resources through special deallocation functions
> (not to mention exception safety). I would really like a general
> "smart pointer/resource" or raii_ptr<> class that I can access as a
> regular pointer and that accepts a custom deallocator.
>
> Though boost::shared_ptr might suffice, it seems to convay the wrong message since these resources are generally noncopyable nor sharable. All I really need is scope_ptr with a custom deleter.
>
>
> I was wondering why boost::scoped_ptr does not support custom deleters. Is there a rational behind this?
>
>
> In this article (http://www.artima.com/cppsource/bigtwo3.html#refs), Bjorn Karlsson and Matthew Wilson propose such a hypothetical RAII class for demonstration purposes. Does anyone know of a more production-level implementation of such an idea?
>
>
> Thanks,
> Adi


November 11, 2004
Mind readers!!

Only last night I was using my raii class (in the as yet unreleased stlsoft/raii.hpp file), and pondering the really nicest way to do these things. The one I've curerntly got is not very pretty (hence the fact that I've not shared it with the world as yet).

FYI: I'm currently working 14hrs a day for my current client - who'd have thought real work could be so hard after spending two years writing a book! ;)  - but as soon as that's over in about 3 weeks I'll be catching up on many things for a couple of months, including this and other STLSoft issues

Bjorn's got the flu at the moment, but I'll send him a heartless email telling him to start thinking about this stuff while he whiles away the hours feeling sorry for himself. :-)

Cheers

Matthew


"Pablo Aguilar" <paguilarg@hotmail.com> wrote in message news:cmu0hb$6ca$1@digitaldaemon.com...
> I asked something along these lines some time ago here...
>
> I remember two things:
> 1) Loki's SmartPtr has a StoragePolicy, which, when customized allows
you to
> also cutomize the deallocation process
> 2) Matthew said he'd do his lightweight compiler-friendly version some
time
> in the future though he's always lacking time...
>
> Someone else said he'd come up with a quick way to do it using Loki's SmartPtr, though I can't seem to find the post in the newsgroup,
sorry...
>
>
> "Adi Shavit" <adish@gentech.co.il> wrote in message news:cmtsrp$1cm$1@digitaldaemon.com...
> > Hi,
> >
> >
> > Though not exactly related to STLSoft (yet?) I'm posting this here
after
> > posting it to c++mod, maybe you'll have some insights for me.
> >
> >  I frequently find myself having to use C based APIs to allocate and
> > deallocated resources. Using these APIs requires remembering to
> > deallocate all the resources through special deallocation functions
> > (not to mention exception safety). I would really like a general
> > "smart pointer/resource" or raii_ptr<> class that I can access as a
> > regular pointer and that accepts a custom deallocator.
> >
> > Though boost::shared_ptr might suffice, it seems to convay the wrong message since these resources are generally noncopyable nor
sharable.
> > All I really need is scope_ptr with a custom deleter.
> >
> >
> > I was wondering why boost::scoped_ptr does not support custom deleters. Is there a rational behind this?
> >
> >
> > In this article (http://www.artima.com/cppsource/bigtwo3.html#refs), Bjorn Karlsson and Matthew Wilson propose such a hypothetical RAII class for demonstration purposes. Does anyone know of a more production-level implementation of such an idea?
> >
> >
> > Thanks,
> > Adi
>
>


December 14, 2004
Just to let you know, I've got this sorted and it'll be out in 1.8.3 (which I hope to release within the next fortnight).

FYI: Bjorn Karlsson and I are planning a mini series on smart pointers in our Smart Pointers column (for The C++ Source), and there are going to be quite a few new (or revamped) smart pointers appearing in STLSoft soon as a consequence.



"Matthew" <admin@stlsoft.dot.dot.dot.dot.org> wrote in message news:cmv2rg$1ka4$1@digitaldaemon.com...
> Mind readers!!
>
> Only last night I was using my raii class (in the as yet unreleased stlsoft/raii.hpp file), and pondering the really nicest way to do these things. The one I've curerntly got is not very pretty (hence the fact that I've not shared it with the world as yet).
>
> FYI: I'm currently working 14hrs a day for my current client - who'd have thought real work could be so hard after spending two years writing a book! ;)  - but as soon as that's over in about 3 weeks I'll be catching up on many things for a couple of months, including this and other STLSoft issues
>
> Bjorn's got the flu at the moment, but I'll send him a heartless email telling him to start thinking about this stuff while he whiles away the hours feeling sorry for himself. :-)
>
> Cheers
>
> Matthew
>
>
> "Pablo Aguilar" <paguilarg@hotmail.com> wrote in message news:cmu0hb$6ca$1@digitaldaemon.com...
>> I asked something along these lines some time ago here...
>>
>> I remember two things:
>> 1) Loki's SmartPtr has a StoragePolicy, which, when customized allows
> you to
>> also cutomize the deallocation process
>> 2) Matthew said he'd do his lightweight compiler-friendly version some
> time
>> in the future though he's always lacking time...
>>
>> Someone else said he'd come up with a quick way to do it using Loki's SmartPtr, though I can't seem to find the post in the newsgroup,
> sorry...
>>
>>
>> "Adi Shavit" <adish@gentech.co.il> wrote in message news:cmtsrp$1cm$1@digitaldaemon.com...
>> > Hi,
>> >
>> >
>> > Though not exactly related to STLSoft (yet?) I'm posting this here
> after
>> > posting it to c++mod, maybe you'll have some insights for me.
>> >
>> >  I frequently find myself having to use C based APIs to allocate and
>> > deallocated resources. Using these APIs requires remembering to
>> > deallocate all the resources through special deallocation functions
>> > (not to mention exception safety). I would really like a general
>> > "smart pointer/resource" or raii_ptr<> class that I can access as a
>> > regular pointer and that accepts a custom deallocator.
>> >
>> > Though boost::shared_ptr might suffice, it seems to convay the wrong message since these resources are generally noncopyable nor
> sharable.
>> > All I really need is scope_ptr with a custom deleter.
>> >
>> >
>> > I was wondering why boost::scoped_ptr does not support custom deleters. Is there a rational behind this?
>> >
>> >
>> > In this article (http://www.artima.com/cppsource/bigtwo3.html#refs), Bjorn Karlsson and Matthew Wilson propose such a hypothetical RAII class for demonstration purposes. Does anyone know of a more production-level implementation of such an idea?
>> >
>> >
>> > Thanks,
>> > Adi
>>
>>
>
> 


March 01, 2005
This is now available in 1.8.3 beta 1. It's scoped_handle, in inprogress/stlsoft/scoped_handle.hpp

Please consult the release notes about the directory structure / dependencies stuff

"Matthew" <admin.hat@stlsoft.dot.org> wrote in message news:cpmfi2$1agd$1@digitaldaemon.com...
> Just to let you know, I've got this sorted and it'll be out in 1.8.3 (which I hope to release within the next fortnight).
>
> FYI: Bjorn Karlsson and I are planning a mini series on smart pointers in our Smart Pointers column (for The C++ Source), and there are going to be quite a few new (or revamped) smart pointers appearing in STLSoft soon as a consequence.
>
>
>
> "Matthew" <admin@stlsoft.dot.dot.dot.dot.org> wrote in message news:cmv2rg$1ka4$1@digitaldaemon.com...
>> Mind readers!!
>>
>> Only last night I was using my raii class (in the as yet unreleased
>> stlsoft/raii.hpp file), and pondering the really nicest way to do
>> these
>> things. The one I've curerntly got is not very pretty (hence the fact
>> that I've not shared it with the world as yet).
>>
>> FYI: I'm currently working 14hrs a day for my current client - who'd
>> have thought real work could be so hard after spending two years
>> writing
>> a book! ;)  - but as soon as that's over in about 3 weeks I'll be
>> catching up on many things for a couple of months, including this and
>> other STLSoft issues
>>
>> Bjorn's got the flu at the moment, but I'll send him a heartless
>> email
>> telling him to start thinking about this stuff while he whiles away
>> the
>> hours feeling sorry for himself. :-)
>>
>> Cheers
>>
>> Matthew
>>
>>
>> "Pablo Aguilar" <paguilarg@hotmail.com> wrote in message news:cmu0hb$6ca$1@digitaldaemon.com...
>>> I asked something along these lines some time ago here...
>>>
>>> I remember two things:
>>> 1) Loki's SmartPtr has a StoragePolicy, which, when customized
>>> allows
>> you to
>>> also cutomize the deallocation process
>>> 2) Matthew said he'd do his lightweight compiler-friendly version
>>> some
>> time
>>> in the future though he's always lacking time...
>>>
>>> Someone else said he'd come up with a quick way to do it using
>>> Loki's
>>> SmartPtr, though I can't seem to find the post in the newsgroup,
>> sorry...
>>>
>>>
>>> "Adi Shavit" <adish@gentech.co.il> wrote in message news:cmtsrp$1cm$1@digitaldaemon.com...
>>> > Hi,
>>> >
>>> >
>>> > Though not exactly related to STLSoft (yet?) I'm posting this here
>> after
>>> > posting it to c++mod, maybe you'll have some insights for me.
>>> >
>>> >  I frequently find myself having to use C based APIs to allocate
>>> > and
>>> > deallocated resources. Using these APIs requires remembering to
>>> > deallocate all the resources through special deallocation
>>> > functions
>>> > (not to mention exception safety). I would really like a general
>>> > "smart pointer/resource" or raii_ptr<> class that I can access as
>>> > a
>>> > regular pointer and that accepts a custom deallocator.
>>> >
>>> > Though boost::shared_ptr might suffice, it seems to convay the
>>> > wrong
>>> > message since these resources are generally noncopyable nor
>> sharable.
>>> > All I really need is scope_ptr with a custom deleter.
>>> >
>>> >
>>> > I was wondering why boost::scoped_ptr does not support custom deleters. Is there a rational behind this?
>>> >
>>> >
>>> > In this article
>>> > (http://www.artima.com/cppsource/bigtwo3.html#refs),
>>> > Bjorn Karlsson and Matthew Wilson propose such a hypothetical RAII
>>> > class for demonstration purposes. Does anyone know of a more
>>> > production-level implementation of such an idea?
>>> >
>>> >
>>> > Thanks,
>>> > Adi
>>>
>>>
>>
>>
>
>