[C++-sig] [Boost.python] Converting python file object to std::istream.

Dan d_zakaib at yahoo.com
Mon Nov 6 03:53:12 CET 2006


Yes, that's what I figured - I'll give it a shot. Though I think you 
meant the read method in my particular case; since I want an input 
stream object.

thanks,
Dan

Stefan Seefeld wrote:
> 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
> 




More information about the Cplusplus-sig mailing list