Thank you, I'm happy you liked my library. And I thank you also for the suggestion on conversion. I did not thought to that solution ... I'll implement it as soon as I will have the time.
Thank you very much. Michele 2010/4/3 troy d. straszheim <t...@resophonic.com>: > Michele De Stefano wrote: >> >> there is a much easier way to treat a FILE* as a C++ stream. The easy >> way is to use my open source library (mds-utils, >> http://code.google.com/p/mds-utils/). >> > > Elegant use of boost::iostreams if I may say so. I've been looking for > some usecases for some boost.python modifications I've been playing with > so I tried incorporating your FileObj. Seems to work well. One can > wrap a function that takes a std::ostream& like this: > > using mds_utils::python::FileObj; > > // c++ function we're wrapping > void sayhello(std::ostream& os) > { > os << "*** hello ***\n"; > } > > // > // function object that converts object& and implements > // result_of protocol > // > struct conv { > typedef FileObj result_type; > > result_type operator()(object& obj) > { > return FileObj(obj); > } > }; > > BOOST_PYTHON_MODULE(mod) > { > def("sayhello", as<void(conv(object&))>( &sayhello )); > // arg converter ^^^^^^^^^^^^^ > }; > > In this case python sees "sayhello" as taking a bp::object. > > The as<> might need some clarification.... It takes a function type > argument. Above, the argument is the type of a function that returns void, > which takes one argument, which is a function that returns conv and takes > one argument of type object&. In general, for a unary function 'fn' > returning type R it is: > > as<R(T(U))>(&fn) > > where T(U) means "convert the python object to C++ type U, then create a > temporary object T and use it to create result_of<T(U)>::type, then convert > that type to R and return to python". This is a little boost::proto-ish. > Maybe also a little like a C++1x concept map. You could also provide a > generic 'conv' struct, I skipped this so as not to confuse things. > > -t > > > _______________________________________________ > Cplusplus-sig mailing list > Cplusplus-sig@python.org > http://mail.python.org/mailman/listinfo/cplusplus-sig > -- Michele De Stefano http://www.linkedin.com/in/micdestefano http://code.google.com/p/mds-utils http://xoomer.virgilio.it/michele_de_stefano _______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig