Boost logo

Boost :

Subject: Re: [boost] [python] Expose a struct with a std::vector<std::string> member
From: Tiago Coutinho (coutinhotiago_at_[hidden])
Date: 2009-02-04 11:22:08


Could you give me an example?

I tried something like:

#include <vector>
#include <string>
#include <boost/python.hpp>
#include <boost/python/suite/indexing/vector_indexing_suite.hpp>

struct ExampleStruct
{
    std::vector<std::string> elements;
};

class_<A>("A", init<>())
    .def_readonly("elements",
vector_indexing_suite<std::vector<std::string> >())
;

Of course the above code is wrong. My question is how should I
initialize the vector_indexing_suite.

Thank you very much in advance

Cheers
Tiago

On Tue, Feb 3, 2009 at 6:31 PM, Stefan Seefeld <seefeld_at_[hidden]> wrote:
> Tiago Coutinho wrote:
>>
>> Hello all,
>>
>> I am new to boost::python. I have access to a C++ library which I
>> want
>> to expose to python using boost. One of the structs I want to
>> expose is
>> something like:
>>
>> #include <vector>
>> struct ExampleStruct
>> {
>> std::vector<std::string> elements;
>> };
>>
>> I would like to expose this class but I like to avoid having to
>> write
>> a wrapper that would inefficiently have to copy the vector contents
>> to a
>> boost::python::list member.
>> Is there a way to do this?
>>
>
> You may use the indexing-suite to expose the above as a container (with
> iterators etc.). However, note that strings in Python are immutable, so you
> can't modify them in-place.
>
> Regards,
> Stefan
>
> --
>
> ...ich hab' noch einen Koffer in Berlin...
>
> _______________________________________________
> Unsubscribe & other changes:
> http://lists.boost.org/mailman/listinfo.cgi/boost
>


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk