Boost logo

Boost :

From: Dan Nuffer (dnuffer_at_[hidden])
Date: 2002-11-08 01:37:52

David Abrahams wrote:
> Dan Nuffer <dnuffer_at_[hidden]> writes:
>>6. How can I get python indexing and slicing to work on OW_String? I
>>couldn't see any information about this in the docs.
> The same way you do it in Python: supply a "__getitem__" and a
> "__getslice__" method.

Thanks, this works great!

>>7. Do I need to expose the copy constructor and assignment operator
>>via Boost.Python?
> You don't need assignment at all, and the copy constructor is exposed
> automatically unless you have specified that your class is
> noncopyable. You may want to build a copy() method, as Ralf suggests
> we ought to do automatically in
> (I'm now
> beginning to think we should just generate copy() automatically).

I'm not quite sure what I'm doing here. I couldn't find an example that
does this. This doesn't compile:
.def("copy", init<const OW_String&>())

This doesn't work:

OW_String OW_String_copy(const OW_String& s)
     return s;

.def("copy", &OW_String_copy)

>>> t = copy.deepcopy(s)
Traceback (most recent call last):
   File "<stdin>", line 1, in ?
   File "/usr/local/lib/python2.2/", line 182, in deepcopy
     y = _reconstruct(x, reductor(), 1, memo)
   File "/usr/local/lib/python2.2/", line 305, in _reconstruct
     args = deepcopy(args, memo)
   File "/usr/local/lib/python2.2/", line 186, in deepcopy
     y = copierfunction(x, memo)
   File "/usr/local/lib/python2.2/", line 226, in _deepcopy_tuple
     y.append(deepcopy(a, memo))
   File "/usr/local/lib/python2.2/", line 182, in deepcopy
     y = _reconstruct(x, reductor(), 1, memo)
   File "/usr/local/lib/python2.2/", line 57, in _reduce
     raise TypeError, "can't pickle %s objects" % base.__name__
TypeError: can't pickle instance objects

How am I supposed to do this?

Dan Nuffer

Boost list run by bdawes at, gregod at, cpdaniel at, john at