On 01/23/2013 12:34 AM, Michael Wild wrote:
On 01/22/2013 11:27 PM, Jim Bosch wrote:
On 01/22/2013 04:18 PM, Michael Wild wrote:
Dear all
I have defined a to_python converter following
http://misspent.wordpress.com/2009/09/27/how-to-write-boost-python-converters.
Everything is fine and dandy, however what bugs me is having to specify
a return_value_policy<return_by_value>() for every make_getter call.
Looking through the sources it seems that I should be able to tell
make_getter what the default policy should be by somehow specializing
default_member_getter_policy and default_datum_getter_policy. However,
is this the right way to go, or should I attack the problem at a lower
level, e.g. by specializing default_getter_by_ref? Or should I directly
specialize make_getter?
Could you provide a little more information about what you're trying to
do and what the error is? I'm surprised that you're having to specify a
call-policy manually for return-by-value; I've used by-value to_python
converters plenty of times without ever having to do that.
Jim
I don't have to do it for functions that return by value, only for
static members that I want to wrap in a static property.
I put the example here: https://gist.github.com/4602341
Ah, that makes sense. Well, if Giuseppe's idea of just converting the
object once doesn't work for you, I'd recommend not specializing any
boost::python internals, and just writing a convenience that calls
make_getter the way you want:
template <typename D>
bp::object my_make_getter(D const & d) {
return bp::make_getter(
d,
bp::return_value_policy<bp::return_by_value>()
);
}
HTH!
Jim
_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig