-
Notifications
You must be signed in to change notification settings - Fork 29
/
Copy pathlogging.cpp
47 lines (42 loc) · 1.67 KB
/
logging.cpp
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
// SPDX-License-Identifier: LGPL-3.0-or-later
#include "logging.hpp"
#include <jupedsim/jupedsim.h>
#include <pybind11/functional.h>
#include <pybind11/pybind11.h>
namespace py = pybind11;
LogCallbackOwner& LogCallbackOwner::Instance()
{
static LogCallbackOwner instance;
return instance;
}
void init_logging(py::module_& m)
{
auto atexit = py::module_::import("atexit");
atexit.attr("register")(py::cpp_function([]() {
auto& owner = LogCallbackOwner::Instance();
owner.debug = {};
owner.info = {};
owner.warning = {};
owner.error = {};
}));
m.def("set_debug_callback", [](LogCallbackOwner::LogCallback callback) {
LogCallbackOwner::Instance().debug = callback;
JPS_Logging_SetDebugCallback(
[](const char* msg, void*) { LogCallbackOwner::Instance().debug(msg); }, nullptr);
});
m.def("set_info_callback", [](LogCallbackOwner::LogCallback callback) {
LogCallbackOwner::Instance().info = callback;
JPS_Logging_SetInfoCallback(
[](const char* msg, void*) { LogCallbackOwner::Instance().info(msg); }, nullptr);
});
m.def("set_warning_callback", [](LogCallbackOwner::LogCallback callback) {
LogCallbackOwner::Instance().warning = callback;
JPS_Logging_SetWarningCallback(
[](const char* msg, void*) { LogCallbackOwner::Instance().warning(msg); }, nullptr);
});
m.def("set_error_callback", [](LogCallbackOwner::LogCallback callback) {
LogCallbackOwner::Instance().error = callback;
JPS_Logging_SetErrorCallback(
[](const char* msg, void*) { LogCallbackOwner::Instance().error(msg); }, nullptr);
});
}