example.cpp 2.74 KB
Newer Older
Wenzel Jakob's avatar
Wenzel Jakob committed
1
2
3
/*
    example/example.cpp -- pybind example plugin

4
    Copyright (c) 2016 Wenzel Jakob <wenzel.jakob@epfl.ch>
Wenzel Jakob's avatar
Wenzel Jakob committed
5
6
7
8
9
10

    All rights reserved. Use of this source code is governed by a
    BSD-style license that can be found in the LICENSE file.
*/

#include "example.h"
11
#include "constructor-stats.h"
Wenzel Jakob's avatar
Wenzel Jakob committed
12

13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
void init_ex_methods_and_attributes(py::module &);
void init_ex_python_types(py::module &);
void init_ex_operator_overloading(py::module &);
void init_ex_constants_and_functions(py::module &);
void init_ex_callbacks(py::module &);
void init_ex_sequences_and_iterators(py::module &);
void init_ex_buffers(py::module &);
void init_ex_smart_ptr(py::module &);
void init_ex_modules(py::module &);
void init_ex_numpy_vectorize(py::module &);
void init_ex_arg_keywords_and_defaults(py::module &);
void init_ex_virtual_functions(py::module &);
void init_ex_keep_alive(py::module &);
void init_ex_opaque_types(py::module &);
void init_ex_pickling(py::module &);
void init_ex_inheritance(py::module &);
void init_ex_stl_binder_vector(py::module &);
void init_ex_eval(py::module &);
void init_ex_custom_exceptions(py::module &);
32
void init_issues(py::module &);
Wenzel Jakob's avatar
Wenzel Jakob committed
33

34
35
36
37
#if defined(PYBIND11_TEST_EIGEN)
    void init_eigen(py::module &);
#endif

38
39
40
41
42
43
44
45
46
47
48
49
50
void bind_ConstructorStats(py::module &m) {
    py::class_<ConstructorStats>(m, "ConstructorStats")
        .def("alive", &ConstructorStats::alive)
        .def("values", &ConstructorStats::values)
        .def_readwrite("default_constructions", &ConstructorStats::default_constructions)
        .def_readwrite("copy_assignments", &ConstructorStats::copy_assignments)
        .def_readwrite("move_assignments", &ConstructorStats::move_assignments)
        .def_readwrite("copy_constructions", &ConstructorStats::copy_constructions)
        .def_readwrite("move_constructions", &ConstructorStats::move_constructions)
        .def_static("get", (ConstructorStats &(*)(py::object)) &ConstructorStats::get, py::return_value_policy::reference_internal)
        ;
}

51
PYBIND11_PLUGIN(example) {
Wenzel Jakob's avatar
Wenzel Jakob committed
52
53
    py::module m("example", "pybind example plugin");

54
55
    bind_ConstructorStats(m);

56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
    init_ex_methods_and_attributes(m);
    init_ex_python_types(m);
    init_ex_operator_overloading(m);
    init_ex_constants_and_functions(m);
    init_ex_callbacks(m);
    init_ex_sequences_and_iterators(m);
    init_ex_buffers(m);
    init_ex_smart_ptr(m);
    init_ex_modules(m);
    init_ex_numpy_vectorize(m);
    init_ex_arg_keywords_and_defaults(m);
    init_ex_virtual_functions(m);
    init_ex_keep_alive(m);
    init_ex_opaque_types(m);
    init_ex_pickling(m);
    init_ex_inheritance(m);
    init_ex_stl_binder_vector(m);
    init_ex_eval(m);
    init_ex_custom_exceptions(m);
75
    init_issues(m);
Wenzel Jakob's avatar
Wenzel Jakob committed
76

77
78
79
80
    #if defined(PYBIND11_TEST_EIGEN)
        init_eigen(m);
    #endif

Wenzel Jakob's avatar
Wenzel Jakob committed
81
82
    return m.ptr();
}