I don't know if that helps the OP, but it's certainly an improvement over mine!
Thanks.
-- Early
On Mon, May 11, 2009 at 2:17 PM, Early Ehlinger <earlye@gmail.com> wrote:It's probably fairly straightforward to do this using Boost.Iostreams,
> Basically, you need to create a streambuf class that calls
> PySys_WriteStdout() inside your_streambuf_class::sync().
by creating a model of Sink:
include <Python.h>
#include <algorithm> // min
#include <iosfwd> // streamsize
#include <boost/iostreams/categories.hpp> // sink_tag
#include <boost/iostreams/stream.hpp> // stream
#include <boost/format.hpp> // format
class pysys_stdout_sink {
public:
typedef char char_type;
typedef boost::iostreams::sink_tag category;
std::streamsize write( const char* s, std::streamsize n ) {
// PySys_WriteStdout truncates to 1000 chars
static const std::streamsize MAXSIZE = 1000;
std::streamsize written = std::min( n, MAXSIZE );
PySys_WriteStdout( (boost::format("%%.%1%s") %
written).str().c_str(), s );
return written;
}
};
boost::iostreams::stream<pysys_stdout_sink> pysys_stdout;
int main()
{
Py_Initialize();
pysys_stdout << "Hello, Python world!\n";
}
HTH,
Christopher
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users