Giriş
Şu satırı dahil ederiz.
Şu satırı dahil ederiz.
default constructor
Template parametresi C++ sınıfının ismidir. Tırnak içinde ise Python'da kullanılan isim belirtilir.Şöyle yaparız.
Eğer A sınıfı kopyalanamazsa şöyle yaparız.
Elimizde bir typedef olsun
Elimizde parametre alan şöyle bir sınıf olsun.
Şöyle yaparız.
Şu satırı dahil ederiz.
Şöyle tanımlarız.
Elemanlara erişmek için şöyle yaparız.
Şu satırı dahil ederiz.
#include <boost/python.hpp>
Kolay kullanım için şu satırları dahil ederiz.namespace bp = boost::python;
namespace bpn = boost::python::numeric;
BOOST_PYTHON_MODULEŞu satırı dahil ederiz.
#include <boost/python/module.hpp>
Şöyle yaparız.
BOOST_PYTHON_MODULE (libdtlinux) {
...
}
class_ Sınıfıdefault constructor
Template parametresi C++ sınıfının ismidir. Tırnak içinde ise Python'da kullanılan isim belirtilir.Şöyle yaparız.
BOOST_PYTHON_MODULE (libdtlinux) {
using namespace boost::python;
class_<DtSearch>("DtSearch")
...;
}
Şöyle de yapılabilir.class_<A>("A", init<>())
...
;
constructor + noncopyableEğer A sınıfı kopyalanamazsa şöyle yaparız.
class_<A, noncopyable>("A", init<>())
...
;
constructor + Held TypeElimizde bir typedef olsun
class MyFuture {
public:
virtual bool isDone() = 0;
virtual const std::string& get() = 0;
virtual void onDone(MyCallBack& callBack) = 0;
virtual ~MyFuture() { /* empty */ }
};
typedef boost::shared_ptr<MyFuture> MyFuturePtr;
Şöyle yaparız.class_<MyFuture, boost::shared_ptr<MyFuture>, boost::noncopyable>("MyFuture")
parameter constructorElimizde parametre alan şöyle bir sınıf olsun.
MyClass
{
T val;
public:
MyClass(const T& tVal) : val(tVal) {}
T getVal() { return val; }
void setVal(const T& tVal) { val = tVal; }
};
Python'daki isimden sonra constructor'ın parametre aldığını belirtmek için init metodu kullanılır. Şöyle yaparız.template <class T>
void bind_MyClass(const char* name) {
class_<MyClass<T>>(name, init<T const&>())
...
;
}
Şöyle yaparız.bind_MyClass<float>("MyClassFloat");
bind_MyClass<double>("MyClassDouble");
add_property metoduŞöyle yaparız.
template <class T>
void bind_MyClass(const char* name) {
class_<...>(...,...)
.add_property("val", &MyClass<T>::getVal, &MyClass<T>::setVal);
;
}
def metoduŞu satırı dahil ederiz.
#include <boost/python/def.hpp>
Şöyle yaparız.BOOST_PYTHON_MODULE (libdtlinux) {
using namespace boost::python;
class_<...>("...")
.def("DoSearch", &DtSearch::DoSearch)
.def("CreateIndex", &DtSearch::CreateIndex);
}
list SınıfıŞöyle tanımlarız.
boost::python::list<boost::python::tuple>
tuple SınıfıElemanlara erişmek için şöyle yaparız.
boost::python::extract<int>( )
Hiç yorum yok:
Yorum Gönder