inout
transformer¶
Definition¶
inout
transformer is a combination of input and output transformers.
It removes a “reference” type from the function argument and then adds the
“returned”, by the original function, value to the return statement of the
function-wrapper.
inout
transformer takes as argument name or index of the original function
argument. The argument should have “reference” type. Support for “pointer” type
will be added pretty soon.
Example¶
#include <string>
inline void hello_world( std::string& hw ){
hw = "hello world!";
}
Lets say that you need to expose hello_world
function. As you know
std::string
is mapped to Python string, which is immutable type, so you
have to create small wrapper for the function. The following Py++ code does it for you:
from pyplusplus import module_builder from pyplusplus import function_transformers as FT mb = module_builder.module_builder_t( ... ) hw = mb.mem_fun( 'hello_world' ) hw.add_transformation( FT.inout(0) )
What you see below is the relevant pieces of generated code:
namespace bp = boost::python; static boost::python::object hello_world_a3478182294a057b61508c30b1361318( ::std::string hw ){ ::hello_world(hw); return bp::object( hw ); } BOOST_PYTHON_MODULE(...){ ... bp::def( "hello_world", &hello_world_a3478182294a057b61508c30b1361318 ); }