inout transformer


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.


#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 ){
    return bp::object( hw );

    bp::def( "hello_world", &hello_world_a3478182294a057b61508c30b1361318 );