[C++-sig] Re: Allocating objects on the heap by default.
David Abrahams
dave at boost-consulting.com
Mon Jul 7 21:57:21 CEST 2003
Prabhu Ramachandran <prabhu at aero.iitm.ernet.in> writes:
> Hi,
>
> Clarifying my own misunderstanding after a little more
> experimentation. :)
>
>>>>>> "PR" == Prabhu Ramachandran <prabhu at aero.iitm.ernet.in> writes:
>
> >>> /auto_ptr without having to write a factory function like
> >>> NewObj for every single class?
>
> DA> class_<Obj, std::auto_ptr<Obj> >("Obj") ...
> DA> ;
> DA> does that.
>
> PR> Neat. I missed out looking at class_'s HeldType. This solves
> PR> most of my problems here. Wonderful!
>
> [snip]
>
> PR> Many thanks! For now I'll add overloads to handle an
> PR> auto_ptr<T> and later consider moving to shared_ptr. I still
> PR> need to get a handle on the performance of shared_ptr though.
>
> This approach of overloading the functions will not work with the
> HeldType being set to std::auto_ptr since Boost.Python will still call
> the raw pointer version.
If you register the auto_ptr version last it will be preferred.
> So the way around this is to do as you originally said, wrap the add
> function to handle std::auto_ptr and hide the raw pointer interface
> when exposing it to Python.
>
> PR> The only issue that I need clarification is on how Pyste
> PR> should do handle this. When use_auto_ptr(Obj) is specified
> PR> should it register both the to_python converter and also pass
> PR> the HeldType as auto_ptr or should the HeldType parameter be
> PR> handled by something like handle_with_auto_ptr(Obj)? I think
> PR> the latter is better but am not quite sure. I can submit a
> PR> patch to handle this if this its OK.
>
> I clearly need to add a separate option because when I specify the
> HeldType a converter from std::auto_ptr seems already registeded for
> Obj.
I'm not sure why that would be.
> Specifically I got the following error when I used use_auto_ptr
^^^^^^^^^^^^
what's that?
> and also passed a HeldType parameter:
>
> RuntimeError: trying to register to_python_converter for a type
> which already has a registered to_python_converter
>
> I'll submit a patch to support using auto_ptr or shared_ptr as a
> HeldType sometime tommorow.
--
Dave Abrahams
Boost Consulting
www.boost-consulting.com
More information about the Cplusplus-sig
mailing list