From b25a939e2d8b045c083caf3264c4e5aac1cf88fb Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Tue, 15 Apr 2025 15:51:40 +0200 Subject: Better logging function Now it is possible to provide some data together with the logging function. This is useful for example in C++, where I can now provide an arbitrary callable object as data, and a simple wrapper function that call the callable object as logging function. --- cpp/examples/solve_h48h3k2.cpp | 2 +- cpp/nissy.cpp | 7 +++++-- cpp/nissy.h | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) (limited to 'cpp') diff --git a/cpp/examples/solve_h48h3k2.cpp b/cpp/examples/solve_h48h3k2.cpp index 454d6dc..7f06376 100644 --- a/cpp/examples/solve_h48h3k2.cpp +++ b/cpp/examples/solve_h48h3k2.cpp @@ -8,7 +8,7 @@ int main() { // Get verbose output - nissy::set_logger([](const char* s) { std::cout << s; }); + nissy::set_logger([](const char* s, void *u) { std::cout << s; }, NULL); // Get the scramble from the user std::cout << "Enter scramble: "; diff --git a/cpp/nissy.cpp b/cpp/nissy.cpp index 2a52ab1..944944b 100644 --- a/cpp/nissy.cpp +++ b/cpp/nissy.cpp @@ -24,7 +24,7 @@ extern "C" { unsigned, unsigned, int, int, unsigned long long, const char *, unsigned, char *, long long *); long long nissy_countmoves(const char *); - long long nissy_setlogger(void (*)(const char *)); + long long nissy_setlogger(void (*)(const char *, void *), void *); } namespace nissy { @@ -227,5 +227,8 @@ namespace nissy { return error{err}; } - void set_logger(void (*log)(const char *)) { nissy_setlogger(log); } + void set_logger(void (*log)(const char *, void *), void *data) + { + nissy_setlogger(log, data); + } } diff --git a/cpp/nissy.h b/cpp/nissy.h index ff74f12..db8ba5f 100644 --- a/cpp/nissy.h +++ b/cpp/nissy.h @@ -100,7 +100,7 @@ namespace nissy { }; error count_moves(const std::string&); - void set_logger(void (*)(const char*)); + void set_logger(void (*)(const char *, void *), void *); } #endif -- cgit v1.3