File: testapi_boost.cc

package info (click to toggle)
pybindgen 0.20.0%2Bdfsg1-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,932 kB
  • sloc: python: 15,981; cpp: 1,889; ansic: 617; makefile: 86; sh: 4
file content (47 lines) | stat: -rw-r--r-- 1,159 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// -*- Mode: C++; c-file-style: "stroustrup"; indent-tabs-mode:nil; -*-
#include "testapi.h"

#include <boost/python.hpp>

using namespace boost::python;

void (Multiplier::*factor1) () = &Multiplier::SetFactor;
void (Multiplier::*factor2) (double) = &Multiplier::SetFactor;

struct MultiplierWrap : Multiplier, wrapper<Multiplier>
{
    MultiplierWrap () : Multiplier ()
        {
        }
    MultiplierWrap (double factor) : Multiplier (factor)  
        {
        }
    
    double Multiply (double value) const
    {
        return this->get_override("Multiply") (value);
    }

    double default_Multiply (double value) const
    {
        return this->Multiplier::Multiply (value);
    }

};

BOOST_PYTHON_MODULE(testapi_boost)
{
    def("func1", func1);
    def("func2", func2);
    def("call_virtual_from_cpp", call_virtual_from_cpp);

    class_<MultiplierWrap, boost::noncopyable>("Multiplier")
        .def(init<double>())
        .def("GetFactor", &Multiplier::GetFactor) 
        .def("SetFactor", factor1)
        .def("SetFactor", factor2)
        .def("Multiply", &Multiplier::Multiply, &MultiplierWrap::default_Multiply)
        ;
    
}