[C++-sig] Keyed properties? (original) (raw)

Matthew Scouten (TT) Matthew.Scouten at tradingtechnologies.com
Tue Aug 4 15:44:12 CEST 2009


You can solve it pretty much the same way. Expose a function *etitem.

It would look something like this:

void set(thingy_t thingy&, int index, value_type& val){...} value_type get(const thingy_t thingy&, int index ){...}

And then you export them in the class_ exposer:

class_< thingy_t >("thingy_t") .def("getstate", &get) .def("setstate", &set)

One wrinkle to watch out for: remember not to name the c++ functions starting with '__' Initial double underscores are reserved for the compiler.

-----Original Message----- From: cplusplus-sig-bounces+matthew.scouten=tradingtechnologies.com at python.org [mailto:cplusplus-sig-bounces+matthew.scouten=tradingtechnologies.com at py thon.org] On Behalf Of Jakob van Santen Sent: Tuesday, August 04, 2009 8:23 AM To: cplusplus-sig at python.org Subject: [C++-sig] Keyed properties?

Hello,

I'm in the process of hiding the unnecessarily verbose parts of a C++
interface behind Python properties, and I've run in to a slight
problem. We have a bunch of classes that expose private std::vectors
via Get(int index) and Set(int index, value_type& val) methods.
Ideally, I'd like to replace

thingy.GetATWDGain(1) thingy.SetATWDGain(1, 254.5)

with

thingy.atwd_gain[1] thingy.atwd_gain[1] = 254.5

I know how I would solve this in pure Python (something similar to
this: http://code.activestate.com/recipes/440514/), but I'm wondering
if there's a clever way to do this in Boost.Python without messing
around with the library itself. If anyone has done this already, I'd
be curious to know how.

Cheers, Jakob van Santen


Cplusplus-sig mailing list Cplusplus-sig at python.org http://mail.python.org/mailman/listinfo/cplusplus-sig



More information about the Cplusplus-sig mailing list