Boost Python

Diane Trout

2006 March 23 - SoCal Piggies

Boost Python

Pyrex

Swig

C++, The Problem Language

Swigs solution

Boost Python

Hello Example

//hello.cpp
#include <boost/python.hpp>
using namespace boost::python;
char const* greet() {
  return "hi there";
}
BOOST_PYTHON_MODULE(hello) {
  def("greet", greet);
}
// g++ -o hello.so -shared -I/usr/include/python2.3 \\
// -lpython2.3 -lboost_python hello.cpp

Simple Class

#include <string>
struct World {
  void set(std::string msg) { this->msg = msg; }
  std::string greet() { return msg; }
  std::string msg; // not accessible
};
#include <boost/python.hpp>
using namespace boost::python;
BOOST_PYTHON_MODULE(simple) {
    class_<World>("World")
      .def("greet", &World::greet)
      .def("set", &World::set) ;
}
// g++ -shared -I/usr/include/python2.3 -lpython2.3 -lboost_python \\
// -o simple.so simple.cpp

Property

#include <string>
struct World {
  void set(std::string msg) { this->msg = msg; }
  std::string greet() { return msg; }
  std::string msg; // not accessible
};
#include <boost/python.hpp>
using namespace boost::python;
BOOST_PYTHON_MODULE(simple) {
    class_<World>("World")
      .def("greet", &World::greet)
      .add_property("msg", &World::greet, &World::set) ;
}
// g++ -shared -I/usr/include/python2.3 -lpython2.3 -lboost_python \\
// -o property.so property.cpp