[C++-sig] [Boost.python] Converting python file object to std::istream.
Stefan Seefeld
seefeld at sympatico.ca
Mon Nov 6 03:17:24 CET 2006
Dan wrote:
> I am exposing a C++ class to python that takes a reference to a
> std::istream object and operates on it. It looks something like this:
>
> class StreamReader
> {
> public:
> StreamReader(std::istream& strm);
>
> private:
> std::istream& strm_;
> }
>
> I would like to expose this class to python allowing a python client to
> pass in any python file type object (regular file object, StringIO
> object, stdin, etc.), as a C++ client would be able to pass any
> std::istream derived object.
>
> Now it seems to me that someone must have encountered this problem
> before, but I haven't seen any references as to how to make this work.
>
> Any ideas on the best way to proceed would be appreciated.
It seems to me the correct way to do this is to implement the streambuf
interface in terms of a boost::python::object, i.e. in which the xsputn()
method is implemented as calling the python object's 'write' method.
I haven't seen any such implementation yet.
Regards,
Stefan
--
...ich hab' noch einen Koffer in Berlin...
More information about the Cplusplus-sig
mailing list