pybind11_tests.cpp 2.96 KB
Newer Older
Wenzel Jakob's avatar
Wenzel Jakob committed
1
/*
Dean Moldovan's avatar
Dean Moldovan committed
2
    tests/pybind11_tests.cpp -- pybind example plugin
Wenzel Jakob's avatar
Wenzel Jakob committed
3

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

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

Dean Moldovan's avatar
Dean Moldovan committed
10
11
#include "pybind11_tests.h"
#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_ex_numpy_dtypes(py::module &);
33
void init_ex_enum(py::module &);
34
void init_issues(py::module &);
Wenzel Jakob's avatar
Wenzel Jakob committed
35

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

40
41
42
43
44
45
46
47
48
49
50
51
52
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)
        ;
}

Dean Moldovan's avatar
Dean Moldovan committed
53
54
PYBIND11_PLUGIN(pybind11_tests) {
    py::module m("pybind11_tests", "pybind example plugin");
Wenzel Jakob's avatar
Wenzel Jakob committed
55

56
57
    bind_ConstructorStats(m);

58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
    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);
77
    init_ex_numpy_dtypes(m);
78
    init_ex_enum(m);
79
    init_issues(m);
Wenzel Jakob's avatar
Wenzel Jakob committed
80

Dean Moldovan's avatar
Dean Moldovan committed
81
82
83
84
85
86
#if defined(PYBIND11_TEST_EIGEN)
    init_eigen(m);
    m.attr("have_eigen") = py::cast(true);
#else
    m.attr("have_eigen") = py::cast(false);
#endif
87

Wenzel Jakob's avatar
Wenzel Jakob committed
88
89
    return m.ptr();
}