8 Ağustos 2016 Pazartesi

boost python

Giriş
Şu satırları dahil ederiz.
#include <boost/python.hpp>
#include <Python.h>
Rahat kullanmak için şu satırı dahil ederiz.
using namespace boost::python;
class_ Sınıfı
python'dan C++ Kullanmak yazısına taşıdım.

stl_iterator Sınıfı
Şu satırı dahil ederiz.
#include <boost/python/stl_iterator.hpp>
python tarafından döndürülen bir liste olsun. Şöyle dolaşırız.
list records = call_method<list>(...);
stl_input_iterator<tuple> end;
for (stl_input_iterator<tuple> itr(records); itr != end;++itr)
{
  auto record = *itr;
  std::string tick = call_method<std::string>(record.ptr(), "__getitem__", 0);
  ...
}
Free Style metodlar
exec metodu
Şöyle yaparız.
namespace py = boost::python;

int main()
{
  // Must be called before any boost::python functions
  Py_Initialize();
  // import the main module
  py::object main_module = py::import("__main__");
  // load the dictionary object out of the main module
  py::object main_namespace = main_module.attr("__dict__");
  // run simple code within the main namespace using the boost::python::exec 
  //  function
  py::exec("print ('Hello, world')", main_namespace);
  // any valid Python will execute
  py::exec("print ('Hello, world')[3:5]", main_namespace);
}


Hiç yorum yok:

Yorum Gönder