On 21.03.2010 06:07, Roman Yakovenko wrote:
On Sat, Mar 20, 2010 at 11:10 PM, Maciej Sitarz<macieksit...@wp.pl>  wrote:
Just one more comment...

The constructor takes reference to vector<JobPropertyWrapper>, so I suspect
that maybe it will be filled there by some other code I don't have? So I
don't need to fill the vector, just to create it (I will ask the developers)

Right, you'd better talk with them. Boost.Python allows to export
libraries without touching them, but sometimes a small library change
could make you task easier.

Yes, it works, because there's no code generated for std::vector<item_t>
Try adding this function to item_t class:
void fund( std::vector<item_t>& v) { }

And then it doesn't compile successfully.

When I comment this line from the generated code:
vector_less__item_t__greater__exposer.def( bp::indexing::vector_suite< std::vector< item_t > >() ); it compiles and appears to work, but I can't figure out how to pass a list/vector to that function:


import test
item = test.item_t( 10 )
vect = [test.item_t(1), test.item_t(2)]
item.fund(vect)
---------------------------------------------------------------------------
ArgumentError                             Traceback (most recent call last)

/home/macieks/error_examples/protected_assign/<ipython console>

ArgumentError: Python argument types in
    item_t.fund(item_t, list)
did not match C++ signature:
fund(item_t {lvalue}, std::vector<item_t, std::allocator<item_t> > {lvalue} v)

In [5]: vect
Out[5]:
[<test.item_t object at 0x7f8f38899e10>,
 <test.item_t object at 0x7f8f38899d60>]

In [6]: vect?
Type:           list
Base Class:     <type 'list'>
String Form: [<test.item_t object at 0x7f8f38899e10>, <test.item_t object at 0x7f8f38899d60>]
Namespace:      Interactive
Length:         2
Docstring:
    list() -> new list
    list(sequence) -> new list initialized from sequence's items

I'm not sure, but that should work, shouldn't it?

--
Maciek Sitarz
_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig

Reply via email to